【问题标题】:Why does git modify my files? How do i undo it?为什么 git 会修改我的文件?我如何撤消它?
【发布时间】:2011-08-18 16:59:11
【问题描述】:

嘿,所以我是一个完整的 git 新手,我做过的最高级的事情只是基本的拉/推.etc

由于我不明白我的一个提交编辑了一堆文件的原因,包括嵌入到文件中我自上次提交以来所做的编辑,例如:

foo.txt:

bar

如果我将其编辑为:

foobar

提交时的文件已更改为:

<<<<<<< HEAD
bar
=======
foobar
>>>>>>> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

X 是提交代码或其他。

对我的源文件进行的这些编辑是什么,我如何摆脱它们?

感谢您对此的任何帮助

【问题讨论】:

  • 这些是合并冲突。它们发生在合并期间(这是pull 的一部分),当合并的分支都对文件的同一部分进行了修改时。它们永远不应该由 git 提交,但是如果您手动 add 未解析的文件,git 将默默地服从您的(在这种情况下不正确)命令。如果您写出完全您所做的事情,您可能会得到解释为什么它们会发生在您的特定案例中。
  • 我最近刚刚重新安装了我的操作系统,重新启动了整个项目,它已经是这样了,所以它可能以前发生过。有没有什么简单的方法可以通过覆盖所有最新的编辑来解决冲突?我知道在与团队合作时这是一个非常糟糕的主意,因为它可能会丢失很多工作,但现在我正在独自完成这项工作,因此不会有冲突是其他人的工作的风险。
  • 没有最新的编辑,因为冲突中的两个版本是并行创建的。使用 gitk 检查历史记录,然后您必须手动选择哪个版本对每个冲突都是正确的。
  • 有没有一种简单的方法可以将“新版本”标记为所有文件的正确版本?基本上旧版本都是几个月大的,所有新版本都是正确的。

标签: git github push commit


【解决方案1】:

那些代表合并冲突。您的提交导致文件冲突。

<<<<<<< HEAD
bar

表示 HEAD 中已有的内容

foobar
>>>>>>> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

显示您要合并的内容。

在此处查看解决合并部分:http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging

【讨论】:

  • 我将如何解决这些冲突?我现在认为它不像我想象的那样工作,如果文件之间存在差异,新提交不应该是该文件的新版本吗?
  • 虽然 commiting 本身不会引起冲突,但只有在合并( pull 合并)时才会发生冲突。你能用整个工作流程更新你的问题吗?
  • 基本上我所知道的可能很重要的是:1)进行一些编辑2)进行提交3)推送提交然后重新安装后; 1)拉回购 2)进行一些编辑 3)提交 4)推送提交 现在我在哪里
  • 好的,所以在阅读book.git-scm.com/3_basic_branching_and_merging.html 之后,我得到了我做错的地方,并且得到了冲突标记。我现在想要的是一种强制某种覆盖合并的方法,所有冲突都会将较新的提交合并到较旧的提交上。显然,在大型项目中这样做并不是一个好主意
  • 根据您的操作,您可以执行git pull -Xtheirs 之类的操作,其中 X 表示策略选项(策略默认为递归)
【解决方案2】:

除了manojlds:

您可以使用以下配置指定在合并冲突中具有共同祖先的版本(由管道 ||||| 分隔):

git config merge.conflictstyle diff3

这会使冲突看起来像:

<<<<<<< HEAD
roses are #ff0000
violets are #0000ff
|||||||
roses are red
violets are blue
=======
Roses are red,
Violets are blue,
>>>>>>> master

Kevin's Blog上查看更多信息

【讨论】:

    猜你喜欢
    • 2012-09-30
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多