我正在寻找一个简单的git命令,它提供了一个格式良好的所有文件列表,这些文件是散列(SHA1)给出的提交的一部分,没有任何无关的信息.
我试过了:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Run Code Online (Sandbox Code Playgroud)
虽然它列出了文件,但它还包含每个文件的不需要的差异信息.
是否有另一个git命令只提供我想要的列表,以便我可以避免从git show输出中解析它?
以下命令之间有什么区别?:
git diff foo master # a
git diff foo..master # b
git diff foo...master # c
Run Code Online (Sandbox Code Playgroud)
diff手册谈到它:
比较分支机构
Run Code Online (Sandbox Code Playgroud)$ git diff topic master <1> $ git diff topic..master <2> $ git diff topic...master <3>
- 主题提示与主分支之间的更改.
- 与上述相同.
- 自主题分支启动以来主分支上发生的更改.
但对我来说并不完全清楚.
是否可以显示两次提交之间的文件总大小差异?就像是:
$ git file-size-diff 7f3219 bad418 # I wish this worked :)
-1234 bytes
Run Code Online (Sandbox Code Playgroud)
我试过了:
$ git diff --patch-with-stat
Run Code Online (Sandbox Code Playgroud)
这显示了diff中每个二进制文件的文件大小差异 - 但不是文本文件,而不是文件总大小差异.
有任何想法吗?
git上的一个riff :显示两次提交之间所有已更改的文件:我想要列出两次提交之间已更改的所有文件,即使它们现在是相同的(即更改然后再更改).
我经常使用以下命令列出两次提交之间更改的文件:
git diff --name-only SHA1 SHA2
Run Code Online (Sandbox Code Playgroud)
它给出了一个像这样的文件列表:
/src/example/file1 /src/example/file2 /src/example/file3
这有多么有用几乎没有尽头.
我真的希望能够在每个文件旁边显示对更改状态的简要参考,指示文件是否已添加,修改或删除.
这是一个展示这个概念的例子:
git diff --name-only --and-how-me-the-change-status SHA1 SHA2
Run Code Online (Sandbox Code Playgroud)
A /src/example/file1 M /src/example/file2 D /src/example/file3
更改状态(A,M,D)仅作为示例显示,我不介意这是什么,只要它是明确的.
我知道我可以使用该--diff-filter选项仅列出添加的文件,或仅列出已修改的文件或仅列出已删除的文件.使用此选项意味着我必须运行三个命令才能获得三个文件名列表.这很好,但可能会更好.
是否有一个命令我可以运行给我上面的示例输出?
有没有办法(从命令行)列出Git/GitHub中PR中更改的所有文件的名称?这将用于查找需要在该PR的Travis CI构建中运行哪些测试.
CI构建在调用脚本之前运行这些命令:
git clone --depth=50 git://github.com/jekyll/jekyll.git jekyll/jekyll
cd jekyll/jekyll
git fetch origin +refs/pull/2615/merge
git checkout -qf FETCH_HEAD
Run Code Online (Sandbox Code Playgroud) 我想克隆Android支持库的存储库,看看版本24.1.1和24.2.0之间的变化.
我知道存储库位于此处,但是:
我怎样才能看到版本24.1.1和24.2.0之间的提交?
我有哪些信息:主分支上的文件名(myfile.txt).上次使用提交"3"修改了文件,导致版本2.
我想要检索的内容:标签名称"0.0.2",其中包括自上一个标签"0.0.1"以来的提交"3"和"4".
(A)如何在2个标签之间获取更改的文件(参见此处):
git diff --name-only 0.0.1 0.0.2
Run Code Online (Sandbox Code Playgroud)
这会打印'myfile.txt'等.
(B)通常应该完全符合我的需要(见这里):
git describe --always `git log --pretty=format:%H -n 1 myfile.txt`
Run Code Online (Sandbox Code Playgroud)
但是我没有得到标签名称'0.0.2'或与此标签相关的提交.相反,我得到了提交3的提交SHA-1,其中包含myfile.txt的最新更改.
(C)如果以下命令打印相应的标记名称,则注释标记:
git for-each-ref --format='%(refname) %(objecttype)' refs/tags
Run Code Online (Sandbox Code Playgroud)
打印:
refs/tags/0.0.1 tag
refs/tags/0.0.2 tag
refs/tags/0.0.3 tag
refs/tags/0.0.4 tag
Run Code Online (Sandbox Code Playgroud)
题
所以我的问题是:(B)对我来说是正确的方式吗?如果是,我如何更改它确实获得所需的标签名称?还是有另一种方式而不是(B)得到我需要的东西?