我是Git的新手。我想删除分支TAI-18
中除最后一个提交以外的所有先前提交,并只想推送最新的提交,以便将请求与master合并。
例如:
commit_c
commit_b
commit_a
在commit_a
是初始提交的地方,除了commit_c
我想删除所有的提交,例如commit_b
和commit_a
有人可以帮助我吗?
答案 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分支上同时更新了相同的文件,则可能存在冲突,您将必须解决这些冲突。