一、创建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)
学海无涯苦作舟
Android成长录.jpg
Git创建仓库与修改提交