webentwicklung-frage-antwort-db.com.de

! [abgelehnt] Master -> Master (zuerst abrufen)

Gibt es eine gute Möglichkeit, zu erklären, wie "! [rejected] master -> master (fetch first)'" in Git aufgelöst wird?

Wenn ich diesen Befehl $ git Push Origin master verwende, wird eine Fehlermeldung angezeigt.

! [rejected]        master -> master (fetch first)
error: failed to Push some refs to '[email protected]:zapnaa/abcappp.git'
57
Symfony

Die Antwort ist da, git sagt dir zuerst zu holen.

Wahrscheinlich hat schon jemand anderes das Mastering erreicht und Ihr Commit ist zurückgeblieben. Daher müssen Sie das Changeset abrufen, zusammenführen und dann können Sie erneut Push ausführen.

Wenn Sie dies nicht tun (oder noch schlimmer, wenn Sie es mit der --force-Option erzwingen), können Sie den Commit-Verlauf durcheinander bringen.

BEARBEITEN: Ich komme auf den letzten Punkt näher ein, da ein Typ hier gerade den sehr schlechten Rat der Verwendung der --force-Option gegeben hat.

Da git ein DVCS ist, arbeiten im Idealfall viele andere Entwickler an demselben Projekt wie Sie und verwenden dasselbe Repository (oder einen Zweig davon). Wenn Sie Ihr Änderungsset zwangsweise überschreiben, stimmt Ihr Repository nicht mit dem der anderen überein, da "Sie den Verlauf neu schreiben". Sie machen andere Menschen unglücklich und das Repository wird darunter leiden. Wahrscheinlich wird auch ein Kätzchen auf der Welt weinen.

TL; DR

  1. Wenn Sie lösen wollen, holen Sie zuerst (und dann zusammenführen).
  2. Wenn Sie hacken möchten, verwenden Sie die --force-Option. 

Sie haben jedoch nach dem ersteren gefragt. Gehen Sie für 1) immer, auch wenn Sie git immer alleine verwenden, da dies eine gute Praxis ist.

71
linuxbandit

versuchen: 

git fetch Origin master
git merge Origin master

Nachdem ich diesen Code geschrieben hatte, erhielt ich einen anderen Fehler:

Ich schreibe diesen Code:

git fetch Origin master:tmp
git rebase tmp
git Push Origin HEAD:master
git branch -D tmp

Und mein Problem gelöst

35
Aurelio A

Sie sollten git pull verwenden, der Befehl führt einen git fetch aus und anschließend den git merge.

Wenn Sie einen git Push Origin master --force-Befehl verwenden, können in Zukunft Probleme auftreten.

18

Versuchen Sie diesen git-Befehl

git Push Origin master --force

oder kurz Kraft -f

git Push Origin master -f

9
user1865618

pull ist immer der richtige Ansatz, aber eine Ausnahme könnte sein, wenn Sie versuchen, ein Nicht-Git-Dateisystem in ein Github-Repository zu konvertieren. Dort müssten Sie das erste Commit erzwingen.

git init
git add README.md
git add .
git commit -m "first commit"
git remote add Origin https://github.com/userName/repoName.git
git Push --force Origin master
9
J D

Sie können den folgenden Befehl verwenden: Klonen Sie zunächst eine neue Kopie Ihres Repos mit dem Flag --mirror:

$ git clone --mirror git://example.com/some-big-repo.git

Dann folgen Sie den Codes entsprechend:

Ein vorhandenes Projekt mit der Befehlszeile zu GitHub hinzufügen

Auch wenn das nicht funktioniert, können Sie einfach Folgendes schreiben: 

$ git Push Origin master --force 

oder

$ git Push Origin master -f
3

Manchmal passiert es, wenn Sie Dateien in der Regel README duplizieren.

2

Es ist wahrscheinlich, dass jemand anderes (z. B. Ihr Kollege) Commits auf Origin/master gesetzt hat, die sich nicht in Ihrem lokalen master-Zweig befinden, und Sie versuchen, einige Commits von Ihrem lokalen Zweig an den Server zu senden. In 99% der Fälle haben Sie zwei Möglichkeiten, vorausgesetzt, Sie möchten ihre Arbeit nicht von Origin löschen.

2) Führen Sie die Änderungen in Ihrem lokalen Zweig zusammen und drücken Sie dann das zusammengeführte Ergebnis. git checkout master git pull # resolve conflicts here git Push

(Beachten Sie, dass git pull in diesem Fall im Wesentlichen nur ein git fetch und ein git merge ist.)

1) Bauen Sie Ihre örtliche Niederlassung neu auf, so dass es aussieht, als ob Ihr Kollege zuerst ein Commit eingegangen ist, und dann haben Sie Ihr Commit gemacht. Dies hält den Commit-Verlauf schön und linear - und vermeidet ein "Merge-Commit". Wenn Sie jedoch Konflikte mit den Änderungen Ihres Kollegen haben, müssen Sie diese Konflikte möglicherweise für jedes Ihrer Commits (und nicht nur ein einziges Mal) im schlimmsten Fall lösen. Im Grunde ist das für alle anderen schöner, aber mehr Aufwand für Sie . git pull --rebase # resolve conflicts here git Push

(Beachten Sie, dass git pull --rebase im Wesentlichen ein git fetch und ein git rebase Origin/master ist.)

1
Chrispher

Möglicherweise liegt Ihr Fehler am Zusammenführungszweig.
Befolgen Sie einfach diese:

schritt 1: git pull Origin master (falls Sie eine Nachricht erhalten, ignorieren Sie sie)
Schritt 2: git add .
Schritt 3: git commit -m 'your commit message'
Schritt 4: git Push Origin master

0
divyang hirpara

diese Arbeit für mich

  1. git init

  2. git add --all

3.git commit -m "name"

4.git Push Origin master --force

0
Mizanur Rahman

Das hat bei mir funktioniert:

$ git add .
$ git commit -m "commit"
$ git Push Origin master --force
0
Yamuna Bangaru