使用源代码树和 git 将本地提交的更改应用于拉取的更改
Apply locally committed changes over pulled changes using source tree and git
我有一个严重的问题,我将本地更改提交到本地分支。然后,我从远程服务器上进行了拉取。然后我解决了冲突。但是,我犯的一个错误是,我不小心接受了我的远程服务器的更改。所以现在,我所有的更改都消失了。幸运的是,我仍然有我的更改的本地提交。
现在,我希望我的本地提交覆盖我拉取的文件。我不确定在 sourcetree 上执行此操作的正确方法是什么。我也可以在 sourcetree 上尝试命令行。我试图在本地 change/commit 上签出一个分支并将其标记为跟踪远程分支。但这并不是用我提交的文件覆盖它。有人知道如何解决这个问题吗?
谢谢
如果你只是想把 origin 合并的混乱的本地分支吹走,你可以。
git reset --hard goodLocalCommitHash
这将删除当前分支中 goodLocalCommitHash
之上的所有提交。
如果您还没有推送合并提交,并且在合并提交后没有进行任何提交,git reset --hard head~
将撤消合并,然后您可以再次合并。否则,您最安全的选择可能是 git checkout <commit> <filename>
,它将在您的工作目录中覆盖来自 .然后,只需提交该文件。
我有一个严重的问题,我将本地更改提交到本地分支。然后,我从远程服务器上进行了拉取。然后我解决了冲突。但是,我犯的一个错误是,我不小心接受了我的远程服务器的更改。所以现在,我所有的更改都消失了。幸运的是,我仍然有我的更改的本地提交。
现在,我希望我的本地提交覆盖我拉取的文件。我不确定在 sourcetree 上执行此操作的正确方法是什么。我也可以在 sourcetree 上尝试命令行。我试图在本地 change/commit 上签出一个分支并将其标记为跟踪远程分支。但这并不是用我提交的文件覆盖它。有人知道如何解决这个问题吗?
谢谢
如果你只是想把 origin 合并的混乱的本地分支吹走,你可以。
git reset --hard goodLocalCommitHash
这将删除当前分支中 goodLocalCommitHash
之上的所有提交。
如果您还没有推送合并提交,并且在合并提交后没有进行任何提交,git reset --hard head~
将撤消合并,然后您可以再次合并。否则,您最安全的选择可能是 git checkout <commit> <filename>
,它将在您的工作目录中覆盖来自 .然后,只需提交该文件。