web-dev-qa-db-ja.com

クローンと元のリモートリポジトリのgit diff

Githubリポジトリのクローンを作成しましたが、ローカルで変更を加えていません。 Githubリポジトリは、同じブランチでのコミットにより前進しました。

  1. ローカルリポジトリと元のgithubリポジトリの差分を見つけるにはどうすればよいですか?
  2. 作業コピーと元のgithubリポジトリの差分を見つけるにはどうすればよいですか?
  3. ローカルリポジトリと同じプロジェクトの別のgithubリポジトリの差分を見つけるにはどうすればよいですか?
163
Gemseeker

1)比較するリモートリポジトリを追加します。

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

2)リモートのローカルコピーを更新します。

git fetch foobar

Fetchは作業コピーを変更しません。

3)ローカルリポジトリのブランチを追加したリモートと比較します。

git diff master foobar/master
157
dbyrne

あなたの質問への別の返信(あなたがマスターであり、リモートの変更についてレポを認識させるためにすでに「git fetch Origin」を実行していると仮定します):

1)ローカルブランチが作成されたときからリモートブランチでコミットします:

git diff HEAD...Origin/master

2)「作業コピー」とは、まだリモートにないいくつかのローカルコミットを含むローカルブランチを意味すると想定しています。ローカルブランチにはあるがリモートブランチには存在しないものの違いを確認するには、以下を実行します。

git diff Origin/master...HEAD

3)dbyrneの answer を参照してください。

45
Ruslan Kabalin

この例は誰かを助けるかもしれません:

注「Origin」は、リモートの「Githubにあるもの」のエイリアスです
注「mybranch」は、githubと同期しているブランチ「what is local」のエイリアスです
-ブランチ名を作成していない場合、ブランチ名は「マスター」です。ただし、ブランチ名パラメーターが使用されている場所を示すために、別の名前mybranchを使用しています。


GitHubのリモートリポジトリとは何ですか?

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

「同じコードの他のgithubリポジトリ」を追加します-これをフォークと呼びます:

$ 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

いくつかのものをローカルで変更します。ファイル./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)

これをリモートでdiff-あなたのフォーク:(これは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
19
FlipMcF