Git常用命令
配置信息
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
注意:--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置。
创建仓库
$ git init
添加文件到仓库
$ git add <file>
$ git commit -m <message>
例如提交readme.txt
文件可以这样做:
$ git add readme.txt
$ git commit -m "第一次提交"
注意:git add
可反复多次使用,添加多个文件,到时候可以直接git commit
一次性提交
查看仓库当前状态
$ git status
查看文件的改动情况
$ git diff 是只比较比较工作区和暂存区(最后一次add)的区别
$ git diff --cached 是只比较暂存区和版本库的区别
$ git diff HEAD -- filename 是只比较工作区和版本库(最后一次commit)的区别
简单理解:
工作区:存文件的这个仓库(目录)
暂存区:git add
添加到的区域
版本库:git commit
提交到的区域
流程:
工作区修改->git add 添加记录到暂存区->git commit 提交到版本库
查看改动历史记录
git log
命令
示例:
$ git log
commit 1cc9ea2abcc2a1ab7e962e2f399f7cd704ec7d74 (HEAD -> master)
Author: fyypll fyypll@163.com
Date: Mon Jan 28 02:24:51 2019 +0800
修改了test文件的编码为utf-8
commit b94e156795bf0001e0840500905f29b4683b5c07
Author: fyypll fyypll@163.com
Date: Mon Jan 28 02:17:07 2019 +0800
修改了readme文件并且添加了test文件
commit b50eaa62f6281b46c166ccdacd7ef43b8031e0e9
Author: fyypll fyypll@163.com
Date: Mon Jan 28 01:55:26 2019 +0800
第四次修改,增加了学习Git的说明
commit 03b94083fcecd5c715108620358e1d6ea551193d
Author: fyypll fyypll@163.com
Date: Mon Jan 28 01:50:06 2019 +0800
第三次修改
commit 38448a2844d3c00ec37a25044a44d8aff4a8f24b
Author: fyypll fyypll@163.com
Date: Mon Jan 28 01:43:41 2019 +0800
添加了分割线
commit 60e0866f4d780bf735d3854df8243f219eb42050
Author: fyypll fyypll@163.com
Date: Mon Jan 28 01:37:24 2019 +0800
第一次提交
嫌输出信息太多?可以加上--pretty=oneline
参数,显示简略的信息
$ git log --pretty=oneline
1cc9ea2abcc2a1ab7e962e2f399f7cd704ec7d74 (HEAD -> master) 修改了test文件的编码为utf-8
b94e156795bf0001e0840500905f29b4683b5c07 修改了readme文件并且添加了test文件
b50eaa62f6281b46c166ccdacd7ef43b8031e0e9 第四次修改,增加了学习Git的说明
03b94083fcecd5c715108620358e1d6ea551193d 第三次修改
38448a2844d3c00ec37a25044a44d8aff4a8f24b 添加了分割线
60e0866f4d780bf735d3854df8243f219eb42050 第一次提交
显示的1cc9ea2abcc2a1ab7e962e2f399f7cd704ec7d74
这一类东西是commit id
,每次提交都会有一个
版本回退
退回往上第n个版本
$ git reset --hard HEAD~n
退回指定commit id的版本
$ git reset --hard <commit id>
查看提交日志
$ git log
查看所有运行的命令
$ git refolg
退回以前的版本有两个方法
方法一:
比如退回上一个版本就这样
$ git reset --hard HEAD^
在Git中,用HEAD
表示当前版本,上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
方法二:
$ git reset --hard b94e15
这里,b94e15
是修改了readme文件并且添加了test文件
这一次提交的commit id
,是的,我们只需要输入commit id
前面的一部分,Git就会自动找到它。
从新版本退回到旧版本并且已经关闭了命令行窗口,那么再次通过git log
已经无法看到原来最新的版本了,情况如下:
退回旧版本前:
$ git log --pretty=oneline
1cc9ea2abcc2a1ab7e962e2f399f7cd704ec7d74 (HEAD -> master) 修改了test文件的编码为utf-8
b94e156795bf0001e0840500905f29b4683b5c07 修改了readme文件并且添加了test文件
b50eaa62f6281b46c166ccdacd7ef43b8031e0e9 第四次修改,增加了学习Git的说明
03b94083fcecd5c715108620358e1d6ea551193d 第三次修改
38448a2844d3c00ec37a25044a44d8aff4a8f24b 添加了分割线
60e0866f4d780bf735d3854df8243f219eb42050 第一次提交
执行了回退命令且手贱关闭了命令行窗口,然后重开命令行输入git log --pretty=oneline
查看得结果
退回旧版本后:
$ git log --pretty=oneline
b94e156795bf0001e0840500905f29b4683b5c07 (HEAD -> master) 修改了readme文件并且添加了test文件
b50eaa62f6281b46c166ccdacd7ef43b8031e0e9 第四次修改,增加了学习Git的说明
03b94083fcecd5c715108620358e1d6ea551193d 第三次修改
38448a2844d3c00ec37a25044a44d8aff4a8f24b 添加了分割线
60e0866f4d780bf735d3854df8243f219eb42050 第一次提交
完蛋了,修改了test文件的编码为utf-8
这一次最新版本的提交记录果然没了,而且我还没记住它的commit id
,那怎么退回去?
你需要git reflog
命令
$ git reflog
b94e156 (HEAD -> master) HEAD@{0}: reset: moving to b94e15
1cc9ea2 HEAD@{1}: commit: 修改了test文件的编码为utf-8
b94e156 (HEAD -> master) HEAD@{2}: reset: moving to b94e156
60e0866 HEAD@{3}: reset: moving to 60e08
b94e156 (HEAD -> master) HEAD@{4}: commit: 修改了readme文件并且添加了test文件
b50eaa6 HEAD@{5}: reset: moving to b50ea
38448a2 HEAD@{6}: reset: moving to HEAD^^
b50eaa6 HEAD@{7}: reset: moving to b50ea
03b9408 HEAD@{8}: reset: moving to HEAD^
b50eaa6 HEAD@{9}: commit: 第五次修改,增加了学习Git的说明
03b9408 HEAD@{10}: commit: 第三次修改
38448a2 HEAD@{11}: commit: 添加了分割线
60e0866 HEAD@{12}: commit (initial): 第一次上传
这里记录了你执行过的提交命令,ok,找到最新版本的commit id
是1cc9ea2
了,现在,我们又可以回到最新版了
$ git reset --hard 1cc9ea2
HEAD is now at 1cc9ea2 修改了test文件的编码为utf-8
管理修改
如果做如下操作,那么第二次的修改是不会被提交的
第一次修改 -> git add -> 第二次修改 -> git commit
git add
后,做了其它修改,然后再提交也只会提交git add
之前的修改,想把第二次修改提交还要再git add
一次然后提交才行
例如:
第一次修改 -> git add ->第二次修改 -> git commit ->git add ->git commit
或者
先不急着提交,第二次修改后再git add
,然后提交,相当于把两次修改合并了一块儿提交
第一次修改 -> git add -> 第二次修改 -> git add ->git commit
本文系作者 @枫雨 原创发布在枫林幻境站点。未经许可,禁止转载。
暂无评论数据