5

晚上好!

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

我有两个本地分支机构:

  • 掌握
  • 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

4 回答 4

8

既然没有--theirs策略(即使有办法模拟它),你能不能:

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

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

于 2013-03-24T17:52:53.377 回答
5

可以肯定的是,您使用的是一份干净的 MASTER 工作副本。

git merge -s recursive -X theirs Mk
于 2015-01-14T09:17:09.993 回答
0

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

混帐差异:

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 

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

于 2013-03-24T20:32:16.243 回答
0

错误:您对以下文件的本地更改将被合并覆盖

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

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

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

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通常用于重新指向HEAD(并更新您的工作目录)到分支/标签/SHA/whatever,但如果您这样做git checkout SHA -- file,它不会重新指向您的HEAD,而是会更新您在之后传递的文件--以反映该文件/您传递的 SHA 中的路径内容。您可以传递路径而不是确切的文件,它将检查该路径中不同的所有文件。

于 2013-08-09T20:50:27.373 回答