分支的建立、兼并与删除
建立分支与切换分支
$ git branch develop
$ git checkout develop
或许
$ git checkout -b develop
git checkout敕令加上-b参数示意建立并切换。git branch或许(git branch -a)背面不跟分支名时指列出一切分支,当前分支前面加*。
$ git branch
兼并分支
git merge敕令用于兼并指定分支到当前分支,假如当前分支是master分支,git merge develop指将develop分支兼并到master分支。
$ git merge develop
删除分支
删除当地develop分支,不能在当前分支实行删除当前分支的操纵。
$ git branch -d develop
处理争执
争执能够说是两个分支的争执,发生的原因是两个已提交的分支的雷同文件雷同位置的的差别操纵举行了兼并
多人协作开辟的时候,假如涌现了你没有悛改的文件跟你争执了,肯定要去找到本事儿,说清楚是怎样争执,然后协商处理,修文件,确保没问题后在从新add、commit、push。
平常代码编辑器都集成了git,如WebStrom、VsCode,能够很直观的检察争执代码,并举行代码兼并。
Rebase操纵
兼并多个commit为一个完全commit
$ git rebase -i [startpoint] [endpoint]
个中-i的意义是–interactive,即弹出交互式的界面让用户编辑完成兼并操纵,[startpoint] [endpoint]则指定了一个编辑区间,假如不指定[endpoint],则该区间的尽头默许是当前分支HEAD所指向的commit(注:该区间指定的是一个前开后闭的区间)。假如不指定分支默许操纵当前分支
将当前分支的一段commit粘贴到另一个分支上
$ git rebase [startpoint] [endpoint] –onto [branchName]
rebase的长处和瑕玷
长处
- rebase最大的优点是你的项目汗青会异常整齐
- rebase 致使末了的项目汗青呈现出圆满的线性——你能够从项目尽头到出发点阅读而不须要任何的 fork。这让你更轻易运用 git log、git bisect 和 gitk 来检察项目汗青
瑕玷
- 安全性,假如你违反了 rebase 黄金轨则(毫不要在大众的分支上运用它),重写项目汗青可能会给你的协作事情流带来灾难性的影响
- 可跟踪性,rebase 不会有兼并提交中附带的信息——你看不到 feature 分支中并入了上游的哪些变动
修复争执
git rebase –abort会回到rebase操纵之前的状况,之前的提交的不会抛弃。
$ git rebase –abort
git rebase –skip则会将引发争执的commits抛弃掉。
$ git rebase –skip
git rebase –continue用于修复争执,提醒开辟者,一步一步地有无处理争执,fix conflicts and then run “git rebase –continue”。
$ git rebase –continue
长途协作
当地堆栈和长途堆栈,Git自动把当地的master分支和长途的master分支对应起来了,而且,长途堆栈的默许名称是origin。
检察长途库(git remote)
$ git remote
检察长途库详细信息
$ git remote -v
往长途堆栈推送代码,须挑选当地分支,下面指往develop分支推送代码
$ git remote origin develop
只要须要协同开辟的才须要往长途堆栈推送代码
- master分支是主分支,因而要时候与长途同步;
- dev分支是开辟分支,团队一切成员都须要在上面事情,所以也须要与长途同步;
- bug分支只用于在当地修复bug,不必推送到长途;
- feature分支是不是推到长途,取决于你是不是和你的小伙伴协作在上面开辟。
标签治理
建立标签 (git tag <tagname>)
$ git tag v1.0
检察标签(git tag)
$ git tag
默许标签是打在当前分支最新提交的commit上的,假如要打在汗青的commit上,找到汗青提交的commit id(git tag v0.9 <commit id>)
git tag v0.9 f52c633
检察标签信息(git show <tagname>)
$ git show v0.9
建立带有申明的标签,用-a指定标署名,-m指定申明笔墨
$ git tag -a v0.1 -m “version 0.1 released” 1094adb