2017-05-22 7 views
1

Ich mache ein Schulprojekt mit meinen Klassenkameraden, und einer von ihnen hat die Hauptsache des Programms gebrochen und er schiebt es nach GitHub. Ich habe das Projekt ohne das Haupt modifiziert und es funktioniert einwandfrei. Gibt es irgendeine Möglichkeit, so kann ich meine Dateien schieben, ohne den Zug zu machen, und die schlechten durch meine ersetzen?Git schieben ohne ziehen

Antwort

4

Wenn der andere Entwickler relevante Änderungen vorgenommen hat, sollten Sie sie nicht einfach löschen, sondern beide Änderungen zusammenführen.

Die beste Lösung, vorausgesetzt, der Entwickler hat andere sinnvolle Änderungen vorgenommen, besteht darin, die Konflikte zu lösen und den fehlerhaften Code zu reparieren.

Verschieben Sie sie von Ihren divergenten Commits in einen neuen Zweig, und führen Sie sie anschließend wieder in Master - Konfliktlösungskonflikte ein.

# Create a new branch with your commits 
git checkout -b featureBranch 

# Get master from origin 
git checkout master 
git pull origin master 

# Add in your changes 
git merge featureBranch 

# Resolve Conflicts 

# Push to origin 
git push origin master 

Wenn Sie seine Commits wollen wirklich nur löschen (, die ich schlage vor, Sie nicht tun), können Sie einfach Ihre Push zwingen - dieses alles mit, was Sie auf dem Server überschreiben Habe auf deiner Maschine.

Jeder andere Entwickler, der an dem Projekt arbeitet, muss zusätzliche Aktionen an diesem Ende ausführen, da Sie jetzt die Historie ändern; Dies wird nicht empfohlen.

git push origin master --force 

Es gibt auch ein Verfahren revert; Dadurch wird ein neues Commit erstellt, das die Änderungen eines ausgewählten Commits vollständig umkehrt. Um dies zu nutzen, benötigen Sie zuerst einen sauber arbeitenden Baum.

# Move your commits to a new branch 
git checkout -b featureBranch 

# Get latest changes from master 
git checkout master 
git pull origin master 

# Create new commit that reverses the other devs changes 
git revert hashToRevert 

# Pull in your additional commits 
git merge featureBranch 

# Push to master 
git push origin master 
2

Sie können sich wahrscheinlich git revert Befehl verwenden, um das Commit zurück. Dies wird tun begehen ein neues, dass rückgängig macht alle von diesem vorherigen Änderungen verpflichten, Dokumentation here:

Der git zufällt Befehl einen engagierten Snapshot rückgängig macht. Aber anstelle von Entfernen der Festschreibung aus dem Projektverlauf, es herauszufinden, wie die Änderungen durch die Festschreibung rückgängig gemacht werden und hängt eine neue Festschreibung mit dem resultierenden Inhalt.

Sobald Sie fertig sind, können Sie Ihre eigenen Änderungen zusätzlich zum Zurücksetzen Commit schieben.