Using gitk to view the full history of a moved file

后端 未结 4 1163
渐次进展
渐次进展 2021-02-04 00:31

After much searching, I have not found a satisfactory method that is easy to use to view the complete history of a moved file in Git and more importantly in Gitk. Using gi

相关标签:
4条回答
  • 2021-02-04 01:03

    A simpler function using different git log options and awk to exact the file names (and the "--" that gitk needs is included):

    # bash
    gitk_follow () {
      while (( "$#" )); do
        git log --pretty="" --name-status --follow $1;
        shift;
      done | awk '{print $NF}' | sort -u
    }
    
    # used as:
    gitk -- $(gitk_follow some_file)
    
    0 讨论(0)
  • 2021-02-04 01:16

    If you want to see the changes that was made in each commit even the file has been renamed, you can use the option -p of git log:

    git log -p --follow [file/with/path]
    
    0 讨论(0)
  • 2021-02-04 01:16

    Another alternative is to use the SourceTree application (GUI) developed by Atlassian. Inside the application you can right-click on the file and select "Log Selected ..."

    Log Selected.

    In the pop-up window it then allows you to "Follow renamed files":

    enter image description here

    I also use GitHub for Mac, but didn't see that kind of functionality in there, yet.

    (I am not affiliated with either of them!)

    0 讨论(0)
  • 2021-02-04 01:18

    Here's a bash function that should show you the history of a file (using gitk) in all its incarnations ... I'll leave it as an exercise to the reader if they need it for another shell:

    # bash
    gitk_follow () {
      while (( "$#" )); do
        git log --oneline --name-status --follow $1;
        shift;
      done | perl -ne 'if( s{^(?:[ACDMRTUXB]|R\d+)\s+}{} ) { s{\s+}{\n}g; print; }' | sort -u
    }
    
    # used as:
    gitk $(gitk_follow some_file)
    

    updated:

    Changed to use perl because I didn't pay close enough attention to the output from git log in the last version.

    0 讨论(0)
提交回复
热议问题