代码之家  ›  专栏  ›  技术社区  ›  Olumide

git 1.7.1提交出现故障

git
  •  0
  • Olumide  · 技术社区  · 7 年前

    之前 最近由我做出的承诺(SA)——还有一个额外的复杂问题,即陆龟学家将其他人(MH)做出的改变归于我。

    git log --graph --oneline --decorate --pretty=format:"%cn committed %h on %cd"
    

    结果:

    * SA committed 3d67c9dd4 on Mon Feb 18 12:42:24 2019 +0000      ## SECOND COMMIT
    *   SA committed d6f0c4712 on Mon Feb 18 10:55:42 2019 +0000    ## FIRST PUSH (2 mins after FIRST COMMIT)
    |\
    | * MH committed c1ad3c336 on Thu Feb 14 17:07:01 2019 +0000
    | * MH committed 7442f95dd on Thu Feb 14 15:03:46 2019 +0000
    | * MH committed 417dc55e2 on Thu Feb 14 11:28:40 2019 +0000
    | * MH committed 0eea851b1 on Thu Feb 14 11:27:01 2019 +0000
    | * MH committed 72e0fa612 on Wed Feb 13 17:15:22 2019 +0000
    | * MH committed 0e80cc9d6 on Wed Feb 13 17:06:50 2019 +0000
    | * MH committed ac37fdf64 on Wed Feb 13 17:04:46 2019 +0000
    | * MH committed cb1b84489 on Wed Feb 13 17:04:18 2019 +0000
    | * MH committed f5026eee5 on Wed Feb 13 15:03:50 2019 +0000
    | * MH committed 1ca37588f on Wed Feb 13 15:01:55 2019 +0000
    | * MH committed cedcefd36 on Wed Feb 13 12:23:03 2019 +0000
    | * MH committed 0bbd26524 on Wed Feb 13 08:39:33 2019 +0000
    | *   MH committed db8b7672c on Thu Feb 7 17:41:56 2019 +0000
    | |\
    | | * MH committed fca13dfe3 on Thu Feb 7 17:36:05 2019 +0000
    | | * MH committed 704e2f3ff on Thu Feb 7 17:35:30 2019 +0000
    | * | MH committed 1b34e745c on Thu Feb 7 17:41:20 2019 +0000  #### out of place
    | |/
    | * MH committed f77456930 on Wed Feb 6 11:43:29 2019 +0000
    | * MH committed eb9849449 on Tue Feb 5 17:52:17 2019 +0000
    | * MH committed 889f94b00 on Tue Feb 5 15:45:19 2019 +0000
    | * MH committed ae4505a10 on Tue Feb 5 13:47:42 2019 +0000
    | * MH committed 561c703b6 on Tue Feb 5 13:47:07 2019 +0000
    | * MH committed 43b4941f8 on Tue Feb 5 13:45:01 2019 +0000
    * | SA committed 2336ac0c7 on Mon Feb 18 10:53:49 2019 +0000  ## FIRST COMMIT -- sandwiched BETWEEN earlier commits!!!
    |/
    * MH committed 87fcf83a2 on Mon Feb 4 11:25:38 2019 +0000
    * MH committed ea096edd3 on Fri Feb 1 17:12:01 2019 +0000
    * MH committed c51cd83d3 on Fri Feb 1 10:27:52 2019 +0000
    

    更新

    更新2 似乎归因于我(由陆龟学家在d6f0c4712上)的令人困惑的承诺实际上是“与父1的差异”(无论这意味着什么)。列出了我的实际提交 以下为“与父项2的差异”。

    0 回复  |  直到 7 年前
        1
  •  1
  •   joanis Ankur Kumar Srivastava    7 年前

    TL;博士

    git log --date-order
    

    git log --date-order --graph --oneline --decorate --pretty=format:"%cn committed %h on %cd"
    

    细节

    我能够用Git 1.7.1在CentOS 6机器上重现您的场景。(我们也有一个较新的Git,但1.7.1版本仍然存在。)

    当有一个合并提交时,Git(new and new)似乎把合并在一起的分支视为“最近”,这是有意义的,如果你这样想:我在分支上做了一个改变,然后我合并到其他人的改变中,所以这是最后一件事情发生了。

    简单的解决方案是提供 --date-order 到 git log .

    订购日期:

    $ git log --date-order --graph --oneline --decorate --pretty=format:"%cn committed %h on %cd"
    *   j committed c767018 on Tue Feb 19 06:40:26 2019 -0500
    |\
    * | j committed f0fe88c on Tue Feb 19 06:40:10 2019 -0500
    | * j committed 29b783b on Tue Feb 19 06:39:55 2019 -0500
    |/
    *   j committed c592f81 on Tue Feb 19 06:34:38 2019 -0500
    

    非日期订单:

    $ git log --graph --oneline --decorate --pretty=format:"%cn committed %h on %cd"
    *   j committed c767018 on Tue Feb 19 06:40:26 2019 -0500
    |\
    | * j committed 29b783b on Tue Feb 19 06:39:55 2019 -0500
    * | j committed f0fe88c on Tue Feb 19 06:40:10 2019 -0500
    |/
    *   j committed c592f81 on Tue Feb 19 06:34:38 2019 -0500
    

    关于所有这些合并气泡的注释

    在我的工作流程中,我不喜欢看到历史上所有的合并气泡。当我在中合并一个特性分支或bug分支时,我希望将其视为一个合并,但当它只是打开时 master

    当你做一个 git pull 还有一些本地提交尚未推送,默认情况下Git(旧的和新的)会将远程更改合并到本地分支中,创建一个气泡,就像我在上面重新创建的一样,就像您的历史显示的那样。

    git pull --rebase 相反

    我的首选工作流:使用 git fetch origin 加入 --all 那么命令 git rebase origin

    git fetch
    git log --all --date-order --graph --oneline --decorate ...
    

    或

    git log master origin/master --date-order --graph  --online --decorate ...
    

    git rebase origin
    

    关于重定基址的通常警告适用于:避免重定你以前推动过的任何东西的基址。对于仅存在于沙箱中的本地提交,这是一个好主意。