「Git」远程仓库


远程仓库操作

指令 解释
git remote add origin <ssh> 将远程仓库关联到本地版本库,并将origin作为远程库的名字
git clone <ssh> 直接将远程仓库克隆到本地
git remote rm origin 删除origin代表的远程库(只是解除了关联,并不是真正的删除远程库),可以提前使用git remote -v来查看远程库的信息
git remote rename <name1> <name2> 远程仓库重命名

push命令

git push时使用本地分支来更新远程分支,基本形式是——

git push <远程仓库名> <本地分支名>:<远程分支名>

本地分支名为要被推送的分支,远程分支名是远程仓库中要被更新的分支。该指令有以下几种使用方法——

指令 解释
git push origin master:master 使用完整性形式,表示用本地master分支来更新远程仓库origin的master分支
git push origin master 省略了远程分支名,表示将本地master本支推送到origin的master分支,如果后者不存在,则会被新建
git push -u origin master 作用同git push origin master,同时指定origin为默认远程仓库,以后就可以直接使用git push而不用带其他参数了
git push origin :master 省略了本地分支名,表示用空分支来跟新origin的master分支,其实是删除了远程origin的master分支。该指令相当于git push origin --delete master
git push origin 省略了远程分支名和本地分支名,只有在当前分支(HEAD指向的分支)和远程仓库中某分支存在追踪关系的时候才可以使用(一般是分支名相同)
git push 不带任何参数,默认只推送当前分支到默认远程仓库
git push --all origin 将所有的本地分支都推送到origin远程仓库
git push --force origin 如果远程仓库的版本比本地新,git会报错,如果一定要推送,则可以使用该指令强制推送

pull命令

git pull表示将远程仓库中某分支下拉并合并到本地某分支,指令基本形式是——

git push <远程仓库名> <远程分支名>:<本地分支名>

该指令有以下几种使用方法——

指令 解释
git pull origin master:master 使用完整性形式,表示将远程仓库origin的master分支下拉并合并到本地master分支上
git pull origin master 省略了远程分支名,表示将远程仓库origin的master分支下拉并合并到当前分支上(HEAD指向的分支)

常见问题及解决方式

情景1: 假设你刚刚在master分支上干完一部分工作,commit到本地仓库后正准备上传到远程仓库,结果使用push是竟然报错了。原因是和你在同一分支上工作的大兄弟早早的干完活push上去了,而他的最新提交和你的提交是有冲突的。
解决方法:git pull origin master:master把最新的origin/master下并合并到本地master,当然此时会提示“合并有冲突”。我们手动解决冲突后再次commit,这时push就没有什么问题了。

情景2: 假设你对master进行了版本回退,在该回退版本上修改了一些问题后想要上传到远程分支,结果发现直接push也有问题。此时不可以先pull在push,因为pull之后代码就和远程仓库一样了。
解决方法: 我们可以先使用git branch a新建一个分支a,然后回到版本回退前的最新一次commit,使用git merge a即可将该修改合并到最新的分支。

情景3: 假设你正在master分支上工作,并已经对master分支上的内容进行了修改。此时你的同事已经将他的修改上传到远程仓库里,而你想将他的修改和你的修改合并在一起,如果此时直接pull也会出现错误。
解决方法: 先用git stash将本地的修改暂存,然后git pull拉取同事修改后的版本,最后git stash pop将自己的修改恢复。此时可能会有冲突,需要手动进行解决。


文章作者: Hyggge
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hyggge !
  目录