当我运行"git pull"时,我经常想知道文件的最后一个版本和新文件之间发生了什么变化.假设我想知道其他人对特定文件的承诺.
怎么做的?
我假设它是"git diff",其中包含commit x与commit y的一些参数,但我似乎无法获得语法.我还发现"git log"有点令人困惑,我不知道在哪里可以获得我最新版本文件的提交ID与新文件的提交ID.
Cas*_*bel 146
有各种很好的方法可以指定提交 - 有关详细信息,请参阅指定修订部分man git-rev-parse
.在这种情况下,您可能想要:
git diff HEAD@{1}
Run Code Online (Sandbox Code Playgroud)
的@{1}
意思是"我指定裁判的前面位置",这样评价到先前查了一下出来-只是前拉.HEAD
如果您的工作树中也有一些更改,并且您不希望看到它们的差异,那么您可以在那里结束.
我不确定你要求的是"我最新版本文件的提交ID" - 提交"ID"(SHA1哈希)是输出中每个条目顶部的40个字符的十六进制git日志.它是整个提交的哈希值,而不是给定文件的哈希值.你真的不需要更多 - 如果你想在拉动中只差异一个文件,那么
git diff HEAD@{1} filename
Run Code Online (Sandbox Code Playgroud)
这是一般性的 - 如果您想了解给定提交中文件的状态,请指定提交和文件,而不是特定于文件的ID /哈希.
小智 56
我喜欢用:
git diff HEAD^
Run Code Online (Sandbox Code Playgroud)
或者,如果我只想区分特定文件:
git diff HEAD^ -- /foo/bar/baz.txt
Run Code Online (Sandbox Code Playgroud)
CB *_*ley 14
如果您直接执行,git pull
那么您将"快进"或从远程存储库合并未知数量的提交.这可以作为一个动作发生,因此您在拉动之前的最后一次提交将是reflog中的最后一个条目,并且可以作为HEAD@{1}
.这意味着您可以:
git diff HEAD@{1}
Run Code Online (Sandbox Code Playgroud)
但是,我强烈建议如果这是你发现自己做了很多事情,那么git fetch
在手动合并或重新定位之前你应该考虑做一个并检查获取的分支.例如,如果你是主人并且想要拉入原点/主人:
git fetch
git log HEAD..origin/master
# looks good, lets merge
git merge origin/master
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
90150 次 |
最近记录: |