我在这里处理一些事情。我做了几个add
,做了几个commit
。现在,我做了一个fetch
来远程更改我的远程跟踪存储库。
我怎样才能了解什么是什么?
我知道我可以git diff origin/branch branch
看看我的远程跟踪和本地分支之间有什么不同。但是我该怎么知道取得了什么?
答案 0 :(得分:2)
如果您只对获取后本地和远程之间的差异感兴趣,那么您可以使用.git/refs/heads/
和.git/refs/remotes/origin/
之间的日志命令或配置上游分支之类的(请注意点使用情况比较)你的命令):
git log ..@{u}
git log branch..origin/branch
或高级对称差异:
git log --oneline --left-right --cherry-pick ...@{u}
git log --oneline --left-right --cherry-pick branch...origin/branch
在执行期间由命令本身记录:
$ git fetch
(...)
From ...
c1e6a44..8f13b81 master -> origin/master
b1304b4..359293c branchA -> origin/branchA
* [new branch] branchB -> origin/branchB
或者使用详细选项(-v
):
$ git fetch -v
(...)
From ...
c1e6a44..8f13b81 master -> origin/master
b1304b4..359293c branchA -> origin/branchA
= [up to date] branchB -> origin/branchB
+ 1e8827e...cf7aac7 branchC -> origin/branchC (forced update)
如git help revisions中所述,FETCH_HEAD
记录了您使用上次git fetch调用从远程存储库中获取的分支:
git log ..FETCH_HEAD
但是,之前的FETCH_HEAD
内容已丢失。所以你以后不能确切知道最新的fetch命令只能获取什么。尝试以下命令(您可以将其设为Git别名):
cp .git/FETCH_HEAD .git/FETCH_HEAD.old && git fetch -q && diff .git/FETCH_HEAD.old .git/FETCH_HEAD
我经常使用以下别名来检查传入的更改:
in = "!git remote update -p; git log ..@{u}"
答案 1 :(得分:1)
我假设你想看看自己签出自己的分支后发生了什么原因发生了什么:
我已经为日志创建了一个别名,名为' hist':link
在这个项目中,我将文本键入文件并创建了初始提交。然后我克隆了回购并对克隆进行了更改。然后我回到原点并对文件进行了更改。然后我进入副本并取出了#39;。当我键入' git hist --all'时,这是输出:
* 69c8726 2014-09-25 | origin change (origin/master, origin/HEAD)
| * ee54c17 2014-09-25 | change from copy (HEAD, master)
|/
* 81ba217 2014-09-25 | initial commit
要查看“初始提交”与“初始提交”之间的差异。和'原点改变',我输入:
$ git diff 81ba217 origin/master
diff --git a/hello.txt b/hello.txt
index bfd905d..617496a 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1 +1,2 @@
this is text
+this is an origin change
答案 2 :(得分:1)
使用您想要显示信息的任何git命令,您将使用以下修订规范
@{u}@{1}..@{u}
例如,列出您可以使用的提交
git log --oneline @{u}@{1}..@{u}
列出您可以使用的文件
git diff --name-only @{u}@{1}..@{u}
或者您喜欢的任何其他形式或日志/差异。
这适用于您当前签出的任何跟踪分支。