我将在前言中说我对git很新。然而,这似乎是一个非常简单的场景,我无法看到问题的来源。这是场景:
我在主分支上有一些我不想要的未提交的更改。我需要进行单独的简单更改以打包到补丁中。所以我这样做:
我找到了对主分支的最后一次提交的哈希#,即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
到目前为止一切都很好。现在我想把这个分支合并回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
,我会列出一大堆变化。这对任何人都有意义吗?
答案 0 :(得分:0)
如果您在开始时不想要更改,请执行git reset --hard
。如果那里有你没有需要的未跟踪文件也可以git clean -df
。
至于最后的错误消息,您可能在路径中出现套管问题。这是在Windows上w / msysgit吗?
如果您使用的是Windows,请确保将autocrlf设置为false。