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 ...
随机推荐
- Mac下配置远程Linux 服务器SSH密钥认证自动登录
1. 在本地机器创建公钥 打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可. ssh-keygen -t rsa -C 'your email@domain.com' -t 指定密钥类型 ...
- 2017-暑假作业-Java语言程序设计
任务列表 1.学会使用Markdown做笔记 本篇随笔就是使用的Markdown语法.养成做笔记的习惯! 参考资料: 极简MarkDown排版介绍(How to) stackedit:在线Markdo ...
- android 获取栈顶activty的方法总结(兼容API 5.0)
声明:本文为Dujinyang CSDN原创投稿文章,未经许可,禁止任何形式的转载. 最近5.0\6.0\7.0 安卓系统都陆续上岗了,兼容性和代码更新是个很头疼的问题,这次我们来说下TASK的基础和 ...
- 大规模WebGL应用引发浏览器崩溃的几种情况及解决办法
一般的Web应用基本上不会导致浏览器崩溃,写Javascript代码也不需要管理内存资源,基本也不需要考虑内存"泄露"的问题.随着H5的崛起,越来越多的原本在桌面端的软件也改头换面 ...
- Openstack: MP-BIOS bug: 8254 timer not connected to IO-APIC
Issue: After you import an linux image into openstack and run an instance of it, you may find that t ...
- RDO Stack:VMs cannot access external network.
Issue: There are many root causes to make your openstack vm instances cannot be reached from externa ...
- Querying CRM data with LINQ
http://www.powerxrm.com/querying-crm-data-with-linq/ 如果不喜欢看SDK中的示例,这篇里面讲的非常详细,值得一看.
- python获取指定时间差的时间
在分析数据的时间经常需要截取一定范围时间的数据,比如三天之内,两小时前等等时间要求的数据,因此将该部分经常需要用到的功能模块化,方便以后以后用到的时候复用.在此,也分享给大家. <span st ...
- 大话XML解析
之前我写过一篇关于xml解析的文章:http://blog.csdn.net/sdksdk0/article/details/50749326.今天这篇文章主要是进一步加深对xml基础的理解了使用,毕 ...
- 从源码安装git
蛋疼的阿里云,git版本居然才1.9.只能手动安装了. 预装 apt-get update apt-get --yes install libcurl4-gnutls-dev libexpat1-de ...