git版本控制命令行说明

git版本控制操作

1.1 打开git命令行

  此操作均是在Windows下进行,有关软件安装,请移步此处※※

  首先鼠标在桌面空白地方右键选择Git Bash here,然后cd到所要进行版本控制的文件夹。另外一种方法比较简单,直接选中目标文件夹,右键文件夹,选择Git Bash here,出现git的命令行界面。如下图:
cmd
这里已经在桌面创建了一个名为git_test的文件夹,文件路径建议全部使用英文,不要出现中文,避免出现不必要的bug。

1.2 新建本地版本库

  在命令行界面输入以下命令

git init

创建成功后出现以下界面
init
打开文件夹,会发现git_test目录下回多出来一个.git的文件夹(默认是隐藏状态,需要设置才可见,但在bash中输入ls -ah命令也可见到),这个文件夹就是Git用来进行管理版本库。千万不要随意修改!!!
  接着在git_test文件夹下建立了一个新的文件cmd_test.txt因为是在Windows下测试,所以此处需要注意不要用自带的记事本编辑文本。因为Windows的记事本会在每个文件的开头添加0xefbbbf(十六进制)的字符,这样会出现很多意外的问题。所以这里是用Notepad++代替记事本打开的,当然也可以在bash中用命令:vim cmd_test.txt打开。
现在开始提交版本:
第一步:输入命令git add cmd_test.txt,把文件添加到仓库,或者使用git add .添加所有文件

git add cmd_test.txt

添加所有文件

git add .

有时候会用到只添加某一类型的文件,如只添加所有的txt格式的文件,类似Linux命令中的操作,命令如下:

git add *.txt

执行上面的命令后,没有任何显示,即表示添加成功

第二步:输入命令git commit -m "描述此次提交的说明"将文件提交到仓库。这里的-m表示此次提交的说明

git commit -m "首次创建仓库"

commit
执行结果如上图:注意这里方括号中的字符:e358c12,这个字符串很重要,后面再提会用到 1 file changed 表示一个文件被改动;2 insertion表示插入了两行内容,此处示例写的是:

git init; 
创建版本库

至此版本仓库的创建和提交操作就结束了。以后每次提交都需要按照此步骤执行,先添加(add操作)文件,再提交(commit操作)到仓库。

1.3 版本管理

1.3.1 查看提交日志

  使用命令git log可查看当前分支的历史提交记录列表

git log

  使用命令git log --follow file可查看当前分支的历史提交记录,例如这里查看文件cmd_test.txt的历史提交信息列表

git log --follow cmd_test.txt

1.3.2 版本跳转

  有时候在修改程序后,程序的的内容发生了很大的变化,但修改用来可以运行的程序又十分复杂。这时版本回退如时光穿梭机一样,可以跳转到任何已经提交的的版本。其命令如下:

git reset --hard [commit]

这里的commit可以是分支名称,也可以是刚才提到的那个字符串,一般填字符串,因为每次提交都会产生不同的字符串。如下图所示,修改文件,添加了两次提交:
add 2 commit
此时用git log查看提交的信息如下:
2 log
这里可以看到,总共提交了三次,每次的commit id是不一样,这就方便跳转到任何版本。比如这时跳转到添加一次提交:

git reset --hard 08228

输入id的前面几位即可,Git会自动找到id,执行结果如下图:
1th commit
这里HEAD可以理解为一个指向当前版本的指针,而id则是地址,每次跳转则是HEAD指向不同的地址位置。这个方法就适用于当我们代码改错了,或者内容发生很大变化,此时想复原以前的程序时,使用此方法就可轻松的实现复原,当然前提要有提交

  如果在退回到第一次提交后,吃个饭回来,发现第二次提交的程序可能只是某个地方的小问题,回去改一下就行,这时怎么办?还是利用Git强大的时空穿梭功能。从当前的第一次提交状态,跳转到第二次提交的状态。此时按照上述步骤先用git log查看提交的信息,执行结果如下:
rst log
发现和上次的日志信息不一样,这里没有第二次提交的日志信息,这时找不到id,没办法跳转。此时可使用git reflog命令查看提交记录

git reflog

执行结果如下:
reflog
这里可以查看每次操作后的情况,也找到第二次提交的id 236ecab,再次利用reset操作再回到第二次提交的状态:

git reset --hard 236ecab

执行结果如下,此时已经回到了第二次提交的状态:
2th

1.4 分支管理

1.4.1 创建、查看分支

  在Git中,master为主分支,当我们每次提交到master后,master分支的线也越来越长。当多人合作开发一个程序时,若都在master里面开发,这个分支会越来越长,而且随着提交次数的增多,版本越来越多,可能会出现找不到哪个是自己提交的版本。对此通过Git的分支功能,再给每个人分配一个分支,每个人在所分配的分支完成其功能后,最后合并到主分支,这样就不会相互影响,从而提高开发效率。

使用命令git branch branchname来创建分支branchname,示例如下,这里创建名为branch1的分支:

git branch branch1

使用git branch来查看分支

git branch

使用git branch -d branchname来删除分支branchname

git branch -d branch2

执行结果如下:
branch
这里首先创建了branch1branch2,接着使用git branch -d branch2删除了branch2,然后查看当前分支列表,可见分支branch2已经被删除。

1.4.2 切换分支和分支操作

  注意上图中蓝色的字符:(master),括号中的字符串表示当前工作的分支,当前是master分支。切换到branch1分支命令如下:

git checkout branch1

切换到branch1分支后,在此分支的操作和在master中的操作均一样。为了方便后续演示,我在文件夹下添加了cmd_test1.txt这个文件。然后执行添加文件,提交版本。提交成功后branch1分支有两个文件
  接下来我们切换到master分支,然后用命令ls查看文件,会发现此时master分支中不包含刚才添加的cmd_test1.txt这个文件,这也说明了在其它分支中修改、添加文件,不会改变主分支的状态。执行结果如下:
checkout
从图中可发现,切换分支后蓝色的字符都在变化,即显示当前工作的分支。

  若在分支中完成功能后想合并到另外一个分支,如将branch1合并到master主分支。首先切换到目标分支(master),然后输入命令:git merge branchnamebranchname为被合并的分支名称,示例如下:

git checkout master
git merge branch1

执行结果如下图,可以看到,此时master分支下已经包含cmd_test1.txt文件
merge
此时再使用git log查看日志信息如下图,日志信息已更新,显示合并的分支中提交的内容:
merge log

TortoiseGit操作以及命令行其他操作后续补充

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章