简单整理些应注意的点,理清思路,多动手。
Git是一种分布式版本控制系统,其特点就在于分布式,每个人都在自己的版本库中修改,修改时互不影响,修改后将自己修改后的代码推送到远程库,查看和合并修改内容。
其主要应理解的内容有:版本回退和分支管理,理解了Git这些操作的原理,就能更好的去使用Git。
1、版本回退
Git记录管理的是每一次的修改,先说工作区和暂存区的概念,工作区即我们能看到的目录,我们可以修改其中的文件。在版本库中,我们每一次git add文件,就是将文件修改添加到暂存区,可以添加多个修改,之后git commit,将暂存区的文件提交到当前分支,而每次提交后,HEAD指针会指向当前最新的修改。
如何回退到上之前提交的某次版本呢,git reset --hard commit id
(git log查看提交历史,确定要回退的版本commit id),若要回到此后的版本,再使用git reflog
查看命令历史,确定回到之后的哪个版本。
而撤销修改(未推送到远程仓库),使用git checkout撤销在工作区的修改,如果已经添加到版本库中(未提交),先回到上一次修改前的版本,再git checkout撤销修改,第三种,提交到版本库的,使用版本回退。
2、分支管理
采用分支是使用远程仓库与别人协作时所必需的,分支管理使得各自之间在合并前互不影响,当团队多人协作时,需要有一条主分支(master),主分支应是最稳定的,是合并最终的版本,还需有一条用来工作的分支(dev),每个人在自己的分支上工作,再将修改合并到dev分支,dev是不稳定的,当修改无误后,再将dev分支合并到master分支。
主要命令
创建分支git branch <name>
切换分支git checkout <name>
创建加切换分支git checkout -b <name>
合并分支到当前分支git merge <name>
删除分支git branch -d <name>
合并分支有两种模式,一种是快进模式,直接将HEAD指向最新的提交dev,这种方式看不出来有合并过。一种是普通合并模式,将当前master与dev合并后生成新的版本,即可以在历史分支上看出历史信息。
还有一点,当正在dev分支进行新的工作时,发现别的分支有bug需要修复,使用git stash
保存工作现场,再开始修复bug。完成之后用git stash pop
恢复之前的工作,并将stash内容删除。
要丢弃一个未合并的分支git branch -D <name>
,若合并就用版本回退。
使用远程仓库与多人协作时,先克隆远程仓库到本地,将自己的修改推送到远程分支git push origin branch-name
,当远程分支有了更新时会导致此时推送失败,使用git pull
将最新提交抓取下来,在本地合并,解决冲突,在本地提交再推送到远程分支。