git 如何在我拉取并重基后从我的提交中删除其他人的代码?

bxfogqkk  于 2023-08-01  发布在  Git
关注(0)|答案(1)|浏览(89)

我从development branch创建了一个新的分支,并开始编写代码并将其推送到GitHub。
但过了一段时间,开发分支更新了。
因此,我需要更新更改并重新构建代码的基础。
我检查了开发并做了git pull,然后我再次检查了新分支并做了git rebase development
之后,我将提交推到remote,现在它显示在我的提交中有来自其他人提交的代码。
我看了一些文件,但不知道我到底应该怎么做。
如何在重定基前回到以前的状态?
或者我能从现在的Angular 解决这个问题吗?

y1aodyip

y1aodyip1#

如何在重定基前回到以前的状态?

撤销rebase操作

您可以使用git reflog命令查看git中的历史记录。它记录了本地存储库中对分支尖端和其他引用的更新时间。默认值为gc(垃圾收集)前90天。
你会看到一个列表,上面列出了你在Git中所有分支上所做的每一件事。每一行将以类似HEAD@{5}的索引开始,并显示HEAD在该时间点指向的内容。找到你想回到的地方,并使用索引将HEAD重置到该点。

git reset --hard HEAD@{5}

字符串
使用git reset --hard命令时要小心。它将删除所有未提交的更改。
或者我能从现在的Angular 解决这个问题吗?

交互式的rebase和drop commit

首先,找到你想要返回的提交哈希。这应该是您要删除的第一个提交之前的提交。你可以使用git log命令来找到它。
一旦你得到了提交的哈希值,你就可以开始一个交互式的与提交父对象的变基。

git rebase -i <commit-hash>^


在出现的文本编辑器中,你会看到一个将被重定基(回放)的提交列表。要删除提交,请删除该行或将pick替换为dropd。完成后,保存并退出编辑器。
然后Git会重放剩下的提交。如果有冲突,它会暂停并允许您解决这些冲突;之后,您可以继续使用git rebase --continue进行变基。
如果您决定在任何时候停止整个过程并返回到原来的位置,则可以使用git rebase --abort
完成后,您可以将更改推送到远程存储库。
如果分支之前被推送过,你需要使用git push --force origin branch-name来强制推送。
警告:如果其他人正在同一个分支上工作,强制推送可能是危险的,因为它可能会覆盖他们的更改。最好在用力推球之前与你的团队进行沟通。
mention heregit push --force-if-includes可以帮助确保这一步。

相关问题