我想先声明一下,我对Git还比较新手。不过这似乎是一个相当简单的情况,我看不出问题来自哪里。以下是情景描述:
我在主分支上有一些未提交的更改,但我不想要它们。我需要进行一个独立的简单更改,以便打包成一个补丁。所以我这样做:
我找到主分支最后一次提交的哈希值,即ffdd99afc89211e9ddc3efa3415b0adaf0076b4b。
然后从我的仓库根目录中执行以下操作:
这里列出了三个已更新的文件和一个新增加的文件。
其输出结果为:
我在主分支上有一些未提交的更改,但我不想要它们。我需要进行一个独立的简单更改,以便打包成一个补丁。所以我这样做:
我找到主分支最后一次提交的哈希值,即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
到这一步都很顺利。现在我想将这个分支合并回主分支。
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
,会列出一大堆更改。这对任何人都有意义吗?