晚上好!
我知道这很常见,互联网上可能有成千上万的答案,但我找不到一个很好的答案。
我有两个本地分支机构:
- 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
答案 0 :(得分:8)
由于没有--theirs
strategy(即使有ways to simulate it),你不能:
git checkout mk && git merge -s ours 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中的文件/路径内容。您可以传递路径而不是精确文件,它将检出该路径中不同的所有文件。