首先我要说我是 git 的新手。但是,这似乎是一个非常简单的场景,我看不出问题出在哪里。这是场景:
我在主分支上有一些我不想要的未提交的更改。我需要进行单独的简单更改以打包到补丁中。所以我这样做:
我找到了最后一次提交到 master 分支的哈希#,它是 ffdd99afc89211e9ddc3efa3415b0adaf0076b4b。
所以我从我的存储库的根目录开始:
git branch my_patch ffdd99afc89211e9ddc3efa3415b0adaf0076b4b
git checkout -f my_patch
现在我编辑三个文件并添加第四个文件,然后我这样做:
git add [path to the added file]
git status
这列出了三个更新的和一个添加的文件
git commit -a
git status
没有发现变化
git format-patch master --stdout > my_patch.patch
至此一切都很好。现在我想把这个分支 merge 回 master。
git checkout master
git status
没有发现变化
git merge my_patch
输出是:
Updating ffdd99a..e2754ca
error: Your local changes to 'Blah.cs' would be overwritten by merge.
Aborting. Please, commit your changes
or stash them before you can merge.
现在,如果我执行 git status
,我会列出大量更改。这对任何人都有意义吗?
最佳答案
如果您不想在开始时进行更改,请执行 git reset --hard
。如果那里有您不想执行的未跟踪文件,也可以执行 git clean -df
。
至于最后的错误消息,您可能遇到了路径中的大小写问题。这是在带有 msysgit 的 Windows 上吗?
如果您使用的是 Windows,请确保将 autocrlf 设置为 false。
关于git - git 中的快进 merge 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4762720/