it-swarm.com.de

Git-Unterschied zwischen geklontem und ursprünglichem Remote-Repository

Ich habe ein Github-Repository geklont und lokal keine Änderungen vorgenommen. Das Github-Repository wurde mit Commits für denselben Zweig weiterentwickelt.

  1. Wie finde ich einen Unterschied zwischen meinem lokalen Repository und dem ursprünglichen Github-Repository?
  2. Wie finde ich einen Unterschied zwischen meiner Arbeitskopie und dem ursprünglichen Github-Repository?
  3. Wie finde ich einen Unterschied zwischen meinem lokalen Repository und einem anderen Github-Repository desselben Projekts?
165
Gemseeker

1) Fügen Sie alle Remote-Repositorys hinzu, die Sie vergleichen möchten:

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

2) Aktualisieren Sie Ihre lokale Kopie einer Fernbedienung:

git fetch foobar

Fetch ändert Ihre Arbeitskopie nicht.

3) Vergleichen Sie jeden Zweig aus Ihrem lokalen Repository mit jedem Remote-Zweig, den Sie hinzugefügt haben:

git diff master foobar/master
157
dbyrne

Eine weitere Antwort auf Ihre Fragen (vorausgesetzt, Sie sind Master und haben bereits "git fetch Origin" ausgeführt, um Sie über Remote-Änderungen auf dem Laufenden zu halten):

1) Festschreibungen für den Remote-Zweig seit der Erstellung des lokalen Zweigs:

git diff HEAD...Origin/master

2) Ich gehe davon aus, dass Sie mit "Arbeitskopie" Ihre lokale Niederlassung mit einigen lokalen Commits meinen, die noch nicht remote sind. So können Sie feststellen, welche Unterschiede Sie in Ihrer lokalen Zweigstelle haben, die in der Remote-Zweigstelle jedoch nicht vorhanden sind:

git diff Origin/master...HEAD

3) Siehe Antwort von dbyrne.

46
Ruslan Kabalin

Dieses Beispiel könnte jemandem helfen:

Hinweis "Origin" ist mein Alias ​​für Remote "What is on Github"
Hinweis "mybranch" ist mein Alias ​​für meinen Zweig "Was ist lokal", den ich mit Github synchronisiere
- Ihr Filialname ist 'master', wenn Sie keinen erstellt haben. Ich verwende jedoch den anderen Namen mybranch, um zu zeigen, wo der Zweignamenparameter verwendet wird.


Was genau sind meine Remote-Repos auf Github?

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

Fügen Sie das "andere Github-Repository desselben Codes" hinzu - wir nennen dies einen 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)

stellen Sie sicher, dass unser lokales Repo auf dem neuesten Stand ist:

$ git fetch

Ändern Sie einige Dinge vor Ort. Sagen wir Datei ./foo/bar.py

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

Überprüfen Sie meine nicht festgeschriebenen Änderungen

$ 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.

Lokal festschreiben.

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

Jetzt bin ich anders als meine Fernbedienung (auf Github)

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

Diff dies mit Fernbedienung - Ihre Gabel: (Dies wird häufig mit 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, um diese auf die Fernbedienung anzuwenden)

Wie unterscheidet sich mein Remote-Zweig vom Remote-Master-Zweig?

$ git diff Origin/mybranch Origin/master

Wie unterscheidet sich mein lokales Personal von der Remote-Master-Niederlassung?

$ git diff Origin/master

Inwiefern unterscheidet sich mein Zeug von der Gabel eines anderen, dem Master-Zweig desselben Repos?

$git diff mybranch someOtherRepo/master
19
FlipMcF