繁体   English   中英

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

[英]How to check for changes on remote (origin) Git repository

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

设想

我从一个存储库克隆,并做了一些我自己的提交到我的本地存储库。 与此同时,我的同事向远程存储库提交了提交。 现在,我想:

  1. 检查远程存储库上是否有其他人的新提交,即origin

  2. 假设自上次拉取以来远程存储库上有三个新提交,我想比较远程存储库的提交,即HEAD~3HEAD~2HEAD~2HEAD~1HEAD~1HEAD

  3. 在知道远程更改了什么之后,我想从其他人那里获得最新的提交。

到目前为止我的发现

对于第 2 步:我知道插入符号HEAD^HEAD^^等和波浪符号HEAD~2HEAD~3等。

对于第 3 步:也就是说,我想,只是一个git pull

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

git diff origin/master

是的,您也可以使用插入符号。

如果要接受远程更改:

git merge origin/master
git remote update && git status 

检查是否需要在 Git 中拉取答案中找到了这个

git remote update使您的远程引用保持最新。 然后,您可以执行以下几项操作之一,例如:

  1. git status -uno会告诉您正在跟踪的分支是在前面、后面还是已经发散。 如果它什么也没说,本地和远程是一样的。

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

如果您将-vgit remote update一起使用,您可以查看哪些分支已更新,因此您实际上不需要任何其他命令。

综合了解“起源”正在发生的事情的一个好方法是:

git remote show origin

我只是用

git remote update
git status

后者然后报告我的本地后面有多少提交(如果有)。

然后

git pull origin master

使我的本地更新:)

我的常规问题是“回购中的任何新内容或更改”,所以whatchanged很方便。 在这里找到

git whatchanged origin/master -n 1

一种潜在的解决方案

感谢Alan Haggai Alavi 的解决方案,我想出了以下潜在的工作流程:

第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

即使在 fetch 之后, git status也不总是显示 master 和 origin/master 之间的区别。

如果想让组合git fetch origin && git status起作用,则需要指定本地分支和原点之间的跟踪信息:

# git branch --set-upstream-to=origin/<branch> <branch>

对于分支:

git branch --set-upstream-to=origin/master master

我只是用

git fetch origin

获取远程更改,然后我使用包含--all参数的漂亮gitk 工具查看本地和挂起的远程提交(及其相关更改),例如:

gitk --all

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM