如何检查远程(源)Git存储库上的更改

如何检查远程(源)Git存储库上的更改,git,Git,执行以下工作流的Git命令是什么 场景 我从一个存储库中进行了克隆,并对本地存储库进行了一些提交。与此同时,我的同事向远程存储库做出了承诺。现在,我想: 检查是否有新的 来自其他用户的提交 远程存储库,即来源 假设服务器上有三个新的提交 自上次更新以来的远程存储库 拉,我想区分 远程存储库的提交,即。 HEAD~3带HEAD~2,HEAD~2带 HEAD~1和HEAD~1与HEAD 在知道发生了什么变化之后, 我想得到最新的消息 从其他人那里 我目前的发现 对于步骤2:我知道插入符号HEA

执行以下工作流的Git命令是什么

场景

我从一个存储库中进行了克隆,并对本地存储库进行了一些提交。与此同时,我的同事向远程存储库做出了承诺。现在,我想:

  • 检查是否有新的 来自其他用户的提交 远程存储库,即
    来源

  • 假设服务器上有三个新的提交 自上次更新以来的远程存储库 拉,我想区分 远程存储库的提交,即。
    HEAD~3
    HEAD~2
    HEAD~2
    HEAD~1
    HEAD~1
    HEAD

  • 在知道发生了什么变化之后, 我想得到最新的消息 从其他人那里

  • 我目前的发现

    对于步骤2:我知道插入符号
    HEAD^
    HEAD^
    等以及波浪符号
    HEAD~2
    HEAD~3


    对于步骤3:也就是说,我想,只需
    git pull

    您就可以
    git fetch origin
    更新存储库中的远程分支以指向最新版本。对于与远程设备的差异:

    git diff origin/master
    
    是的,您也可以使用插入符号

    如果要接受远程更改,请执行以下操作:

    git merge origin/master
    

    综合了解“起源”的一个好方法是:


    一个潜在的解决方案

    多亏了,我想出了以下可能的工作流程:

    步骤1:

    git fetch origin
    
    步骤2:

    git checkout -b localTempOfOriginMaster origin/master
    git difftool HEAD~3 HEAD~2
    git difftool HEAD~2 HEAD~1
    git difftool HEAD~1 HEAD~0
    
    步骤3:

    git checkout master
    git branch -D localTempOfOriginMaster
    git merge origin/master
    
    在收件人上找到这个

    git-remote-update
    以更新远程引用。那你可以 做几件事中的一件,例如:

  • git status-uno
    将告诉您正在跟踪的分支是在前面、后面还是已经分支。如果它什么也没说,本地和本地 遥控器是一样的

  • git show branch*master
    将显示名称以master结尾的所有分支中的提交(例如master和origin/master)

  • 如果将
    -v
    git remote update
    一起使用,您可以看到哪些分支 已更新,因此不需要任何其他命令


    我经常问的问题是“回购协议中有什么新的或改变的”,所以改变了什么就方便了。找到了

    我只是用

    git remote update
    git status
    
    然后,后者报告我的本地is(如果有)背后的提交数量

    然后


    要使我的本地计算机处于最新状态:)

    git status
    即使在获取之后,也不总是显示master和origin/master之间的差异

    如果希望组合
    git-fetch-origin&&git-status
    工作,则需要指定本地分支和源之间的跟踪信息:

    # git branch --set-upstream-to=origin/<branch> <branch>
    
    我只是用

    git fetch origin
    
    获取远程更改,然后使用包含
    --all
    参数的nice查看本地和挂起的远程提交(及其相关更改),如下所示:

    gitk --all
    

    但该命令并没有告诉我自上次拉取以来“origin”上有多少次提交,是吗?按照我的理解,“git remote show origin”是一个本地操作,不通过网络获取信息。输出不包含任何有关远程内容的信息。为什么需要为远程版本之间的差异创建临时分支?您只需
    git diff origing/master^ origing/master^
    @PabloMarin Garcia:谢谢。那时候我不知道。@Pablo Marin Garcia:不,
    git diff origin/master^ origin/master^
    diff看起来是相反的。我发现使用
    git-diff-HEAD-origin/master更容易,因此diff显示了如果我接受远程更改将应用什么。“git-fetch-origin”和“git-show-branch*master”对我很有用。您链接到的@Daniele的可能副本非常棒,甚至还附带了一个可定制的bash脚本+1还不够。我必须在需要推送时立即执行
    git pull
    ,因为我的本地分支的尖端位于远程分支的后面。@Overdrivr问题是在将提交提交给本地分支之前检查更改的方法。所以,是的,您必须在检查更改后更新您的本地分支。这是用于远程来源还是上游?该-v选项不起作用。对于
    git remote update-v
    我得到了
    错误:未知开关'v'
    @Shad您应该执行
    git remote-v update
    而不是
    git remote update-v
    问题指定了git命令。有许多git工具可用于检查远程分支状态。推广一个特定的产品并没有多大帮助。我意识到这是一个官方git文档中记录的工具,但它仍然是独立维护的,因此我不同意。我可能仍然会在这里指定如何进行区分。
    git pull origin master
    
    # git branch --set-upstream-to=origin/<branch> <branch>
    
    git branch --set-upstream-to=origin/master master
    
    git fetch origin
    
    gitk --all