Git学习笔记
Git为目前世界上最先进的分布式版本控制系统,在这次实习中也多次接触到了Git,对比于之前对Git的认识,有了更深入的了解。在这里整理下Git的学习笔记。
Git是一个版本控制系统,也就是可以对代码进行更好的管理,为代码的的管理,多人的协作提供了更多的便利。
版本控制
管理修改
在使用Git之前我们肯定需要先创建一个版本库。
使用 git init 命令创建一个新的版本库,此时在当前目录里会多出一个.git 目录,这个目录就是Git来跟踪管理版本库的。
接下来我们在这个目录新建一个文档。
接着使用git status 查看当前状态。
这里提示我们使用git add命令将这个文档添加到版本库,然后git就可以追踪这个文档的修改。
当我们将这个文件添加到了版本库之后再次查看git状态,此时提示我们可以使用git commit将这个修改提交到版本库。
我们在提交修改时会有一个参数-m或者-am,这个参数后面输入的内容就是对本次提交的说明,有了这个备注我们就可以很方便的从历史改动记录里找到这一次的修改记录。修改提交成功之后git就告诉我们,一个文件被改动,插入了一行内容。
撤销修改
既然这个目录用Git中的说法叫版本库,那么这个库里边就是Git所管理的各个版本的文件,那么我们就可以回退到历史的版本。
这里我们将文档的内容修改一下,然后同样的把这个修改提交上去。
使用git log 可以查看到我们的提交记录。那我们怎么回到之前的那个版本呢?
那要就使到用git reset指令。
这里我们使用了一个–hard HEAD^参数,这个参数就是说指定回到当前版本的前一个版本,有多少个 ^就回退多少个版本。当然,我们也可以使用–hard commit_id来回退到指定的版本,commit_id 就是之前查看log是commit之后的那一串字符。
这时我们查看就会发现文档又回到了之前的版本。
小结
- git init 创建一个新的版本库;
- git add <file> 添加文件到版本库;
- git commit -m <message> 提交修改到版本库;
- git log 查看版本提交记录;
- git reset --hard commit_id 回退到指定版本。
分支管理
在实习之前也没接触过分支管理,而在一个真实的开发环境中,并不是只有自己一个开发人员。开发一个项目会有很多开发人员,不同的人负责不同的模块,这时我们就需要分支。每个人在自己的分支上进行开发,就像是一个平行宇宙,平行宇宙之间互不影响,而当一个模块开发完成之后又可以将这个平行宇宙合并起来。又或者是当你在开发一个新功能时测试又报了一个bug,这时你就可以建立一个新的分支,在这个分支上对bug进行修改而且不影响你开发新功能。bug修复之后你就可以将这个分支合并进来。
创建与合并分支
使用 git checkout -b dev 创建一个dev分支并切换到dev分支,- b 参数表示创建并切换,相当于:
git branch dev
git checkout dev
此时可以看到已经切换到了dev分支。然后我们在这个分支上进行一些修改然后再提交。
在dev上修改完之后我们切换到master上看看有什么变化。
此时可以看到我们在dev分支上的修改并没有影响到master分支。
现在我们将dev分支上的修改合并到master分支上试试。
可以看到dev分支上的修改内容同步到了master分支上了。
代码冲突
当我们在两个不同分支上进行修改或者是不同的开发人员在不同分支上修改时,有可能会修改到同一个代码段。当我们试图将两个分支合并起来时就会产生代码冲突。
我们在dve分支上对文档做一些修改然后在提交
然后在master分支上我们再对文档进行一些修改,修改的部分的位置和dev分支上的相同。
当我们在master分支上提交后准备合并这两个分支时,问题就出现了。Git提示我们文件存在冲突,必须手动修改完冲突之后才能合并。
查看文档git也指出了冲突的位置,这时我们手动修改冲突的位置,然后在根据git的提示进行提交。
最后再删除掉多余的dev分支,万事大吉。
小结
- git branch 查看分支 ;
- git branch <name> 创建分支;
- git checkout <name> 切换分支;
- git checkout -b <name> 创建并切换分支;
- git merge <name> 合并某分支到当前分支;
多人协作
我们在开发过程中肯定不会只有自己一个人去开发,一个完整项目的开发往往需要多人的协作才能完成。git则能在帮助我们在多人协作中进行协调,从而提高开发的效率。
添加远程库
我们首先要登录github,在github中创建一个新的仓库,然后将这个远程库和我们的本地库之间关联起来。
现在我们已经和远程仓库关联好了,下一步把本地仓库里的内容推送到远程仓库。
我们这是第一次推送master分支,所以加上了-u参数,加上这个参数之后git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
此时再查看我们github的这个远程仓库,本地的文档就已经推送上去了。
克隆远程仓库
我们选择一个远程仓库使用git clone命令克隆出一个本地仓库。
现在我们就成功克隆了一个远程仓库到本地。可以在本地进行查看和修改。
推送分支
当你的所开发的功能或者是修改的bug已经完成的时候,你就需要推送分支到远程仓库。
推送分支需要git push命令。
origin master 就是向远程仓库的master分支推送代码,我们也可以选择其他分支进行推送。
抓取分支
在需要多人协作时,大家就需要从远程库将自己需要的代码分支抓取下来,在各自的分支上进行修改。抓取分支就需要git pull命令,和推送命令一样,后面的参数是远程库和分支。
这里提示我们当前本地库和远程库已经是同步的了。
小结
- git remote add origin ssh 与远程库相关联;
- git clone origin ssh 克隆远程仓库;
- git push origin <branch> 推送分支;
- git pull origin <branch> 抓取分支;