Git 常见小问题解决

1、合并冲突

  1. 远程仓库test下有三个分支devmastertest。在dev下修改了README.md文件,然后主分支执行git merge dev合并dev分支,然后推送到远程仓库。

     
     


     
    文件结构


    2.这时再切换到test分支上,同样修改README.md的同一行,执行合并主分支git merge master,就会出现错误提示,提示说自动合并出现了冲突

 

 
 

然后输入git status查看文件状态,可以看到右上角的蓝字出现了MERGING状态
 
image.png

查看both modified:README.md文件
 
 

等号下面的就是master与test分支在README.md冲突部分,选取想要留下的修改解决冲突

 

 
 

重新add commit push提交成功

 
 

 

2、远端修改本地无法提交

  1. 在远端修改了a.md文件


     
     
  2. 在本地目录中添加了新的b.md文件,提交报错,远程仓库包括了一些东西你本地没有,你需要在你提交前git pull

 
 

3.执行了git pull 自动进入vim编辑器解决冲突,按i进入编辑模式:wq保存退出

 
 

4.重新push 提交成功,列表中多了b.md

 
 

3、本地滚回,远程仓库版本高于本地无法提交问题

当前README.md内容


 
 

本地滚回,但远程仓库代码并没有滚回,还是“第二次branch修改”


 
 

 
 

这时本地push报错,意思大概是当前分支所在的位置低于你远程仓库的版本

 

 
 

可以git push origin test -f 强制推送,这样可以强制推到远程仓库,但这样以前的版本记录都没了,所以十分不推荐这么做。
这时候可以revert,它会认为你回滚的东西是一次新的修改提交,这样滚回会有冲突解决冲突的办法和merge一样,然后push直接提交就好了。

 

 

 
 

4、origin问题
每次提交都去输入git push origin master ,origin是远程仓库的名字是可以自定义的,master代表分支名。
 
 

 

 
添加远程仓库地址示例

5、pull的问题
当存在许多分支时,直接git pull会出错,意思是需要指定分支

 

 

指定从master分支上pull,这样就从master分支上同步到了b1分支,记得每次写代码的时候先pull一下。


 



4.Git master branch has no upstream branch的解决

在push代码时,出现“git master branch has no upstream branch”问题的原因是没有将本地的分支与远程仓库的分支进行关联。如下图所示: 
 
具体原因:出现这种情况主要是由于远程仓库太多,且分支较多。在默认情况下,git push时一般会上传到origin下的master分支上,然而当repositorybranch过多,而又没有设置关联时,git就会产生疑问,因为它无法判断你的push目标。 
解决办法其实就是确定这两个值,方法有两种:

  • 第一种如上图中的提示:git push --set-upstream origin master。其中的origin是你在clone远程代码时,git为你创建的指向这个远程代码库的标签,它指向repository。为了能清楚了解你要指向的repository,可以用命令git remote -v进行查看。master是你远程的branch,可以用git branch -a查看所有分支,远程分支是红色的部分。然后确定好这两个值后,将命令中标粗的参数换掉即可。

  • 另一种方法是:git push -u origin master。同样根据自己的需要,替换origin和master。

两个命令的区别是第一条命令是要保证你的远程分支存在,如果不存在,也就无法进行关联。而第二条指令即使远程没有你要关联的分支,它也会自动创建一个出来,以实现关联。

我的列子:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.5.2 Zero

WX:xcs345525801 QQ:345525801 Tel:19521445850 Email:xcssh868@163.com

Copyright © 2020 许承胜个人博客 版权所有 备案号:皖ICP备18014705号-1