Git版本库管理
新建本地仓库
$ mkdir test
$ cd test/
$ git init
已初始化空的 Git 仓库于 /Users/admin/git/test/.git/
执行git init
命令后,Git 会在当前目录下创建一个隐藏的.git
目录,Git 把所有修订信息都放在这唯一的顶层.git
目录里。
将文件添加到版本库中
首先创建一个 HelloGit.txt 文件,内容为“Hello Git",将该文件加入到 Git 版本库中:
git add HelloGit.txt
此时,Git 还只是暂存(staged)了这个文件,这是提交之前的中间步骤。之所以将 add 和 commit 分开,是为了防止频繁的文件修改导致版本库发生频繁变更。
查看版本库状态
可以通过git status
命令查看版本库的当前状态
$ git status
位于分支 master
尚无提交
要提交的变更:
(使用 "git rm --cached <文件>..." 以取消暂存)
新文件: HelloGit.txt
提交
可以通过git commit
命令将变更提交到版本库中,提交时必须指定日志信息和作者:
$ git commit -m "Initial git repostory" --author="Wang Yong <wangyong@example.com>"
[master(根提交) b7357c7] Initial git repostory
1 file changed, 1 insertion(+)
create mode 100644 HelloGit.txt
再次查看 Git 状态:
$ git status
位于分支 master
无文件要提交,干净的工作区
配置提交作者
在对版本库做多次提交之前,应该建立一些基本环境和配置选项。最基本的是,Git 必须知道你的名字和email地址。
git config user.name "John Doe"
git config user.email "john.doe@example.com"
也可以使用 GIT_AUTHOR_NAME
和 GIT_AUTHOR_EMAIL
环境变量告诉 Git 你的姓名和 email 地址。
查看提交记录
可以通过git log
命令查看提交记录:
$ git log
commit b7357c798f5f17cb9ea308592ff6c3fe3609cc39 (HEAD -> master)
Author: Wang Yong <wangyong@example.com>
Date: Fri May 17 22:17:05 2019 +0800
Initial git repostory
如果想查看特定提交的更加详细的信息,可以通过 git show
命令带一个提交码。
$ git show
commit b7357c798f5f17cb9ea308592ff6c3fe3609cc39 (HEAD -> master)
Author: Wang Yong <wangyong@example.com>
Date: Fri May 17 22:17:05 2019 +0800
Initial git repostory
diff --git a/HelloGit.txt b/HelloGit.txt
new file mode 100644
index 0000000..9f4d96d
--- /dev/null
+++ b/HelloGit.txt
@@ -0,0 +1 @@
+Hello Git
另一种查看方式是使用show-branch
,提供当前开发分支简介的单行摘要。
$ git show-branch --more=10
[master] Add test2.txt
[master^] Add test.txt
[master~2] Initial git repostory
参数--more
表示额外10个版本,但因为只有3个版本,所以只显示了三行。如果不指定--more
,则只显示最近一次提交。
查看提交差异
可以通过git diff
加两次提交的ID来查看两次提交的差别。
$ git diff 604b07583a158dae76c2b1370dc65a715fd8f8bd cda17dd8c0b05abfcc2fa6ba5d5998cb6260b9b7
diff --git a/test2.txt b/test2.txt
deleted file mode 100644
index a42051c..0000000
--- a/test2.txt
+++ /dev/null
@@ -1 +0,0 @@
-I Love China!
删除和重命名
删除test2.txt文件:
$ git rm test2.txt
rm 'test2.txt'
$ git commit -m "Remove test2.txt"
[master 36cdfac] Remove test2.txt
1 file changed, 1 deletion(-)
delete mode 100644 test2.txt
将test.txt重命名为test3.txt:
$ git mv test.txt test3.txt
$ git commit -m "Move test.txt to test3.txt"
[master a51db3a] Move test.txt to test3.txt
1 file changed, 0 insertions(+), 0 deletions(-)
rename test.txt => test3.txt (100%)
clone版本库
如果已经存在一个初始版本库,就可以通过git clone
命令创建一个完整的副本。
$ git clone test test_replica
正克隆到 'test_replica'...
完成。
一旦复制了一个版本库,就可以修改这个复制版本、做出新的提交、查看它的日志和历史等。这是一个有着完善历史版本的版本库。
对复制版本库的修改不会影响到原来的版本库