多人协作
利用git remote
可以查看远程库的信息
<pre><code>$ git remote
origin
</code></pre><p>
也可以利用git remote -v
显示更详细的信息:
<pre><code>$ git remote -v
origin git@github.com:michaelliao/learngit.git (fetch)
origin git@github.com:michaelliao/learngit.git (push)</code></pre><p>
推送分支
master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
抓取分支
若你的同事已经向origin/dev
分支推送了他的提交,而碰巧你也对同样的文件作了修改,并试图推送,就会发生推送失败,需用git pull
来把最新的提交从origin/dev
抓下来,然后,在本地合并,解决冲突,再推送.
如果git pull
也失败了,原因是没有指定本地dev
分支与远程origin/dev
分支的链接,根据提示,设置dev
和origin/dev
的链接:
<pre><code>$ git branch
--set-upstream dev origin/dev
Branch dev set up to track remote branch dev from origin.
</code></pre><p>
之后进行git pull
多人协作模式
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull
提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name
。
标签管理
tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起,而不像commit号绕口,不像分支那样可以移动。
创建标签
- 切换到需要打标签的分支上:
- 敲命令
git tag <name>
就可以打一个新标签
PS:
命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a <tagname> -m "blablabla..."可以指定标签信息;
git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;
命令git tag可以查看所有标签。
操作标签
命令git tag -d <tagname>
可以删除一个本地标签,因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。
如果要推送某个标签到远程,使用命令 git push origin <tagname> ,或者,一次性推送全部尚未推送到远程的本地标签git push origin --tags
如果标签已经推送到远程,先从本地删除:
然后,从远程删除:
<pre><code>$ git push origin :refs/tags/v0.9
To git@github.com:michaelliao/learngit.git
- [deleted] v0.9
</code></pre><p>