一、创建Git仓库
版本控制就是为了管理代码,代码就要放在仓库(Repo)中。
在Git中创建仓库有如下两种方式:
- 自己创建一个仓库;
- 创建另一个仓库的clone。
1.1、Git init
通过git init指令,可以把一个目录快速设置成Git的代码仓库
$ cd F:/GitTest
huangxiaolei@huangxiaolei MINGW64 /f/GitTest
$ git init
Initialized empty Git repository in F:/GitTest/.git/
huangxiaolei@huangxiaolei MINGW64 /f/GitTest (master)
通过上面的指令就把一个普通的文件目录创建成了一个Git代码仓库。在创建成功后,该目录下回生成一个.git隐藏文件夹。而在终端中,文件夹路径名的后面会识别出文件夹的Git分支名。
1.2、Git clone
Git clone用于clone一个远程仓库到本地。
二、 提交修改
创建好代码仓库后就可以进行版本控制了。每开发完一定的功能后,就需要把完成的代码提交到代码仓库中,进行版本的一次提交。
2.1、add&&commit
创建一个README文件,并通过git status
指令查看代码仓库的状态变化。
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
README
nothing added to commit but untracked files present (use "git add" to track)
使用git add <file>
添加版本控制
$ git add README
将add后的文件通过git commit
指令提交到代码仓库,完成一次版本的记录。(-m参数指定了提交的注释)
$ git commit -m "添加README"
[master (root-commit) 4269b25] 添加README
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README
Git还提供了一个git shortlog的指令,这条指令可以根据提交者的名字进行分组,显示每个开发者的所有提交commit记录。
$ git shortlog
huangxiaolei (1):
添加README
2.2、追加修改
当提交了一个commit后,如果发现该commit有错,可以随时对这个commit进行修改。
huangxiaolei@huangxiaolei MINGW64 /f/GitTest (master)
$ touch test (创建test文件)
huangxiaolei@huangxiaolei MINGW64 /f/GitTest (master)
$ git add test (添加版本控制)
huangxiaolei@huangxiaolei MINGW64 /f/GitTest (master)
$ git commit -m "test1" (提交)
[master 426d1c0] test1
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test
huangxiaolei@huangxiaolei MINGW64 /f/GitTest (master)
$ subl test (修改文件)
bash: subl: command not found
huangxiaolei@huangxiaolei MINGW64 /f/GitTest (master)
$ git add test (添加版本控制)
huangxiaolei@huangxiaolei MINGW64 /f/GitTest (master)
$ git commit --amend -m "add test2" (追加修改)
[master 4822a34] add test2
Date: Fri Oct 19 10:39:56 2018 +0800
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test
通过这种方式可以修改commit,而不是通过新的commit来修正前一个错误的commit。
2.3、查看代码仓库状态
使用git status指令查看当前代码仓库的版本修改,代码如下所示。
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: test
no changes added to commit (use "git add" and/or "git commit -a")
通过git diff指令查看发生变化文件的具体变化
$ git diff test
diff --git a/test b/test
index e69de29..665e610 100644
--- a/test
+++ b/test
@@ -0,0 +1,2 @@
+this is a readme
+
Git显示出了指定文件的具体修改,提示新的文件增加了一行修改。
git diff指令除了比较指定文件的差异,还可以比较提交节点间的差异
2.4、追溯版本历史
在项目中一个仓库通常会有非常多次的add、commit过程,这些过程都会被记录下来作为追溯的证据。
$ git log
commit 4822a34ce85ad150379344f706a4ad2779adde14 (HEAD -> master)
Author: huangxiaolei <18200399036@163.com>
Date: Fri Oct 19 10:39:56 2018 +0800
add test2
commit 4269b258b582e49cc82b5512bc87e70d6b925616
Author: huangxiaolei <18200399036@163.com>
Date: Fri Oct 19 10:32:41 2018 +0800
添加README
每条记录都对应一个commit id。这个id是一个40位的16进制的SHA-1 hash code用来唯一标记一个commit。
通过git blame
指定追溯一个指定文件的历史修改记录。
$ git blame test
00000000 (Not Committed Yet 2018-10-19 10:58:12 +0800 1) this is a readme
00000000 (Not Committed Yet 2018-10-19 10:58:12 +0800 2)
网友评论