Git 区分克隆的和原始的远程存储库

我已经克隆了一个 github 存储库,并且没有在本地进行更改。Github 存储库继续在同一个分支上提交。

  1. 如何找到本地存储库和原始 github 存储库之间的区别?
  2. 如何找到工作副本和原始 github 存储库之间的区别?
  3. 如何找到本地存储库和同一项目的另一个 github 存储库之间的区别?
157306 次浏览

1)添加任何您想要比较的远程存储库:

git remote add foobar git://github.com/user/foobar.git

2)更新远程的本地副本:

git fetch foobar

获取不会更改您的工作副本。

3)将本地存储库中的任何分支与您添加的任何远程分支进行比较:

git diff master foobar/master

对你的问题的另一个回答(假设你在 master 上并且已经做了“ git 获取原点”来让你回收关于远程更改的信息) :

1)自创建本地分支以来对远程分支的提交:

git diff HEAD...origin/master

2)我假设你说的“工作拷贝”是指你的本地分支提交了一些还没有远程的本地提交。若要查看本地分支上存在但远程分支上不存在的差异,请运行:

git diff origin/master...HEAD

3)参见 dbyrne 的 回答

这个例子可能会对某些人有所帮助:

注意“ origin”是远程“ What is on Github”的别名
注意“ mybranch”是我与 github 同步的分支“ what is local”的别名
--如果您没有创建分支名称,那么您的分支名称是“ master”。但是,我使用不同的名称 mybranch来显示在哪里使用了分支名称参数。


我在 Github 上的远程回购到底是什么?

$ git remote -v
origin  https://github.com/flipmcf/Playground.git (fetch)
origin  https://github.com/flipmcf/Playground.git (push)

添加“同一代码的其他 github 存储库”——我们称之为 fork:

$ git remote add someOtherRepo https://github.com/otherUser/Playground.git


$git remote -v
origin  https://github.com/flipmcf/Playground.git (fetch)
origin  https://github.com/flipmcf/Playground.git (push)
someOtherRepo https://github.com/otherUser/Playground.git (push)
someOtherRepo https://github.com/otherUser/Playground.git (fetch)

确保我们的本地回购是最新的:

$ git fetch

在本地更改一些内容,比如 file./foo/bar.py

$ git status
# On branch mybranch
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   foo/bar.py

检查未提交的更改

$ git diff mybranch
diff --git a/playground/foo/bar.py b/playground/foo/bar.py
index b4fb1be..516323b 100655
--- a/playground/foo/bar.py
+++ b/playground/foo/bar.py
@@ -1,27 +1,29 @@
- This line is wrong
+ This line is fixed now - yea!
+ And I added this line too.

在本地进行。

$ git commit foo/bar.py -m"I changed stuff"
[myfork 9f31ff7] I changed stuff
1 files changed, 2 insertions(+), 1 deletions(-)

现在,我和我的遥控器(在 github 上)不一样了

$ git status
# On branch mybranch
# Your branch is ahead of 'origin/mybranch' by 1 commit.
#
nothing to commit (working directory clean)

用遥控器——你的叉子来区分: (git diff master origin经常这样做)

$ git diff mybranch origin
diff --git a/playground/foo/bar.py b/playground/foo/bar.py
index 516323b..b4fb1be 100655
--- a/playground/foo/bar.py
+++ b/playground/foo/bar.py
@@ -1,27 +1,29 @@
- This line is wrong
+ This line is fixed now - yea!
+ And I added this line too.

(git push 将这些应用于远程)

我的远程分支与远程主分支有什么不同?

$ git diff origin/mybranch origin/master

我的本地内容与远程主分支有什么不同?

$ git diff origin/master

我的东西和别人的叉子有什么不同?

$git diff mybranch someOtherRepo/master