假设我在分支dev
上,我想查看master上的最新提交而不更改它。
我只是想做某些命令,然后能够看到master上的提交,例如git log master
或gitk master
。
什么是某些命令?
如何从主远程获取最新提交而不检查主数据然后执行git pull
?
答案 0 :(得分:4)
无论您首先要运行git fetch
。这不会更改分支的本地副本。它将fetch
来自当前remote
的更改,可以在origin/master
等虚拟分支中引用。
然后,您可以使用参考origin/master
查看任意分支上的更改,而无需在master
上进行更改
您想要的命令是:
git log origin/master
答案 1 :(得分:2)
使用git fetch
。
(避免git pull
,这只是git fetch
,然后是第二个Git命令。第二个命令默认为git merge
,但你可以告诉Git使用git rebase
代替。)
fetch
命令实际上是提交的。然后,您可以通过远程跟踪分支名称来命名,例如origin/master
。这些是你的 Git用来记住它在其他(远程)Git上看到的内容的名称,它最后一次与其他Git交谈。您的git fetch
看到他们有master
,因此将其提交复制到您的存储库并使用名称origin/master
来记住它们。
提交后,git log origin/master
或gitk origin/master
(或gitk --all
或许多其他变体)会让您查看。
我最喜欢的别名之一是incoming
/ lin
:
[alias]
incoming = log --oneline ..@{u}
lin = log ..@{u}
使用此别名,git incoming
显示当前分支的上游上的提交。例如,master
的上游通常为origin/master
,因此这会显示origin/master
上不在master
上的提交。 --oneline
将它们分别收集到一行主题。通常我希望看到更多内容,因此较短的lin
(Log INcoming)会在没有--oneline
的情况下显示它们。
答案 2 :(得分:0)
如何从master远程获取最新提交而不检查master然后执行git pull?
您可以执行以下操作:
# update internal git repository data
git fetch
# now add any desired commit from any branch to your current branch (any)
git cherry-pick <sha1>
如果您只想查看日志而不是向分支添加任何提交,只需使用:
git fetch --all --prune
git log --all --oneline --decorate --graph
答案 3 :(得分:0)
要查看您可以运行的所有分支的所有提交
<script>
(function() {
var cx = 'someurl';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = 'someurl' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
答案 4 :(得分:0)
这似乎工作正常:
git fetch origin master:master
答案 5 :(得分:0)
正如其他答案所述,git fetch
是要走的路。
之后,我建议使用gitk
查看其他分支的提交,使用gitk <branchname>
查看特定分支,或gitk --all
查看所有分支及其分支各自的承诺。