这是我的github主分支的日志:
---newest commits---
dfnjk35 - I dont want theese changes
fsdjk5k - I dont want theese changes
sdfnjk5 - ok
zchnjk4 - ok
jqwio75 - I dont want theese changes
dsfnk51 - I dont want theese changes
asnmm12 - ok
hfgaut1 - ok
zxdfsd2 - ok
---oldest commits---
如何摆脱不需要的更改?我想拥有asnmm12
,zchnjk4
和sdfnjk5
的状态。我不想再搞砸了,所以请寻求帮助。
答案 0 :(得分:3)
鉴于您的分支机构已在GitHub上发布,因此重写历史记录基本上已不在桌面上。在这种情况下,我建议您使用git revert
从功能上撤消您不需要的提交:
git revert dsfnk51
git revert jqwio75
git revert fsdjk5k
git revert dfnjk35
这些命令将在分支的顶部创建四个 new 提交,这些提交将在功能上撤消所做的操作。请注意,此处 可能不建议使用交互式rebase,因为重写共享公共分支的历史记录可能会对共享该共享分支的其他任何人造成破坏。
请注意,执行git revert
可能会导致冲突。如果发生这种情况,则必须解决冲突,git add
解决冲突文件,然后git commit
。我还假设您在上面显示的范围内没有合并提交。
答案 1 :(得分:0)
学习使用Git的交互式变基功能,太好了。
git rebase -i COMMIT-ID
将打开一个编辑器,并要求您选择从COMMIT-ID开始的每次提交要做什么。您可以选择将多个提交压缩在一起,也可以将其完全删除(这可能会影响以后的提交是否干净应用,因此您可能必须进行一些冲突解决)。
因此,运行git rebase -i zxdfsd2
,然后在编辑器中,只需删除不需要的提交行,Git将在没有这些提交的情况下重新创建分支。
另一种方法是创建一个新分支,将您要提交的内容挑选到该分支上,然后将其置于所需状态,将master
重置为该分支。
在这两种情况下,您都在重写历史记录,因此,如果该分支已经在任何地方发布并且被其他任何人使用(如果您继续重写历史记录),请非常非常谨慎操作取回旧历史记录的任何人都需要重置其本地分支以与重写的历史记录重新同步。
答案 2 :(得分:0)
使用git cherry-pick命令从要提交的主分支和樱桃选择提交创建新分支