Ich bin neu bei Git und habe nicht viel Hilfe für die Aufgabe gefunden, die ich erledigen möchte.

Ich habe einen master Zweig https://my.company.com/appid/WebApp/tree/DEV, aus dem ich den Code übernommen und viele Änderungen vorgenommen habe. Leider kann ich mein Commit nicht zurückschieben und muss mich auf einen ganz anderen Zweig https://my.company.com/13179069/WebApp/tree/DEV festlegen, in dem 13179069 meine ID an meinem Arbeitsplatz ist. Ich habe versucht, es mit dem GitHub-Desktop-Tool zu tun, aber ohne Erfolg.

0
Raghuveer 18 Apr. 2018 im 09:37

4 Antworten

Beste Antwort

Ich gehe davon aus, dass Sie sich nicht auf den Hauptzweig festlegen können, was bedeutet, dass Sie nicht die Berechtigung dazu haben.

(i) In diesem Fall sollten Sie zuerst eine Verzweigung des Repositorys auf https://my.comapny.com/appid/WebApp/tree/DEV erstellen. Die von Ihnen erstellte Verzweigung hat die URL https://my.comapny.com/13179069/WebApp/tree/DEV, vorausgesetzt, 13179069 ist auch Ihre GitHub-ID.

Hier finden Sie das Dokument zum Erstellen einer Gabel und zum Erstellen einer Gabel lokaler Klon Ihrer Gabel.

(ii) Als nächstes können Sie mit git checkout -b <new_branch_name> einen Zweig auf Ihrer Gabel erstellen und dann alle Änderungen vornehmen, die Sie vornehmen müssen. Vielleicht kopieren Sie einfach die geänderten Dateien aus Ihrem aktuellen unverzweigten Repo.

(iii) Wenn Sie dies getan haben, führen Sie ein git status aus, um zu überprüfen, ob alle erforderlichen Dateien geändert wurden, und dann git add <file_names>, um einige davon zu inszenieren, oder git add ., wenn alle geänderten Dateien gehören zu einem Commit.

(iv) Machen Sie jetzt ein git commit mit Ihrer Nachricht und / oder Unterschrift. Wenn Sie mehr Commits haben, inszenieren Sie diese erneut, indem Sie (iii) ausführen.

(v) Nun sollten Sie den Upstream und den Ursprung festlegen. Folgen Sie dazu diesem.

Wenn Sie dies alles getan haben, schieben Sie Ihren Zweig einfach zu Ihrem Remote-Ursprung und zu git push -f origin <new_branch_name> und erstellen Sie dann eine Pull-Anforderung zum ursprünglichen Repository, indem Sie this.

Die Person mit den Zusammenführungsrechten führt dann Ihr Commit mit dem Master des ursprünglichen Repositorys zusammen. Hoffe das hilft, lass es mich wissen, wenn du eine Klarstellung brauchst.

1
nj2237 18 Apr. 2018 im 08:27

Sie verwirren ein paar Dinge. https://my.company.com/appid/WebApp/tree/DEV ist kein "Zweig". Es ist die URL eines Remote-Repositorys. Das tree/DEV sieht irrelevant aus. Dieses Repository kann mehrere Zweige enthalten und über verfügbar gemacht werden. HTTP (wie es aussieht, wird hier durchgeführt). Aus der URL geht hervor, dass der Zweig, für den die Entwicklung durchgeführt wird, DEV heißt. Dies ist verwirrend, da Sie sagen, dass Sie etwas auf master haben. Können Sie dies mit dem Befehl git branch überprüfen? Lassen Sie mich Ihre Situation wiederholen, um sicherzustellen, dass ich es richtig gemacht habe.

  1. Sie haben aus einem Repository geklont (nennen wir es origin).
  2. Einige Änderungen an einem Zweig vorgenommen X (Ich denke, es ist DEV, aber Sie sagen, es ist master).
  3. Das aktualisierte X kann nicht auf origin zurückgeschoben werden
  4. Möchten Sie X in ein anderes Repository https://my.company.com/appid/WebApp/tree/DEV verschieben (nennen wir dies mine).

Wenn Sie dies benötigen, ist Ihr Problem leicht zu lösen. Alles, was Sie tun müssen, um mine als neue Fernbedienung hinzuzufügen

  git remote add mine https://my.company.com/13179069/WebApp/tree/DEV

Jetzt können Sie Ihren Zweig wie folgt auf mine verschieben

  git push mine X

Dadurch wird der gleiche Zweig auf eine andere Fernbedienung verschoben.

Wenn Sie OTOH wirklich Commits von einem Zweig in einen anderen verschieben möchten, wie Sie in Ihrer Überschrift angegeben haben (was ich bezweifle), müssen Sie Folgendes tun.

Nehmen wir an, dass das ursprüngliche Repository so aussah, als Sie vom Ursprung geklont haben. C4 ist das Commit, das derzeit master ist.

C1 - C2 - C3 - C4 (master)

Jetzt haben Sie einige zusätzliche Commits vorgenommen und Ihr lokales Repository sieht so aus

C1 - C2 - C3 - C4 - C5 - C6 - C7(master)

Hoppla! Diese 3 zusätzlichen Commits sollten in einen anderen Zweig gegangen sein. Erstellen Sie als erstes an dieser Stelle einen Zweig dev.

git branch dev

Nun sieht es so aus

C1 - C2 - C3 - C4 - C5 - C6 - C7(master, dev)

Jetzt bewegen wir master zurück zum Ursprungsort (C4).

git reset --hard master C4

Nun sieht es so aus

C1 - C2 - C3 - C4(master) - C5 - C6 - C7(dev)

Jetzt können Sie Ihr eigenes Repository als neue Fernbedienung hinzufügen (z. B. mine) und dann dev darauf drücken, wie oben erwähnt.

1
Noufal Ibrahim 18 Apr. 2018 im 09:44

Die Antwort könnte abhängig von Ihrem Workflow eine Bit-Konfiguration (Github-Instanz) sein, aber wie es sich anhört, sollten Sie in Ihrem Fall wahrscheinlich https://my.company.com/appid/WebApp/tree/DEV in Ihr eigenes Repo einteilen. Klonen Sie das, erledigen Sie Ihre Arbeit, legen Sie fest, übertragen Sie Ihre Änderungen in Ihr Repo in Github und stellen Sie dann eine Pull-Anfrage für diese Änderungen von Ihrem Repo zum "Haupt" -Repo.

Eine Randnotiz. Es scheint ein wenig Verwirrung hinsichtlich der Nomenklatur in der ursprünglichen Frage zu geben. Git ist SCM verteilt. Sie verpflichten sich zu Ihrem lokalen Klon (und das funktioniert sehr wahrscheinlich unabhängig davon, was Ihre Fernbedienung ist, es sei denn, es wurden zusätzliche Hooks eingerichtet). Ich ziehe Commits von und schiebe Commits in das Remote-Repo. Dies ist wahrscheinlich der Schritt, den Sie nicht ausführen können, da Ihr Workflow erwartet, dass Sie einen zusätzlichen Hop durchlaufen.

0
Ondrej K. 18 Apr. 2018 im 08:22

Es scheint, dass Sie keine Berechtigung zum Festschreiben im Hauptzweig haben. Aber wie Sie geschrieben haben, haben Sie viele Änderungen im Hauptzweig vorgenommen und möchten ihn jetzt in einem anderen Zweig festschreiben.

Sie müssen Ihren Code nicht erneut schreiben. Befolgen Sie die folgenden Schritte, die Ihnen helfen können.

  1. Verstecken Sie Ihre aktuellen Änderungen mit dem folgenden Befehl.

    Git Stash

    Der obige Befehl speichert Ihren geänderten Code im temporären Speicher.

  2. Kasse zu Ihrem neuen Zweig mit dem folgenden Befehl.

    Git Checkout

  3. Übernehmen Sie Ihre Änderungen mit dem folgenden Befehl auf Ihren aktuellen Zweig.

    Git Stash anwenden

    Der obige Befehl ruft Ihren geänderten Code aus dem temporären Speicher ab und wird auf Ihren aktuellen Zweig angewendet.

Hinweis : Stellen Sie sicher, dass Sie über die entsprechende Berechtigung zum Festschreiben Ihres Codes in Ihrer Zweigstelle verfügen.

0
hnkubavat 18 Apr. 2018 im 08:43