除了最后一次提交,删除之前的所有提交

时间:2019-07-08 12:04:51

标签: git

我是Git的新手。我想删除分支TAI-18中除最后一个提交以外的所有先前提交,并只想推送最新的提交,以便将请求与master合并。

例如:

commit_c
commit_b
commit_a

commit_a是初始提交的地方,除了commit_c我想删除所有的提交,例如commit_bcommit_a

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

具有提交:

commit_c
commit_b
commit_a
commit_0

执行git rebase -i commit_0,您将看到vi界面(或它的配置方式):

pick abc1234 commit_c message
pick bcd3455 commit_b message
...

更改(按 i 进行插入操作)pick到要删除的delete / d / #中的一个。所有更改都会永久删除。

UPDATE 就像您说的那样,要保留更改,只需使用一次提交,然后可以将pick替换为squash / s({{ 1}})。它将更改从该提交更改为上一个提交的任何内容。


如果您的commit_c是初始提交,只需重置所有提交并重做历史记录

答案 1 :(得分:1)

对于原始问题: 最简单的方法可能是创建一个包含旧分支内容的新的孤立分支:

git branch -f original_branch_name

写一些合理的提交消息,以描述该提交是旧分支的壁球。如果一切正常,您现在可以将原始分支指针移至该提交:

git checkout master
git merge --squash TAI-18

有关更新的问题:

似乎您正在寻找的是壁球合并:

TAI-18

这将采用from skimage import io example = io.imread("example.png", as_gray=True) print(example.shape) print(example) plt.imshow(example) 分支上引入的所有更改,并在master分支上创建一个包含所有这些更改的提交。

如果在master分支上同时更新了相同的文件,则可能存在冲突,您将必须解决这些冲突。