代码之家  ›  专栏  ›  技术社区  ›  Łukasz Lew

Git:进入提交阶段,什么是正确的工作流?

  •  21
  • Łukasz Lew  · 技术社区  · 16 年前

    我刚刚创建了一大块代码,我想在几个单独的提交中提交。
    所以我可以阶段相关部分,提交,阶段,提交,…等等,直到我提交了所有的变更。

    缺少的部分是如何测试我是否正确地拆分提交。
    也就是说,在临时区域的部分是否至少编译?

    要做到这一点,我必须以某种方式使我的工作树与索引(临时区域)保持同步,而不会丢失稍后要提交的更改。

    什么是 正确的 怎么办?
    什么是 最快的 怎么办?

    更新:
    怎么用法师?

    2 回复  |  直到 14 年前
        1
  •  16
  •   Community Mohan Dere    9 年前

    你可以用以下方法来做:

    $ git branch task1 # first set of commit to do
    

    当您缓慢地向索引添加一些内容时,中间分支可以用来记录一些中间提交。

    然后尝试一个 interactive session for adding 你想要什么:

    $ git add -i
    

    随时添加要检查添加内容的内容:

    $ git stash --keep-index
    

    如果编译, git commit 你目前的工作,如果 task1 尚未完成, git stash pop 恢复完整的工作树并重复。

    一次 任务1 完全烤熟了,你可以 trim all those ' task1 ' commits ,并合并主控形状中的所有工作:

    $ git checkout master
    $ git merge task1
    $ git branch -D task1 # no need for that intermediate branch
    

    如果你想保存一些重要的历史 任务1 提交,您可以先重新备份 任务1 在主控形状上,合并之前 master 在里面 任务1 (快进)

    最后,如果您的藏品仍然包含一些正在进行的工作,请重复以下所有过程: task2 .

        2
  •  0
  •   vaab    14 年前

    以下是我使用的一种巧妙方法:

    • 使用magit“U”或“S”使索引第一次提交到阶段或取消标记hunk/files/region。(这也可以用git-gui实现)。一旦您的索引准备好提交:
    • 用“c”提交,编写提交消息,用ctrl-c ctrl-c提交。
    • 在“Z”后加上<<Enter>,这将存储您的所有更改。要返回更改,可以在指针位于正确的存储项上时使用“a”。

    进行测试以检查您的提交是否良好。如果必须进行任何更改,请像以前一样重做,但在提交消息的屏幕中,在提交之前按ctrl-c ctrl-a。这将修改(完成)您最后的提交,而不是创建新的提交。

    请注意,如果您稍后发现某些代码应该修改最后一次提交之前的提交,您应该自己提交代码(带有临时摘要),并在“l”访问日志屏幕的情况下将其折叠到正确的提交中,然后将指针指向两个提交之前,您希望挤压,然后按“e”启动“git rebas”E-I“会话”。 重新排序提交,以便临时摘要“修复”目标提交。退出缓冲区,tada。一切都结束了。