Git版本控制:Git冲突解决 相关错误总结
http://blog.csdn.net/pipisorry/article/details/46958699
冲突处理
git push冲突处理
git push时出现冲突:! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@github.com:pipilove/GitTest.git'
hint: Updates were rejected because the remote contains work that you do not have locally. This is usually caused by another repository pushing to the same ref. You may want to first integrate the remote changes (e.g., 'git pull ...') before pushing again.
或者出错Updates were rejected because the tip of your current branch is behind hint: its remote counterpart.
在git push后出现错误可能是因为其他人提交了代码,而使你的本地代码库版本不是最新。这时你需要先git pull代码后,检查是否有文件冲突并手动解决一下。没有文件冲突的话需要重新走一遍代码提交流程add —> commit —> push。
git push冲突使用git pull解决后的冲突文件
如某人A git clone远程文件到本地,然后修改了file1.txt文件为: 1 pipi's computer
然后另一个人B同样clone项目后,修改了file1.txt文件为:1 jiajia's computer,并push到远程github仓库中。
这样你git push时就会报冲突,因为远程比你多commit了一次,提前了。这时你必须先git pull一下
From github.com:pipilove/GitTest
9d7c4a2..9d052ea master -> origin/master
Auto-merging file1.txt
CONFLICT (content): Merge conflict in file1.txt
Automatic merge failed; fix conflicts and then commit the result.
这样远程的file1.txt会和你本地的修改会合并,冲突文件冲突的地方会有如下提示
1 <<<<<<< HEAD
2 pipi's computer
3 =======
4 jiajia's computer
5 >>>>>>> 9d052eac234b0eafd79233cea62b6db06a2f6086
冲突标记<<<<<<< (7个<)与=======之间的内容是A的修改,=======与>>>>>>>之间的内容是B的修改。
Note: 自动合并并产生合并文件好像只有git 2.0以上才有,ubuntu14.04好像是git 1.9.1,要更新一下才好。
此时,还没有任何其它垃圾文件产生。你需要把代码合并好后(如删除掉B的修改内容,只留下之前自己的)重新走一遍代码提交流程就好了:git add .; git commit -m ''; git push。这样远程就是A修改的内容了pipi's computer了。
git push --force选项
如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。
这时,如果你一定要推送,可以使用--force选项。
$ git push --force origin
上面命令使用--force选项,结果导致远程主机上更新的版本被覆盖。除非你很确定要这样做,否则应该尽量避免使用--force选项。
如上面的示例中git push出错,这时直接
$git push --force
To git@github.com: /GitTest.git
+ cddb790...56e21f3 master -> master (forced update)
这样远程github上直接变成了:pipi's computer。
git pull冲突解决
不是每次git pull都会产生冲突文件。git2.0以上的git pull规则好像是这样的:如果远程的文件比本地新(修改时间),则会与本地合并,生成<===标记的冲突文件,需要手动解决(pull后直接输入命令git mergetool);如果远程文件比本地旧,则本地文件并不会改变,仍和远程不一样,没有冲突文件。
在commit本地代码后,git pull远程代码产生冲突的解决:手动解决git冲突的可视化解决方案
对于git push冲突,要先git pull,从而产生的冲突文件(合并后的),我们可以直接用vi或者其它文本编辑器打开再手动删除冲突,但是我们有更好的选择,如可以使用git mergetool可视化合并工具。
git pull后输入$git mergetool就会出现下面的可视化冲突解决工具meld。不过出现下面的可视化工具也可能是lz安装并配置了meld工具[Git高级教程:让git diff调用meld图形化差异比较工具]。
这个就好用多了,pycharm中也自带这个类似的工具。
在不commit本地代码的情况下,git pull远程代码,git pull文件时与本地文件冲突的解决:
问题:甲修改了文件A并且push到了git server上,这时乙也在修改文件A,他想看一下甲修改了什么,于是从git server上pull下来,但是会遇到这样的提示:
error: Your local changes to the following files would be overwritten by merge:
文件A Please, commit your changes or stash them before you can merge.
这里乙可以commit本地文件修改再pull
可是乙不想把他未完成的修改commit,这个时候就可以先把文件A暂存起来,不commit,再pull
Error pulling origin: error: Your local changes to the following files would be overwritten by merge
解决:
git stash #先将本地修改存储起来
git pull #暂存了本地修改之后,就可以pull了
git stash pop #还原暂存的内容
解决文件中冲突的的部分。
同git push冲突,冲突的文件中Updated upstream 和=====之间的内容就是pull下来的内容,====和stashed changes之间的内容就是本地修改的内容。碰到这种情况,git也不知道哪行内容是需要的,所以要自行确定需要的内容。
解决完成之后,就可以正常的提交了。
或者也可以使用git diff -w +文件名 来确认代码自动合并的情况。
[Git高级教程:git stash]
[git pull合并策略:MERGE STRATEGIES]
[pull 可能导致出现合并问题:修改合并策略]
[Git branch tip is behind it's remote counterpart and is preventing a 'push']
[Error pulling origin: error: The following untracked working tree files would be overwritten by...]
Git错误处理
git push 时报错 warning: push.default is unset
'matching'参数是 Git 1.x 的默认行为,其意是如果你执行 git push 但没有指定分支,它将 push 所有你本地的分支到远程仓库中对应匹配的分支。而 Git 2.x 默认的是 simple,意味着执行 git push 没有指定分支时,只有当前分支会被 push 到你使用 git pull 获取的代码。
根据提示,修改git push的行为:git config --global push.default matching。再次执行git push 得到解决。
git push比较大的文件的时候出现错误
error: RPC failed; result=22, HTTP code = 411
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date
这样的话首先改一下git的传输字节限制
git config http.postBuffer 524288000
然后这时候在传输或许会出现另一个错误
error: RPC failed; result=22, HTTP code = 413
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date
这两个错误看上去相似,一个是411,一个是413
下面这个错误添加一下密钥就可以了
首先key-keygen 生成密钥,然后把生成的密钥复制到git中自己的账号下的相应位置
git push ssh://192.168.64.250/eccp.git branch
错误"pathspec 'branch' did not match any file(s) known to git."
git checkout master
git pull
git checkout new_branch
git中输入ls命令中文乱码问题
在 Git Bash 中输入 ls 命令,为了正常显示中文文件名,只需要在git安装目录下的文件etc\git-completion.bash中添加一行
alias ls='ls --show-control-chars --color=auto'
from:http://blog.csdn.net/pipisorry/article/details/46958699
ref:
Git版本控制:Git冲突解决 相关错误总结的更多相关文章
- Git 分支管理和冲突解决
Git 分支管理和冲突解决 创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. 当前检出分支的前面会有星号. git branch newname 在当前检出分支上新建分支 ...
- Git 学习笔记--Git下的冲突解决
冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是merge 和 patch(应用补丁)时产生冲突. 而rebase就是重新设置基准,然后应用补丁的过程,所以也会冲突. git pull会自动m ...
- Git下的冲突解决【转】
本文转载自:http://www.cnblogs.com/sinojelly/archive/2011/08/07/2130172.html 冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是m ...
- Git分支合并冲突解决(续)
接Git分支合并冲突解决,在使用rebase合并冲突情况下,如果不小心,执行完add后执行了commit,此时本地仓库HEAD处于游离态(即HEAD指向未知的分支),如何解决? 解决方法 (1)此时, ...
- Git版本控制 Git、github,gitlab相关操作
目录 关于版本控制 版本管理工具 集中式管理 分布式管理 git版本管理 git介绍 软件安装 Git工作状态 原理流程步骤 git基本操作 对文件进行修改 分支 共享仓库 创建共享仓库: 共享仓库上 ...
- git操作之冲突解决
应用场景,任哥,我两个人共同修改了git项目上的一个文件.zsh命令行模式 准备工作 简写命令解释 gl=git pullgp=git pushgst=git statusgcmsg=git comm ...
- git学习之冲突解决办法
1.如果本地项目和远程服务器的同一文件都有改动,那么就会产生冲突,导致git pull 失败,报错见下. 解决办法:先执行git stash指令,暂存当前的改动状态,再执行git pull指令,就可以 ...
- Git分支合并冲突解决
前2天群里发了张git历史图,如下: 根据提交历史,可以看出图中所有分支合并都采用merge的方式,具体merge是怎么操作的,可以阅读下边文章. 根据项目上的需求,如果要求git提交历史是比较简单的 ...
- git pull 发生冲突解决办法
冲突原因:远程仓库的同一个文件的代码,和本地的文件代码不一样 解决办法 : 1.git stash (把本地冲突的代码隐藏) 2.git pull 3.git stash pop (将隐藏的和pull ...
随机推荐
- jQuery 效果 – 淡入淡出
在在jQuery中可以通过四个方法来实现元素的淡入淡出,这四个方法分别是:fadeIn().fadeOut().fadeToggle() 以及 fadeTo(),本文通过实例来为你讲解如何在jQuer ...
- Oracle中rownum的说明及使用技巧
一.rownum的说明 rownum是oracle特有的一个关键字. (1)对于基表,在insert记录时,oracle就按照insert的顺序,将rownum分配给每一行记录,因此在select一个 ...
- Java对象的创建 —— new之后JVM都做了什么?
Java对象创建过程 1. 类加载检查 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载.解析和初始化过.如果没 ...
- 初始化nodejs+webpack+vuejs
安装nodejs 4.x 参考 curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - sudo apt-get install ...
- iOS开源加密相册Agony的实现(三)
简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...
- Kafka系列之-自定义Producer
前面已经讲到了,在Kafka中,Message是由Producer产生的,Producer产生的Message会发送到Topic的指定Partition中.Producer可以有多种形式,也可以由用户 ...
- 2016年年终CSDN博客总结
2015年12月1日,结束了4个月的尚观嵌入式培训生涯,经过了几轮重重面试,最终来到了伟易达集团.经过了长达3个月的试用期,正式成为了伟易达集团的助理工程师. 回顾一年来的学习,工作,生活.各种酸甜苦 ...
- JAVA面向对象-----instanceof 关键字
instanceof 关键字 1:快速演示instanceof Person p=new Person(); System.out.println( p instanceof Person); 2:i ...
- [ExtJS5学习笔记]第二十七节 CMD打包错误 Error C2009: YUI Parse Error (identifier is a reserved word => debugger;)
本文地址:http://blog.csdn.net/sushengmiyan/article/details/41242993 本文作者:sushengmiyan ------------------ ...
- Spark技术内幕: Shuffle详解(三)
前两篇文章写了Shuffle Read的一些实现细节.但是要想彻底理清楚这里边的实现逻辑,还是需要更多篇幅的:本篇开始,将按照Job的执行顺序,来讲解Shuffle.即,结果数据(ShuffleMap ...