$ git push origin dev // 可能会出错,因为你的小伙伴的最新提交和你试图推送的提交有冲突,Git会提示我们解决的方法,先用git pull把最新的提交从origin/dev中拿下来,然后在本地合并,解决冲突,最后推送:
$ git pull // 也可能会失败,因为没有指定本地dev分支与远程origin/dev分支的链接,根据提示设置dev分支与远程origin/dev分支的链接
$ git branch --set-upstream dev origin/dev
再pull。
若pull成功后有冲突,需要手动解决,解决的方法和分支管理中的解决冲突一样,解决后再push
3,多人协作的模式通常是这样:
(1)首先,可以试图用git push origin branch-name退送自己的修改
(2)若退送失败,则因为远程分支比你的本地更新,需要先用git pull 合并
(3)若合并有冲突,则解决本地冲突,并在本地提交
(2)没有冲突或解决了冲突,再用git push origin branch-name推送就可以了
4,小结:
(1)查看远程库信息,使用git remote -v
(2)本地新建的分支若不推送到远程,别人是看不见的
(3)在本地创建和远程分支对应的分支,用$ git checkout -b dev origin/dev 颜色部分表示分支名字,最好一致
(4)git pull提示 "no tracking information",则说明本地分支没有与远程分支建立链接关系,用命令
$ git branch --set-upstream dev origin/dev 建立本地分支与远程分支的关联
2016-01-04 更新
标签管理:发布一个版本时,通常会在版本库中打上一个标签,这样就唯一确定了打标签时刻的版本,将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来
Git的标签虽然是版本库的快照,但其实就是只想某个comit的指针(跟分支很像,但是分支可以移动,而标签不能移动)
创建标签
1,首先切换到需要打标签的分支上,
$ git branch
$ git checkout master
2,然后敲击 git tag name 就可以打一个标签
$ git tag v1.0
3,查看所有标签
$ git tag
4,默认标签是打在最新提交的commit上的。有时候忘记打了,比如今天周五了,周一的标签还没有打,怎么办
方法是找到历史提交的commit,然后打上就可以了
$ git log --pretty=oneline --abbrev-commit
然后找到对应的分支,打上就可以,比如这里对 "1127 change",打标签,就这样做
$ git tag v0.01 2c8de67
5,注意标签不是按时间排序的,而是按字母,可以用git show tagname 查看标签信息
6,还可以创建带有说明的标签, -a指定标签名, -m说明文字
$ git tag -a v0.1 -m "version 0.1 release" 98e56b0
$ git show v0.1 // 再查看一下
7,还可以通过-s用私钥签名一个标签
$ git tag -s v0.2 -m "signed version 0.2 release" 7478f13
签名采用PGP签名,因此,必须先安装gpg,否则就会报错,
若报错,请参考GnuPG帮助文档配置key
// 关于这个可以查看这个?url=zGiQnJuni2FQFfmeRuXa_novFIQrElE8esw7bB-P5t7jJNFw_2_3vhfBIIrmmJIUWbW5H1CYfh14PdhkNkH2Xx2MbWGvaqN9Yofh28n0vtG###
// windows下好像叫这个 Gpg4win ,
8,小结:
(1)$ git tag tagname 用于创建一个标签,默认为HEAD,也可以指定一个commit ID
(2)-a tagname -m "balabala..." 可以指定标签信息
(3)-s tagname -m "balabala..." 可以用PGP签名标签
(4)$ git tag 可以查看所有标签
2016-01-05 更新
操作标签
1,标签打错了,也可以删除。创建的标签都只存储在本地,不会自动推送到远程,所以,打错的标签可以在本地安全的删除
$ git tag -d v0.1
2,要推送某个标签到远程,
$ git push origin v1.0
3,一次性推送全部尚未推送到远程的本地标签
$ git push origin --tags
4,推送到远程后的标签删除起来比较麻烦,先从本地删除
$ git tag -d v0.9
然后从远程删除
$ git push origin :refs/tags/v0.9
可以登录GitHub查看有没有删除标签