zoukankan      html  css  js  c++  java
  • git修改commiter date

    GIT: change commit date to author date

     git filter-branch --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"' 

    Short Answer:

    git filter-branch --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"'
    

    Explanation:

    filter-branch lets you rewrite your git history. It can apply transformations to each commit or filter out commits based on certain criteria. See git filter-branch --help for a comprehensive description and usage instructions.

    --env-filter allows you to set the environment variables that are present during the creation of the new history. It is evaluated for each commit separately.

    https://git-scm.com/docs/git-filter-branch

    --env-filter <command>

    This filter may be used if you only need to modify the environment in which the commit will be performed. Specifically, you might want to rewrite the author/committer name/email/time environment variables (see git-commit-tree[1] for details).

    The --env-filter option can be used to modify committer and/or author identity. For example, if you found out that your commits have the wrong identity due to a misconfigured user.email, you can make a correction, before publishing the project, like this:

    git filter-branch --env-filter '
    	if test "$GIT_AUTHOR_EMAIL" = "root@localhost"
    	then
    		GIT_AUTHOR_EMAIL=john@example.com
    	fi
    	if test "$GIT_COMMITTER_EMAIL" = "root@localhost"
    	then
    		GIT_COMMITTER_EMAIL=john@example.com
    	fi
    ' -- --all

    To restrict rewriting to only part of the history, specify a revision range in addition to the new branch name. The new branch name will point to the top-most revision that a git rev-list of this range will print.

    Consider this history:

         D--E--F--G--H
        /     /
    A--B-----C

    To rewrite only commits D,E,F,G,H, but leave A, B and C alone, use:

    git filter-branch ... C..H

    To rewrite commits E,F,G,H, use one of these:

    git filter-branch ... C..H --not D
    git filter-branch ... D..H --not C



    Example

    git filter-branch ... origin/master..master --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"'

    错误提示

    Cannot create a new backup.
    A previous backup already exists in refs/original/
    Force overwriting the backup with -f

     

    错误处理

    方法1 加上-f参数

    git filter-branch ... origin/master..master --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"' -f
    fatal: ambiguous argument 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"': unknown revision or path not in the working tree.
    Use '--' to separate paths from revisions, like this:
    'git <command> [<revision>...] -- [<file>...]'

    把-f参数放前面更好,

    git filter-branch -f ... 67d9d9..f70bf4 --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"'

    方法2 

    Use this command to remove original backup:

    git update-ref -d refs/original/refs/heads/master
    

    Here is gist I used to filter-branch my git repo: https://gist.github.com/k06a/25a0214c98bc19fd6817

     错误的详细信息

    $ git_trace=1 gcm_trace=1 git filter-branch -f ... 67d9d9..f70bf4 --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"'
    23:57:28.715959 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/bin
    23:57:28.720945 git.c:676 trace: exec: git-filter-branch -f ... 67d9d9..f70bf4 --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"'
    23:57:28.720945 run-command.c:643 trace: run_command: git-filter-branch -f ... 67d9d9..f70bf4 --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"'
    23:57:29.016157 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
    23:57:29.018152 git.c:419 trace: built-in: git hash-object -t tree nul
    23:57:29.159774 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
    23:57:29.605584 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
    23:57:29.610570 git.c:676 trace: exec: git-sh-i18n--envsubst --variables 'usage: $dashless $USAGE'
    23:57:29.610570 run-command.c:643 trace: run_command: git-sh-i18n--envsubst --variables 'usage: $dashless $USAGE'
    23:57:29.647472 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
    23:57:29.755185 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
    23:57:29.762166 git.c:676 trace: exec: git-sh-i18n--envsubst 'usage: $dashless $USAGE'
    23:57:29.762166 run-command.c:643 trace: run_command: git-sh-i18n--envsubst 'usage: $dashless $USAGE'
    23:57:29.803057 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
    23:57:30.180050 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
    23:57:30.182045 git.c:419 trace: built-in: git rev-parse --git-dir
    23:57:30.364558 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
    23:57:30.366552 git.c:419 trace: built-in: git rev-parse --show-cdup
    23:57:30.644809 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
    23:57:30.646804 git.c:419 trace: built-in: git rev-parse --git-path objects
    23:57:30.838293 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
    23:57:30.840287 git.c:419 trace: built-in: git rev-parse --is-bare-repository
    23:57:30.981909 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
    23:57:30.984902 git.c:419 trace: built-in: git rev-parse --verify HEAD
    23:57:31.134502 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
    23:57:31.145474 git.c:419 trace: built-in: git update-index -q --ignore-submodules --refresh
    23:57:31.294076 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
    23:57:31.307041 git.c:419 trace: built-in: git diff-files --quiet --ignore-submodules
    23:57:31.449662 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
    23:57:31.460631 git.c:419 trace: built-in: git diff-index --cached --quiet --ignore-submodules HEAD --
    23:57:32.077983 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
    23:57:32.088954 git.c:419 trace: built-in: git for-each-ref
    23:57:32.247530 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
    23:57:32.250523 git.c:419 trace: built-in: git rev-parse --no-flags --revs-only --symbolic-full-name --default HEAD ... 67d9d9..f70bf4 --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"'
    23:57:32.817010 exec-cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
    23:57:32.819004 git.c:419 trace: built-in: git rev-parse --no-revs ... 67d9d9..f70bf4 --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"'
    fatal: ambiguous argument 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"': unknown revision or path not in the working tree.
    Use '--' to separate paths from revisions, like this:
    'git <command> [<revision>...] -- [<file>...]'

    发现命令参数的位置有问题,做出如下调整(commits的范围要放在最后面)

    https://stackoverflow.com/questions/15250070/running-filter-branch-over-a-range-of-commits

    git_trace=1 gcm_trace=1 git filter-branch --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"' ... 67d9d9..f70bf4

    https://github.com/git-for-windows/git/issues/2206

    git_trace=1 gcm_trace=1 git filter-branch --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"'  origin/master..master

    git filter-branch -f --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"' origin/master..master

     
     
     
  • 相关阅读:
    【转】【SEE】基于SSE指令集的程序设计简介
    【转】【Asp.Net】asp.net服务器控件创建
    ControlTemplate in WPF ——ScrollBar
    ControlTemplate in WPF —— Menu
    ControlTemplate in WPF —— Expander
    ControlTemplate in WPF —— TreeView
    ControlTemplate in WPF —— ListBox
    ControlTemplate in WPF —— ComboBox
    ControlTemplate in WPF —— TextBox
    ControlTemplate in WPF —— RadioButton
  • 原文地址:https://www.cnblogs.com/chucklu/p/10921684.html
Copyright © 2011-2022 走看看