# first git checkout the correct branch
git rebase -i 376c762c1b28f927595010e98e4ee82d6bc63de3
然后,您将获得提交哈希提交后的所有提交的列表,以及提交消息的一部分。
pick 376c762 Commit with wrong file
pick e145ef2 Fourth before last commit
pick d969e5b Third before last commit
pick 7b92c09 Second before last commit
pick db1dea3 First before last commit
pick ff120d6 Most recent commit message
# Rebase 621d70a..ff120d6 onto 621d70a (6 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup [-C | -c] <commit> = like "squash" but keep only the previous
# commit's log message, unless -C is used, in which case
# keep only this commit's message; -c is same as -C but
# opens the editor
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
...
4条答案
按热度按时间mqkwyuun1#
您可以通过以下命令恢复用于推送这些目录的提交
假设不想要的提交位于HEAD的顶部。
如果它在一些提交之前说谎,试试这个
这将恢复HEAD中倒数第四次提交所指定的更改。(您需要根据不需要的提交的位置更改数字'3'。)
检查
git status
,您应该能够看到那些不需要的目录,因为您的本地更改还没有提交。谢谢!
gajydyqb2#
你可以删除远程分支中的所有文件通过推送一个空的本地分支-
假设您要删除
origin
的分支trial
,则可以执行git push origin :trial
zwghvu4y3#
确保您确实删除了这些文件
然后从git中删除:
最后提交并推送:
假设当前分支是master。
v6ylcynt4#
不久前我也遇到过类似的问题,我使用交互式重定基解决了它。
你要做的就是找到你想要修改的提交之前的提交的哈希值,假设哈希值是
376c762c1b28f927595010e98e4ee82d6bc63de3
然后,您将获得提交哈希提交后的所有提交的列表,以及提交消息的一部分。
这里你可以做的是将提交前的单词从
pick
改为edit
。然后保存文件并退出
Ctr + X
、Y
和Enter
(如果使用nano)。在提交之后,你会被拉回到命令行。你可以执行以下操作来撤销之前的提交。文件和你将拥有未提交的更改。提示符将显示你当前所在提交的提交哈希的前7个字符。
然后,您可以从提交中删除/添加/更改文件,添加并提交更改。要继续变基,请执行以下操作:
如果在以后的提交中更改了相同的文件,您可能会遇到冲突,您必须先修复并提交,然后才能执行
--continue
。