Cherry-pick并将一系列提交压缩到子目录或子树中

时间:2016-02-01 04:41:43

标签: git git-cherry-pick git-squash

我怎么能告诉樱桃选择一个被压缩的提交范围?

或者换句话说,将两次提交之间的差异应用于存储库的当前状态?

以下工作(cherry-pick没有--squash选项):

<?xml version="1.0" encoding="UTF-8"?>
<FileZilla3 version="3.14.1" platform="windows">
    <Queue>
        <Server>
            <Host>ftp.site.com</Host>
            <Port>21</Port>
            <Protocol>0</Protocol>
            <Type>0</Type>
            <User>ftp.site.com|CORP\user</User>
            <Pass encoding="base64">XXXX</Pass>
            <Logontype>1</Logontype>
            <TimezoneOffset>0</TimezoneOffset>
            <PasvMode>MODE_DEFAULT</PasvMode>
            <MaximumMultipleConnections>0</MaximumMultipleConnections>
            <EncodingType>Auto</EncodingType>
            <BypassProxy>0</BypassProxy>
            <Name>SiteName</Name>
            <File>
                <LocalFile>C:\XXX.txt</LocalFile>
                <RemoteFile>XXX.txt</RemoteFile>
                <RemotePath>1 0</RemotePath>
                <Download>0</Download>
                <Size>635529</Size>
                <DataType>0</DataType>
            </File>
        </Server>
    </Queue>
</FileZilla3>

注意:我的用例属于子树场景 - 在任何人开始争论我不应该压制之前。

以下工作,但后来我有一系列单独的提交。之后,我可以使用交互式rebase手动压缩它们。

git cherry-pick --squash e064480..eab48b59c

作为樱桃挑选的一部分,有没有办法挤压?

3 个答案:

答案 0 :(得分:69)

-n传递给git cherry-pick。这将应用所有提交,但不提交它们。然后只需执行git commit即可在一次提交中提交所有更改。

答案 1 :(得分:0)

跟随master =>樱桃从另一个分支中选择两次提交

git checkout master

git cherry-pick:1

git cherry-pick:2

git reset --soft HEAD〜2(樱桃选择提交的次数,即2)

git add。

git commit

答案 2 :(得分:0)

在某些用例中,git cherry-pick -ngit merge --squash的替代方案可能是localVideoId-例如,当您想在集成分支之上测试功能分支的更改而无需重新定基础时。

来源:What's the difference between git merge --squash and git cherry-pick?