2016-04-13 8 views
1

Ich arbeite an einem Projekt mit einigen Klassenkameraden und wir verwenden Git für die Versionskontrolle. Eines der Gruppenmitglieder hatte einen Benutzernamen, der auf etwas anderes als den Benutzernamen des von ihm verwendeten git-Accounts eingestellt war. Nach mehreren Commits erschien er nicht als Mitwirkender. Bei dem Versuch, dies zu beheben, hat er versehentlich eine Kopie von jedem Commit gemacht, das gemacht wurde, mit seinem eigenen Benutzernamen hat der Autor.Entfernen mehrerer Git-Commits aus dem Verlauf

Gibt es eine Möglichkeit, diese Duplikate zu durchsuchen und zu löschen, ohne den Status des Repos tatsächlich zu ändern?

Edit: Zum Beispiel der Geschichte des Repo annehmen begeht dies:

 
"Updated readme" - joesmith0x539 
"Added UI framework" - johnnybravo22

Nachdem der andere Beitrag versuchte, seine Benutzername Wechsel von johnnybravo22 zu dem johnnyb32 sagen zu lassen, die Geschichte wurde:

 
"Updated readme" - joesmith0x539 
"Updated readme" - johnnyb32
"Added UI framework" - johnnybravo22
"Added UI framework" - johnnyb32

Ich möchte jetzt alle unnötigen Duplikate löschen, die er gemacht hat.

+0

Sie können Commits löschen, indem Sie 'git rebase' verwenden. Beachten Sie jedoch, dass dadurch der Status des Repos in dem Sinne geändert wird, dass nach den gelöschten Commits alles eine neue Commit-ID hat. – larsks

+0

Möchten Sie das Commit SQUASH oder den Autorennamen von Commit ändern? – VKatz

+0

@Vinay Ich möchte das Commit quetschen. Angenommen, die Repo begehen Geschichte ist diese: '„aktualisiert readme“- joesmith0x539 „Added UI-Framework“- johnnybravo22' Nachdem der anderen Beitrag versucht, seinen Benutzernamen aus johnnybravo22 Wechsel auf die johnnyb32 sagen zu lassen, die Geschichte wurde : ' "aktualisiert readme" - joesmith0x539 "aktualisiert readme" - johnnyb32 "Added UI-Framework" - johnnybravo22 "Added UI-Framework" - johnnyb32' ich weiß, alle unnötigen Duplikate gelöscht werden soll er gemacht hat. – jwbcse

Antwort

0

müssen Sie SQUASH COMMITS verwenden. Aber Changing-Multiple-Commit-Messages können andere Entwickler durch die Bereitstellung einer alternativen Version der gleichen Änderung.

enthalten keine verpflichten Sie bereits an einen zentralen Server geschoben haben - so andere Entwickler verwirren tun durch eine alternative Version derselben Änderung bereitstellt.

Lassen Sie mich ein Beispiel

1:git rebase -i HEAD~4 # Sie sehen würden letzten vier Commits

2: Dieser Befehl Pop-up-en-Editor mit wenigen Befehlen

pick 44d59fa Add capybaras page. 
pick 7d2edea Add capybaras to index. 
pick 6e8e5d6 Change plural on detail page to 'capybara'. 
pick e8005f4 Change plural on index page to 'capybara'. 

3: Sie 2 waren besser dran als ein Commit .

pick 44d59fa Add capybaras page. 
pick 7d2edea Add capybaras to index. 
pick 6e8e5d6 Change plural on detail page to 'capybara'. 
squash e8005f4 Change plural on index page to 'capybara'. 

Hinweis:squash eine mit der vorherigen begehen Merges begehen

4: Ein weiterer Editor erscheint, mit den Commits

# This is a combination of 2 commits. 
# The first commit's message is: 

Change plural on detail page to 'capybara'. 

# This is the 2nd commit message: 

Change plural on index page to 'capybara'. 

# Please enter the commit message for your changes. Lines starting 
# with '#' will be ignored, and an empty message aborts the commit 

5 zerquetscht zu werden: Geben Sie die Nachricht für das neue Festschreiben, speichern und beenden

6:git log --oneline

Welt würde wieder glücklich sein !!! und hoffe das hilft dir!

+0

@jwbcse Haben meine Antwort Ihr Problem gelöst? – VKatz