[Embedded Development Linux Common Command Series 4.1 – Git Push Remote Branch und Local Branch View]


Überblick

Bei der täglichen Arbeit weiß ich nach dem lokalen Kopieren des Codesgit clone oder der Verwendung von repo init && repo sync nicht, welchen Befehl ich zum Ändern des Codes verwenden soll< /span> ermittelt werden. Der richtige Befehl für . git push an den Server. Dieser Artikel verwendet die tatsächlichen Probleme, die bei meiner Arbeit aufgetreten sind, als Beispiel, um Schritt für Schritt vorzustellen, wie die spezifischen Parameter von git pushgit push

Git-Push-Syntax

Wir alle wissen, dass der Push-Befehl verwendet wird, um den Code des aktuellen lokalen Zweigs an den angegebenen Remote-Zweig zu übertragen. Das Format des Befehls ist wie folgt:

git push <远程主机名> <本地分支名>:<远程分支名>

Verwenden Sie den Befehlgit push, um den Code von <Name des lokalen Zweigs> nach zu verschieben Am <Name des Remote-Hosts> am<Name des Remote-Zweigs>.

  • <Remote-Host-Name>: Bezieht sich auf den Remote-Host, auf den Sie pushen möchten. Wenn wir ein Projekt klonen, hilft uns Git automatisch dabei, den Namen des Hosts zu ermitteln . wird diesen Namen nicht ändernim Allgemeinen origin,
  • <Name des lokalen Zweigs>: Dies ist der Name des lokalen Zweigs. Mit dem Befehl git branch können Sie anzeigen, welche Zweige vorhanden sind örtlich.
  • <Remote-Zweigname>: bezieht sich auf den Zweignamen im Remote-Host. Wenn der Remote-Host diesen Zweig nicht hat, wird ein neuer erstellt.

Schritt 1: Git-Remote-Hostnamen anzeigen

Verwenden Sie den Befehl git remote oder den Befehl Person git remote -v

[10:45:53]sam@linux (*^~^*) ~/sam/workbase/npu_code/device$ git remote
arm-val

oder

[10:47:31]sam@linux (*^~^*) ~/sam/workbase/npu_code/device$ git remote -v
arm-val ssh://codereview.armtech.com/arm_val/device (fetch)
arm-val ssh://codereview.armtech.com/arm_val/device (push)

Sie sehen also, dass der Name des Remote-Hosts arm-val ist.

Schritt 2: Zeigen Sie den Namen des Git-Remote-Zweigs an

Mit git branch -vv können Sie sehen, dass der Remote-Zweig den Namen arm-val/arm_main: trägt

[10:54:31]sam@linux (*^~^*) ~/sam/workbase/npu_code/device$ git branch -vv
* test b3f0b95 [arm-val/arm_main: ahead 1] device: compile: support npu device compile

Schritt 3: Zeigen Sie den Namen des lokalen Git-Zweigs an

HEAD stellt einen speziellen Zeiger dar, der auf den lokalen Zweig zeigt, an dem Sie arbeiten, kann betrachtet werden as Ist ein Alias ​​für den lokalen Zweig. Git kann damit ermitteln, in welchem ​​Zweig sich der aktuelle Arbeitsbereich befindet.

refs/for bedeutet, dass wir nach der Übermittlung des Codes an den Server eine Codeüberprüfung durchführen müssen, bevor der Zusammenführungsvorgang durchgeführt werden kann, während refs/heads nicht erforderlich ist.

Der Befehl für git push lautet also:

git push  <远程主机名> HEAD:refs/for/<远程分支名>

Beispieldemonstration

Namen des Remote-Zweigs anzeigen:

[10:45:26]sam@linux (*^~^*) ~/sam/workbase/npu_code/device$ git branch -vv
* test b3f0b95 [arm-val/arm_main: ahead 1] device: compile: support npu device compile

Remote-Hostnamen anzeigen:

[10:37:30]sam@linux (*^~^*) ~/sam/workbase/npu_code/device$ git remote -v
arm-val ssh://codereview.armtech.com/arm_val/device (fetch)
arm-val ssh://codereview.armtech.com/arm_val/device (push)

Starten Sie mit dem Pushen des Codes:
Verwenden Sie git push arm-val HEAD:refs/for/arm_main, um mit dem Pushen des Codes zu beginnen:

[10:37:00]sam@linux (*^~^*) ~/sam/workbase/npu_code/device$ git push arm-val HEAD:refs/for/arm_main
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 16 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 485 bytes | 485.00 KiB/s, done.
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3)
remote: Processing changes: refs: 1, done
remote: ERROR: commit 4b80700: missing Change-Id in message footer
remote:
remote: Hint: to automatically insert a Change-Id, install the hook:
remote:   gitdir=$(git rev-parse --git-dir); scp -p -P 29418 sam@codereview.armtech.com:hooks/commit-msg ${
    
    gitdir}/hooks/
remote: or, for http(s):
remote:   f="$(git rev-parse --git-dir)/hooks/commit-msg"; curl -o "$f" https://codereview.armtech.com/tools/hooks/commit-msg ; chmod +x "$f"
remote: and then amend the commit:
remote:   git commit --amend --no-edit
remote: Finally, push your changes again
remote:
To ssh://codereview.armtech.com/arm_val/device
 ! [remote rejected] HEAD -> refs/for/arm_main (commit 4b80700: missing Change-Id in message footer)
error: failed to push some refs to 'ssh://codereview.armtech.com/arm_val/device'

Befolgen Sie die Anweisungen:

[10:37:46]sam@linux (*^~^*) ~/sam/workbase/npu_code/device$  gitdir=$(git rev-parse --git-dir); scp -p -P 29418 sam@codereview.armtech.com:hooks/commit-msg ${
    
    gitdir}/hooks/
[10:38:01]sam@linux (*^~^*) ~/sam/workbase/npu_code/device$ git commit --amend --no-edit
[uefi_test b3f0b95] device: compile: support npu device compile
 Date: Wed Dec 6 14:38:57 2023 +0800
 1 file changed, 3 insertions(+), 3 deletions(-)

Nach Änderung erneut posten:

[10:38:15]sam@linux (*^~^*) ~/sam/workbase/npu_code/device$ git push arm-val HEAD:refs/for/arm_main
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 16 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 520 bytes | 520.00 KiB/s, done.
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3)
remote: Processing changes: refs: 1, new: 1, done
remote: commit b3f0b95: Missing issue-id in commit message
remote: Commit b3f0b957b0c5dd4911707855dec98f321dcfa737 not associated to any issue
remote:
remote: Hint: insert one or more issue-id anywhere in the commit message.
remote:       Issue-ids are strings matching (DPTS[WE][A-Z]*-[0-9]+)
remote:       and are pointing to existing tickets on its-jira Issue-Tracker
remote:
remote: SUCCESS
remote:
remote:   https://codereview.armtech.com/c/arm_val/device/+/9820 device: compile: support npu device compile [NEW]
remote:
To ssh://codereview.armtech.com/arm_val/device
 * [new reference]   HEAD -> refs/for/arm_main

Zu diesem Zeitpunkt wurde der Git-Push-Befehl erfolgreich abgeschlossen.
TIPPS: Wenn Sie auf Probleme stoßen, sollten Sie trotzdem mehr überprüfen. Der Slogan, den ich als Kind gelernt habe: „Wenn Sie es nicht verstehen, fragen Sie einfach< /span>Wenn Sie es nicht verstehen, schauen Sie es sich an“ sollte in „

Guess you like

Origin blog.csdn.net/sinat_32960911/article/details/134872513