Git不会让我合并

时间:2013-03-24 17:44:03

标签: git merge branching-and-merging git-merge

晚上好!

我知道这很常见,互联网上可能有成千上万的答案,但我找不到一个很好的答案。

我有两个本地分支机构:

  
      
  • MASTER
  •   
  • 的Mk
  •   

我对Mk进行了很多更改,提交了这些更改,并切换到MASTER以合并这两个分支。但是有冲突。所以现在我在MASTER分支上,不能再切换到Mk了,但需要用Mk覆盖我的MASTER。

一直在说

  

错误:合并

会覆盖对以下文件的本地更改

有办法做到这一点吗?

 git mergetool --tool=meld    #No files need merging
 git merge -s theirs Mk       #Could not find merge strategy 'theirs'.
 git merge -X recursive=theirs Mk   # error: Your local changes to the following files 

将被合并覆盖

我还没有将我的更改推送到我的在线存储库。

我可以看到所有更改的提交但无法访问其代码。

刚刚开始使用git,但从未遇到像麻烦这样的麻烦 那之前。我真的很感激我能得到的任何帮助:s

4 个答案:

答案 0 :(得分:8)

由于没有--theirs strategy(即使有ways to simulate it),你不能:

  • 将第一个主人合并到mk:git checkout mk && git merge -s ours master
  • 合并mk到master(快进):git checkout master && git merge mk

-s ours策略会确保您在发生冲突时保留mk版本。

答案 1 :(得分:4)

请确保您使用的是MASTER的干净工作副本。

git merge -s recursive -X theirs Mk

答案 2 :(得分:0)

我不知道如何更改主分支的某些文件的文件权限。

git diff:

diff --git a/app/Resources/views/base.html.twig b/app/Resources/views/base.html.twig
old mode 100644
new mode 100755

我做出了所做的更改:

git commit --all -m "changes permissions from 644 to 755"

之后我能够合并分支,好像什么都没发生一样

git merge Mk 

虽然我知道这不是最优雅的解决方案..但我很高兴我的代码回来了!现在我只需要弄清楚如何撤销此权限更改。谢谢你的帮助!

答案 3 :(得分:0)

  
    

错误:合并

会覆盖对以下文件的本地更改   

这通常是因为您有未提交的更改将被覆盖。所以首先你需要通过(1)提交或(2)存储来处理它:

git add .; git commit -m "committing my workz"
# or
git add.; git stash

现在尝试合并。也许你有冲突。您希望mk中的所有更改优先于master中的任何更改,因为git对于有时检测冲突(例如,没有真正的冲突)有点过于敏感,或者因为任何人都承诺{ {1}}是一个笨蛋:

master

BOOM!拧git checkout master git merge mk # oh noes! merge conflicts # CONFLICT (content): Merge conflict in foo_bar.txt git checkout mk -- foo_bar.txt git commit 。你不是我的主人。

注意:master通常用于将git checkout(并更新您的工作目录)重新分配到分支/标记/ SHA /等等,但如果您HEAD它不会重新命名您的git checkout SHA -- file,而不是更新您在HEAD之后传递的文件,以反映您传递的SHA中的文件/路径内容。您可以传递路径而不是精确文件,它将检出该路径中不同的所有文件。