2014-05-09 16:48:06 +0000 2014-05-09 16:48:06 +0000
135
135
Advertisement

Is er een manier om een commit boodschap op GitHub te bewerken?

Advertisement

Is er een manier om een commit boodschap aan te passen na het committen en pushen naar GitHub? Ik zie dat er een ‘voeg een opmerking toe’ is, evenals inline commentaar, maar geen echte manier om een commit boodschap aan te passen. Er is ook ‘wijzig commit’ in git extensies, maar dat wijzigt het bestaande bericht niet.

Advertisement
Advertisement

Antwoorden (5)

189
189
189
2014-05-10 10:27:44 +0000
  1. git rebase -i <commit hash you want to change>^

  2. Voor elke vastlegging waarvan je de boodschap wilt veranderen, verander pick in reword.

  3. Sla op en sluit af (in vi: :wq).

  4. Voor iedere commit krijg je een editor om de commit boodschap aan te passen. Verander het zoals je wilt, sla op en sluit af.

  5. Je kunt ze nu uploaden naar github door git push origin --force te gebruiken.

Als je alleen je laatste commit moet aanpassen, kun je stap 1-4 vervangen door git commit --amend.

35
35
35
2018-06-18 09:49:45 +0000

In Intellij Idea kunt u dat zo gemakkelijk doen.

  1. Open Versiebeheer (Geschiedenis)
  2. Selecteer tabblad log
  3. Selecteer commit om commentaar te wijzigen
  4. Druk op F2 (Mac fn + F2), en update je commit bericht
3
Advertisement
3
3
2019-03-14 07:29:36 +0000
Advertisement

Premisse:

als je git-grafiek eruit ziet als …

O target-commit that you want to change its message [df9c192]
|
O parent-commit [b7ec061]
|
O

(df9c192 en b7ec061 zijn de commit hashes van target-commit en parent-commit, apart)

Oplossing:

je kunt gewoon de volgende instructies typen…

git reset --soft b7ec061
git commit -m "your_new_description"
git push -f

Uitleg:

  1. git reset --soft b7ec061 zal je veranderingen van bestanden behouden en terugzetten naar parent-commit (d.w.z. b7ec061)
  2. git commit -m "..." zal lokaal een nieuwe commit aanmaken
  3. git push -f zal je nieuwe commit naar de server pushen en de oude vervangen (i.e. df9c192)
2
2
2
2018-08-08 22:27:59 +0000

Een andere optie is om een extra “errata commit” aan te maken (en te pushen) die verwijst naar het commit object dat de fout bevat – de nieuwe errata commit levert ook de correctie. Een errata commit is een commit zonder inhoudelijke code veranderingen, maar met een belangrijke commit boodschap – bijvoorbeeld, voeg een spatie toe aan je readme bestand en commit die verandering met de belangrijke commit boodschap, of gebruik de git optie --allow-empty. Het is zeker makkelijker en veiliger dan rebasen, het verandert de echte geschiedenis niet, en het houdt de branchboom schoon (amend gebruiken is ook een goede keuze als je de meest recente commit corrigeert, maar een errata commit kan een goede keuze zijn voor oudere commits). Dit soort dingen gebeurt zo zelden dat het eenvoudigweg documenteren van de fout goed genoeg is. In de toekomst, als je door een git log moet zoeken voor een functie sleutelwoord, zal de originele (foutieve) commit misschien niet verschijnen omdat het verkeerde sleutelwoord in die originele commit gebruikt was (de originele typfout) – maar, het sleutelwoord zal in de errata commit verschijnen, welke je dan naar de originele commit zal verwijzen die de typfout had. Hier is een voorbeeld:

$ git log commit 0c28141c68adae276840f17ccd4766542c33cf1d Author: First Last Date: Wed Aug 8 15:55:52 2018 -0600 Errata commit: This commit has no substantive code change. THis commit is provided only to document a correction to a previous commit message. This pertains to commit object e083a7abd8deb5776cb304fa13731a4182a24be1 Original incorrect commit message: Changed background color to red Correction (\*change highlighted\*): Changed background color to \*blue\* commit 032d0ff0601bff79bdef3c6f0a02ebfa061c4ad4 Author: First Last Date: Wed Aug 8 15:43:16 2018 -0600 Some interim commit message commit e083a7abd8deb5776cb304fa13731a4182a24be1 Author: First Last Date: Wed Aug 8 13:31:32 2018 -0600 Changed background color to red
0
Advertisement
0
0
2019-08-24 11:01:51 +0000
Advertisement

Antwoord van @Mureinik ](https://superuser.com/a/751909/248836) is goed, maar niet begrijpelijk voor newbie.

Eerste methode:

  1. Als je alleen het laatste commit bericht wilt bewerken, dan heb je alleen git commit --amend nodig, dan zou je zien:
<your existing commit mesage foo bar> 

# Please enter the commit message fir your changes. Lines starting
# with # will be ignored, and an empty message aborts the commit.
#
# Date: Sat Aug 24 17:56:16 2019 +0800
#
# On branch is up to date with 'origin/master'.
#
# changes to be committed:
# modified: foo.py
#
  1. Zoals je kunt zien, staat het commit bericht bovenaan zonder enig voorvoegsel van commando’s zoals pick, dit is al de bewerk pagina en je kunt bewerk het bovenste bericht en opslaan&beëindigen direct uitvoeren, b.v.:
<your new correction commit message> 

# Please enter the commit message for your changes. Lines starting
....
  1. Doe dan git push -u origin master --force of <how you push normally> --force. De sleutel hier is --force.

Tweede methode:

  1. Je kunt de commit hash zien door git log of uit de repository url te halen, voorbeeld in mijn geval is 881129d771219cfa29e6f6c2205851a2994a8835

  2. Dan kun je git rebase --interactive 881129d771219cfa29e6f6c2205851a2994a8835 doen of git rebase -i HEAD^ (als het de nieuwste is)

  3. Je zou zien:

pick <commit hash> <your current commit message>

# Rebase 8db7e8b..fa20af3 onto 8db7e8b
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
  1. Maar als je noop ziet, dan typ je waarschijnlijk verkeerd, bijv. als je git rebase -i 881129d771219cfa29e6f6c2205851a2994a88 doet en er mist ^ aan het eind, dan kun je beter de editor afsluiten zonder op te slaan en de reden uitzoeken:
noop

# Rebase 8db7e8b..fa20af3 onto 8db7e8b
...
  1. Als er geen noop probleem is, dan verander je gewoon het woord pick in reword , andere blijft gewoon staan (je bewerkt de commit boodschap op dit punt niet), bijv. bijv:
reword <commit hash> <your current commit message>

# Rebase 8db7e8b..fa20af3 onto 8db7e8b
#
# Commands:
# p, pick = use commit
...
  1. Save&quit zal de edit pagina laten zien, gelijk aan methode #1:
<your existing commit mesage foo bar> 

# Please enter the commit message fir your changes. Lines starting
# with # will be ignored, and an empty message aborts the commit.
#
# Date: Sat Aug 24 17:56:16 2019 +0800
#
# interactive rebase in progress; onto b057371
# Last command done (1 command done):
# reword d996ffb <existing commit message foo bar>
# No commands remaining.
# You are currently editing a commit while rebasing branch 'master' on 'b057371'.
#
# changes to be committed:
# modified: foo.py
#
  1. Edit de boodschap bovenaan, gelijk aan methode #1 en save&quit, bijv:
<your new correction commit message> 

# Please enter the commit message for your changes. Lines starting
....
  1. Nogmaals, gelijk aan methode #1, doe git push -u origin master --force of <how you push normally> --force. De sleutel hier is --force.

Voor meer info lees de doc .

Advertisement

Gerelateerde vragen

19
4
12
9
3
Advertisement