Git:将所有本地提交与远程Repo版本进行比较

|| 我对Git有点陌生,我想做的事情似乎应该可行。基本上,我一直在研究仓库的克隆,并做了很多本地的提交。有没有办法查看我所有更改和原始回购版本的“和”的区别?我认为这是可能的,因为当我做“ 0”时,Git实际上会这样做。 这是我要执行的操作的示例:在gitk中,我将看到类似以下内容: *-[mybranch]在Answers.txt的末尾添加了\ '42 \'(本地提交) *-在my.txt的末尾添加了“ Hello World”(本地提交) *-将\'C#/。NET \'添加到my.txt的开头(本地提交) *-<[RemoteRepo]>(我克隆自的原始仓库) 与我从
RemoteRepo
签出的原始版本相比,我对
my.txt
answers.txt
所做的所有更改之和的差额如何显示?     
已邀请:
有三种方式(此处给出的其他答案中的两种)
1) git diff origin/master master
2) git diff origin/master..master
3) git diff origin/master...master
第一个和第二个相同,并且显示了主机和远程主机之间的提示更改。 第三个显示自分支上次推送以来主服务器上发生的更改,我认为这是您正在寻找的最合适的更改     
最准备好的答案是
 git show-branch
您可以做的更多控制是使用
git log
附件
git rev-list
 git log --left-right --graph --cherry-pick \\
      --oneline branchname...remote/branchname
这是我的首选方法,会导致类似
> | fff6bda remote fix
< | c8903ee local fix
< |   724373c Merge branch \'bla\' into bla
|\\ \\  
| < | 2faf547 details
| < | abbdc47 ....
|/ /  
< | befc181 some tagged commit
包括--decorate,您将获得接近gitk,git-gui和gitweb的东西:
> | fff6bda remote fix
< | c8903ee local fix
< |   724373c (tag_4) Merge branch \'bla\' into bla
|\\ \\  
| < | 2faf547 details
| < | abbdc47 ....
|/ /  
< | befc181 (tag_3) some tagged commit
专业提示1:使用\'
git config alias.lr log --long-option1 --long-option2
\'可方便使用 专业小贴士2:使用\'
git config color.ui auto
\'立即缓解疲劳 如果要所有本地头(在所有本地分支上)对所有远程提交(在同上分支上):
git log --decorate --pretty=oneline --all --not --glob=refs/remotes --no-walk
离开无路可走,以获得所有单独的修订。在这种情况下,我更喜欢使用前面显示的开关(--graph --left-right) 合并 如果您想清楚地看到合并,请包括--boundary 各种高级查询: 筛选结果 Git
log
rev-list
支持全部狡猾的过滤功能,请参见手册页
--after \'2001-01-01\'
--until \'last week\'
--author \'martin\'
-E -i  --grep=\'fixes #[0123456789]+\'
-S \'new_debug_function\'
还有很多很多这应该给您充分的杠杆作用,以几乎零的努力获得准确的所需信息 在当地藏了什么? 驻留在存储区中的内容,而不是位于远程存储区中的内容(请注意,由于存储区驻留在reflog中,因此无法引用远程分支上的存储区,并且reflog(甚至对于远程分支而言)始终反映本地历史记录[1]):
git log $(git rev-list -g stash) --not --glob=refs/remotes 
所有(其他)不可达的提交... 笔记 在我的工作流程中,仅这些构成重定的/修订的提交和隐藏的存储 生成这些文件将需要一些时间,具体取决于您的历史记录图的大小 这将包括任何已隐藏的存储区,但不包括当前存储区 git log $(git fsck --unreachable --full --lost-found |               grep \'commit \'|切-d \'\'-f3)\\     --no-walk --not --glob = refs / remotes --oneline --decorate 脚本编写 出于脚本目的,将
git log
替换为
git rev-list
,您将仅获得哈希值(以及更多的脚本代理健壮性) [1]另请参阅我先前的答案,了解如何在回购之间转移存储: 是否可以将git stash推送到远程存储库? 我可以从远程存储库中获取存储空间到本地分支吗?     
(通常)执行您想要的操作的最简单且肯定最容易记住的命令是:
git diff origin
这显示了您最初提取的内容(原点)与您正在处理的当前分支之间的差异,默认为
master
。     
可以用ѭ22viewed查看差异,它将A和B中的代码进行比较:
git diff origin/master master
origin/master
是最后一次从远程主分支获取(或克隆)时的状态,
master
是代码的本地状态–除非您在本地工作时切换了分支。     
为了一切  git diff HEAD origin / \“ nameofyourbranch \” 用于特定文件  git diff HEAD:\“文件名\” origin / \“ nameofbranch \”:\“文件名\”     
git diff origin/master..master
    

要回复问题请先登录注册