How to make git log show file paths relative to current directory?

笑着哭i 提交于 2019-12-05 01:43:07

问题


The current Git-based project that I am working on, I am generally always in a sub-directory.

Below is the output when I run the command git log --name-only from a sub-directory of the root of the repository.

commit 678bd5ba6fc5474c4c61406768bf6cba5937c5d1
Author: thegreendroid
Date:   Mon Mar 27 09:36:24 2017 +1300

    Commit message

 child_dir1_from_root/file1                     |  184 +--
 child_dir2_from_root/file2                     |    2 +-

How do I instead get git log to output something like below instead? This makes diffing the files listed really easy, by just copying the file path and running git diff HEAD~ {copied_file_path} rather than having to modify the file path manually and then run the command.

commit 678bd5ba6fc5474c4c61406768bf6cba5937c5d1
Author: thegreendroid
Date:   Mon Mar 27 09:36:24 2017 +1300

    Commit message

 file1                                          |  184 +--
 ../child_dir2_from_root/file2                  |    2 +-

I have looked at the git log documentation but nothing stood out. I can write a script to do this but I was curious whether Git has a built-in way?


回答1:


In order to use the paths in the output of git log --name-only, add the option --git-dir to git diff.

git --git-dir="$(git rev-parse --show-toplevel)"/.git diff HEAD~ child_dir1_from_root/file1

For easy use, make an alias in the config.

[alias]
        mdiff = "! git --git-dir=\"$(git rev-parse --show-toplevel)\"/.git diff"

git mdiff HEAD~ child_dir1_from_root/file1 now can work as long as the current directory belongs to the working tree.




回答2:


You can add up the --relative='PATH' to the subdirectory you want.



来源:https://stackoverflow.com/questions/43750693/how-to-make-git-log-show-file-paths-relative-to-current-directory

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!