git - git 中的快进 merge 失败

标签 git merge

首先我要说我是 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/

相关文章:

git - 有没有办法在 Git 中不使用 Commit 或 Stash 来保存我当前的更改?

git - 如何判断当前工作目录是否被 Git 忽略?

windows - Windows Docker git : cd: . git 错误:不是目录

python - 将两个列表合并在一起

sql - ORACLE 12c 唯一约束在 MERGE 命令中失败,该命令匹配索引中的所有列

git - 如何将 git repo 添加到项目的工作目录

linux - `gh cli` 失败 `git@github.com: Permission denied (publickey)` 但 `gh desktop` 没有问题

git - 需要帮助来理解 merge 冲突示例

java - 如何合并两个文本文件中的数据

python - 如何在连接时合并大型数据框并消除不相关的列?