繁体   English   中英

如何让git merge处理我工作树的未提交更改?

[英]How to make git merge handle uncommitted changes to my working tree?

一位同事和我现在都在主分公司工作。 我在工作树中有一些我不想提交的代码(调试语句等)。 现在,如果他对某些相同的文件进行更改,我就无法合并它们:

$ git merge origin/master
Updating 1b8c5c6..eb44c23
error: Entry 'blah.java' not uptodate. Cannot merge.

来自subversion背景,我习惯于在从存储库中提取更改时自动合并工作树,如果存在冲突,我会手动解决它们。

我发现在git中这样做的最快方法是:

$ git stash
$ git merge origin/master
$ git stash pop

本质上,删除我未提交的更改,执行合并然后重新应用更改。 如何告诉merge自动将我的工作树与我想要引入的更改合并?

忘掉你从颠覆中学到的一切。

在引入外部更改之前始终提交。

想象一下,你有一棵大多数工作的树 - 也许并不完美,但你正在取得一些进展。 然后你去做一个合并,你带来的代码只会造成严重破坏(本身就是错误,需要处理的冲突太多等等)。 如果你可以撤消它,那不是很好吗?

如果你承诺,你可以。 如果你不这样做,你就会受苦。

记住:你犯了什么并不一定是你推什么,但你不承诺,你可以很容易失去。

只做安全和轻松的事情,尽早提交并经常提交。

据我所知,你能做的最好的就是你已经拥有的git stash 我也觉得奇怪,合并只想处理干净的树木。

  • 如果未提交本地工作
    • 并且您已经引入了远程分支中不存在的全新文件:
    • 或者受本地工作影响的文件与受远程控制所需更改影响的文件重叠ZERO:
      • 你很幸运: git pull将“正常工作”
    • 除此以外:
      • 如果您的本地更改与您正在提取的更改没有重叠:
        • git stash会起作用:
          • git stash save
          • git pull
          • git stash pop
      • 如果您的本地更改与您正在进行的更改有一些重叠:
        • git stash需要手动解决冲突:
          • git stash save
          • git pull
          • git stash pop
          • 解决合并冲突
          • git reset
          • git stash drop
  • 如果承诺本地工作
    • 受本地工作影响的文件与受影响的文件重叠
      • 你很幸运: git pull将“正常工作”
      • 但是:由于历史更清晰, git pull --rebase将“更好地工作”
      • 没有合并提交; 您的更改将在上游更改后提交
    • 除此以外:
      • git pull将需要手动解决冲突:
        • git pull
        • 解决合并冲突
        • git add FILE为每个冲突的FILE git add FILE FILE
        • git commit
      • 由于历史更清晰, git pull --rebase仍然可以“更好地工作”
        • 但是,解决合并冲突可能要困难得多

有关详细说明,请参阅: https//happygitwithr.com/pull-tricky.html

您不能告诉git merge合并对本地存储库进行更改的文件的更改。 这可以防止您在合并失败时丢失更改。

使用CVS和SVN合并方法,如果您没有在更新之前手动复制文件并且在合并时将它们加扰,则必须手动重新编辑才能恢复到良好状态。

如果您在进行合并之前提交更改或存储它们,则一切都是可逆的。 如果合并不顺利,你可以尝试几种方法使其成功,并选择效果最好的方法。

如果你确实提交了实验或调试更改,你可以使用git rebase在你通过git merge获得的提交之后移动它们,以便更容易摆脱它们或者避免意外地将它们推送到存储库。

请注意,在已推送到共享存储库的分支上使用git rebase将导致从该存储库中提取的每个人都感到悲伤。

我更喜欢在这些情况下使用git stash ,但是我只在合并更改我已编辑但未提交的文件时才使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM