如何将许多提交组合成一个,然后将它们分成两三个



在我的本地存储库中,我对代码进行了许多更改。在这样做的过程中,我拉了几次,创建了不同的分支,犯了很多次,合并等等。但是,好事是我所做的一切,我只在本地做。我从来没有推到远程存储库。因此,尽管我执行的GIT的所有复杂动作都存在,但我仍然有一个非常简单的心理图片:(1)远程存储库上有代码,(2)我本地有代码。现在,我想通过以下内容清理所有内容:

  1. 我想看看遥控器和本地存储库上的代码有什么区别。
  2. 我想打包我拥有的所有更改,以便它们看起来像是来自一个提交(带一个提交消息)。我不希望我到目前为止生成的所有提交消息都可以转到远程存储库。
  3. 我可能还想将我的更改分为两个或三个部分(每个部分都以相应的提交消息为单独的提交)。

可以使用git做到吗?而且,如果是这样,我该怎么做?

  1. git fetch --all && git diff master origin/master
  2. git checkout -b new-master && git branch -D master && git checkout master && git merge --squash new-master
  3. 与上面相同,但是在返回主人之前,您应该使用git rebase -i重写new-master
  4. 的历史

1的工作很简单:从远程存储库中获取最新更改,并将您的本地更改与之进行比较。假设主是您要比较的分支。

2的作用更为复杂。它从您的本地更改中创建一个新的分支,然后删除您的本地主(再次假设这是您的工作分支)。之后,它再次检查了主,这为您提供了远程存储库的主分支的副本。然后,git合并 - 平方合并了您从new-master的所有更改,并将它们添加到master

关于3。我建议您阅读git rebase

假设您处于以下情况:

 o--o--o--o--o--o--o [remote branch]
                  
         o--o (... lots of commits ...) o--o [your branch]

要找出本地分支和远程分支之间的差异,请使用

$ git diff <your branch> <remote branch>

创建一个或多个提交,将您的作品应用于远程分支的顶部,请执行以下操作:

  1. 创建并切换到远程分支已经指向的同一提交的新分支:

    $ git checkout -b <new branch> <remote branch>
    

    这将导致:

     o--o--o--o--o--o--o [remote branch] [new branch]
                      
             o--o (... lots of commits ...) o--o [your branch]
    
  2. 将新分支与您现有分支之间的差异复制到索引,准备新提交:

    $ git checkout -p <your branch>
    

    一旦满意,创建一个提交:

    $ git commit
    

    导致:

                         o [new branch]
                        /
     o--o--o--o--o--o--o [remote branch]
                      
             o--o (... lots of commits ...) o--o [your branch]
    

    重复git checkout -pgit commit,直到新分支和现有本地分支之间没有更多差异:

                         o--o--o--o [new branch]
                        /
     o--o--o--o--o--o--o [remote branch]
                      
             o--o (... lots of commits ...) o--o [your branch]
    
  3. 将您的新分支推向遥控存储库,或提出拉动请求,或者项目的工作流程是什么。

git rebase将帮助您。

将您最近的提交分开,首先:

$ git reset HEAD~

您可以提交您想要的不同作品。

为了加入不同的提交,您可以使用壁板查找要在顶部壁板的提交哈希,然后使用:

git reset *mentioned_hash*

相关内容

最新更新