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 冲突的 14 个建议和工具]

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]

[git pull命令实际执行步骤]

[git pull命令的等价命令]

[Git下的冲突解决]

[使用git pull文件时和本地文件冲突怎么办?]

[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 pull 命令]

皮皮Blog

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'

[解决git中文乱码问题]

from:http://blog.csdn.net/pipisorry/article/details/46958699

ref:


Git版本控制:Git冲突解决 相关错误总结的更多相关文章

  1. Git 分支管理和冲突解决

    Git 分支管理和冲突解决 创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. 当前检出分支的前面会有星号. git branch newname 在当前检出分支上新建分支 ...

  2. Git 学习笔记--Git下的冲突解决

    冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是merge 和 patch(应用补丁)时产生冲突. 而rebase就是重新设置基准,然后应用补丁的过程,所以也会冲突. git pull会自动m ...

  3. Git下的冲突解决【转】

    本文转载自:http://www.cnblogs.com/sinojelly/archive/2011/08/07/2130172.html 冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是m ...

  4. Git分支合并冲突解决(续)

    接Git分支合并冲突解决,在使用rebase合并冲突情况下,如果不小心,执行完add后执行了commit,此时本地仓库HEAD处于游离态(即HEAD指向未知的分支),如何解决? 解决方法 (1)此时, ...

  5. Git版本控制 Git、github,gitlab相关操作

    目录 关于版本控制 版本管理工具 集中式管理 分布式管理 git版本管理 git介绍 软件安装 Git工作状态 原理流程步骤 git基本操作 对文件进行修改 分支 共享仓库 创建共享仓库: 共享仓库上 ...

  6. git操作之冲突解决

    应用场景,任哥,我两个人共同修改了git项目上的一个文件.zsh命令行模式 准备工作 简写命令解释 gl=git pullgp=git pushgst=git statusgcmsg=git comm ...

  7. git学习之冲突解决办法

    1.如果本地项目和远程服务器的同一文件都有改动,那么就会产生冲突,导致git pull 失败,报错见下. 解决办法:先执行git stash指令,暂存当前的改动状态,再执行git pull指令,就可以 ...

  8. Git分支合并冲突解决

    前2天群里发了张git历史图,如下: 根据提交历史,可以看出图中所有分支合并都采用merge的方式,具体merge是怎么操作的,可以阅读下边文章. 根据项目上的需求,如果要求git提交历史是比较简单的 ...

  9. git pull 发生冲突解决办法

    冲突原因:远程仓库的同一个文件的代码,和本地的文件代码不一样 解决办法 : 1.git stash (把本地冲突的代码隐藏) 2.git pull 3.git stash pop (将隐藏的和pull ...

随机推荐

  1. Conference-Web Search and Data Mining

    Conference WSDM(Web Search and Data Mining)The ACM WSDM Conference Series 不像KDD.WWW或者SIGIR,WSDM因为从最开 ...

  2. iOS进阶之页面性能优化

    转载:http://www.jianshu.com/p/1b5cbf155b31 前言 在软件开发领域里经常能听到这样一句话,"过早的优化是万恶之源",不要过早优化或者过度优化.我 ...

  3. 初识mybatis(二)

    上篇博客我们介绍通过Java代码来创建mybatis的配置文件,港真,这种方式看起来有意思实际在开发中用的并不多,mybatis的配置还是以xml配置为主,本文我们就来看看如何通过xml文件来配置my ...

  4. Unity3D开发注意事项

    最近给组里定Unity开发注意事项,参考了@陆泽西在群里分享的[前端开发规范],结合自己工作中的经验,整理一下,下面不少条款都是我们要求在开发中必须遵守的. 资源: 图片统一为png格式,纹理属性:T ...

  5. jboss规则引擎KIE Drools 6.3.0 Final 教程(3)

    在前2部教程中,介绍了如何在本地运行.drools文件以及使用stateless的方法访问远程repository上的规则. KIE Drools还提供了一种叫有状态-stateful的访问方式. 运 ...

  6. Java中的泛型类和泛型方法区别和联系

    泛型的概念大家应该都会,不懂的百度或者google,在java中泛型类的定义较为简单 <span style="font-size:18px;"><span st ...

  7. Linux 高性能服务器编程——多进程编程

    问题聚焦:     进程是Linux操作系统环境的基础.     本篇讨论以下几个内容,同时也是面试经常被问到的一些问题:     1 复制进程映像的fork系统调用和替换进程映像的exec系列系统调 ...

  8. 19 子线程刷新UI runOnUiThread

    package com.example.com.fmyh; import java.io.BufferedReader; import java.io.File; import java.io.Fil ...

  9. Java基本语法-----java注释

    1注释的作用 通过注释提高程序的可读性,是java程序的条理更加清晰,易于区分代码行与注释行.另外通常在程序开头加入作者,时间,版本,要实现的功能等内容注释,方便后来的维护以及程序员的交流. 2注释的 ...

  10. 带你深入理解STL之List容器

    上一篇博客中介绍的vector和数组类似,它拥有一段连续的内存空间,并且起始地址不变,很好的支持了随机存取,但由于是连续空间,所以在中间进行插入.删除等操作时都造成了内存块的拷贝和移动,另外在内存空间 ...