我从遥控器拉出一个不同的分支。两个分支是不同的,但合并在我当前的分支上默默发生。我目前在本地工作“master”分支,并且已经更新了远程分支的变化 - “FE_Changes”。
如何从主分支中删除“FE_Changes”分支的效果?
答案 0 :(得分:16)
git reset --hard HEAD~1
这将破坏您当地分支机构的最新提交。假设您的拉策略是合并,那么本地主分支上应该只有一个恶意提交。你提到“合并是默默发生的”,所以这应该适合你的情况。一旦修复了主分支,就可以再次拉动,这次确保从正确的远程分支拉出来。
答案 1 :(得分:7)
除了蒂姆的回答: 如果要重置为特定提交:
git reflog
将显示所有最近提交的ID
然后你可以执行:
git reset --hard <specific id>
重置为该特定提交。
答案 2 :(得分:1)
扩展已接受的答案;
git reset --hard HEAD~1
Git reset 是一个强大的命令,用于撤消对 Git 存储库状态的本地更改。 Git reset 对“Git 的三棵树”进行操作。这些树是提交历史记录 ( HEAD )、暂存索引和工作目录。
这是最直接、最危险、最常用的选项。传递时,此命令会导致提交历史记录引用指针更新为指定的提交。然后,临时索引和工作目录被重置以匹配指定提交的索引和工作目录。任何先前对暂存索引和工作目录的未决更改都会重置以匹配提交树的状态。这意味着暂存索引和工作目录中的所有待处理工作都将丢失。
使用 '~' 返回多次提交。 HEAD~1 将当前分支向后移动一个提交,有效地从项目历史中删除刚刚创建的 1 个快照。请记住,这种重置只能用于未发布的提交。如果您已经将提交推送到共享存储库,请不要执行上述操作。
答案 3 :(得分:0)
您只需使用以下命令即可完成
git fetch origin
git reset --hard origin/master