Git 之 问题集锦

准备:远程仓库名:origin     远程分支:master、tt      本地分支:master、test

1. error: src refspec *** does not match any

原因:$ git push origin tt 

      将本地的tt分支推送到远程仓库origin的tt分支,如果远程tt分支不存在则会创建

      而本地没有tt分支,故报错。

解决方法:$ git push origin test   ----> 保证本地分支和要推送的分支名一样,远程分支为test

      或 $ git push origin test:tt    ----> 将本地的test分支推送到远程tt分支

         下面使用第二种方法:

        

【push用法$ git push  <远程主机名> <本地分支名>:<远程分支名>

           当要推送的分支名和远程分支名一致时,可缩写为: $ git push  <远程主机名> <分支名>

           当要推送的当前分支名与远程分支名一致时,可缩写为: $ git push  <远程主机名>

           例:$ git push origin test:master

               将本地分支test推送到远程仓库origin的master分支上

              $ git push origin test

              将本地分支test推送到远程仓库origin的test分支上

              $ git push origin

              推送本地分支到相应的远程仓库origin的分支上,即本地tt分支对应远程tt分支

 

2. ![rejected]       **** -> master (fetch first)  更新拒绝

原因:远程仓库origin的master内容与本地test分支的内容不一样,而本地test分支在开发前没有更新代码,故提交时会出现更新拒绝。

解决方法:$ git pull origin master   ----> 需要拉下来远程仓库的哪个分支,就将master替换成那个分支名,因为上面是要将本地test分支提交到远程master分支,所以这里写的是master。(本地所在分支为tt分支)

3. 自动合并失败,合并冲突

在解决问题2的时候,可能会遇到合并冲突的问题:

原因:远程仓库master分支中有文件的内容有改动(例子中为bbb.txt文件)与本地test分支的内容不一样。

     而 $ git pull origin master 相当于先 $ git fetch master 后再 $ git merge origin/master,

     所以在merge时,发生了冲突事件。

解决方法:修改有冲突的文件后,重新git add 或 git commit -a,然后再git push

        

 【pull用法$ git pull  <远程主机名> <远程分支名>:<本地分支名>

           当要更新合并到本地当前分支时,可缩写为: $ git pull  <远程主机名> <远程分支名>

           若当前分支与远程分支存在追踪关系,可缩写为:$ git pull  <远程主机名>

           设置追踪关系:$ git branch --set-upstream <本地分支名> <远程主机名>/<远程分支名>

           默认本地master分支自动”追踪”远程origin的master分支。

           例:$ git pull origin master:test

               取回远程origin的master分支,并与本地test分支合并

              $ git pull origin master

              取回远程origin的master分支,并与本地当前分支合并

              $ git branch --set-upstream test origin/tt   

              指定本地test分支追踪远程origin的tt分支

              $ git pull origin

              本地的当前分支自动与对应的origin主机”追踪分支”(remote-tracking branch)进行合并

【merge用法将远程仓库分支与本地当前分支合并:$ git merge <远程主机名>/<远程分支名>

            将本地其他分支与本地当前分支合并:$ git merge <本地分支名>
            例:$ git merge origin/tt

               将远程origin的tt分支合并到当前分支

               $ git merge test

               将本地test分支合并到当前分支

4. Already up-to-date 和 Everything up-to-date

原因:Already up-to-date发生在merge时,Everything up-to-date发生在push时。

     主要是因为merge/push的本地分支与远程分支一致,并无改变。

解决方法:正常开发即可。

原文地址:https://www.cnblogs.com/liuq/p/6812805.html