我从development branch创建了一个新的分支,并开始编写代码并将其推送到GitHub。
但过了一段时间,开发分支更新了。
因此,我需要更新更改并重新构建代码的基础。
我检查了开发并做了git pull
,然后我再次检查了新分支并做了git rebase development
。
之后,我将提交推到remote,现在它显示在我的提交中有来自其他人提交的代码。
我看了一些文件,但不知道我到底应该怎么做。
如何在重定基前回到以前的状态?
或者我能从现在的Angular 解决这个问题吗?
1条答案
按热度按时间y1aodyip1#
如何在重定基前回到以前的状态?
撤销rebase操作
您可以使用
git reflog
命令查看git中的历史记录。它记录了本地存储库中对分支尖端和其他引用的更新时间。默认值为gc(垃圾收集)前90天。你会看到一个列表,上面列出了你在Git中所有分支上所做的每一件事。每一行将以类似
HEAD@{5}
的索引开始,并显示HEAD在该时间点指向的内容。找到你想回到的地方,并使用索引将HEAD重置到该点。字符串
使用
git reset --hard
命令时要小心。它将删除所有未提交的更改。或者我能从现在的Angular 解决这个问题吗?
交互式的rebase和drop commit
首先,找到你想要返回的提交哈希。这应该是您要删除的第一个提交之前的提交。你可以使用
git log
命令来找到它。一旦你得到了提交的哈希值,你就可以开始一个交互式的与提交父对象的变基。
型
在出现的文本编辑器中,你会看到一个将被重定基(回放)的提交列表。要删除提交,请删除该行或将
pick
替换为drop
或d
。完成后,保存并退出编辑器。然后Git会重放剩下的提交。如果有冲突,它会暂停并允许您解决这些冲突;之后,您可以继续使用
git rebase --continue
进行变基。如果您决定在任何时候停止整个过程并返回到原来的位置,则可以使用
git rebase --abort
。完成后,您可以将更改推送到远程存储库。
如果分支之前被推送过,你需要使用
git push --force origin branch-name
来强制推送。警告:如果其他人正在同一个分支上工作,强制推送可能是危险的,因为它可能会覆盖他们的更改。最好在用力推球之前与你的团队进行沟通。
我mention here的
git push --force-if-includes
可以帮助确保这一步。