Wie ein git-feature (oder Thema) Zweig mit mehreren Entwicklern
Habe ich nach dem der workflow beschrieben hier, da fand ich viele Verweise zeigen auf dieser Seite, wie ein guter workflow. Wie im Artikel erwähnt, "feature" äste geteilt werden zwischen Entwicklern, aber gehen Sie nicht in die zentrale repository.
Lassen Sie uns sagen, ein Entwickler "A" startet einen neuen feature-branch mit git checkout -b newfeature develop
. Lassen Sie uns jetzt sagen, dass Entwickler "B" muss auch die Arbeit an diesem feature. Das ist mein problem.
Was ich getan habe:
- Entwickler "B", fügt der Entwickler Eine Maschine, wie ein remote -
- Entwickler "B" läuft
git branch remoteA/newfeature
- Entwickler "B" Werke auf diesen Zweig, Begehen seine Arbeit und schiebt die änderungen zurück zu remoteA.
Schritt 3 nicht funktioniert, jetzt. Ich erhalte die Meldung:
remote: error: standardmäßig ist die Aktualisierung des aktuellen Zweiges in einer nicht-nackten
repository verweigert, weil es den index und den work tree
unvereinbar mit dem, was Sie gestoßen, und muss "git reset --hard'
um mit der Arbeit Baum zu fahren.remote: Fehler: Sie können 'erhalten.denyCurrentBranch' Konfiguration
variable auf 'ignore' oder 'warnen' in das remote-repository zu ermöglichen
drängen in seiner aktuellen Zweig; dies ist jedoch nicht empfehlenswert
es sei denn, Sie angeordnet, um aktualisieren Sie Ihre Arbeit-Baum entsprechen, was Sie geschoben
in einigen anderen Weg.remote: error: To squelch-diese Meldung und noch behalten Sie die Standardeinstellung
Verhalten, eingestellt bekommen.denyCurrentBranch " configuration variable
'verweigern'.
Habe ich bereits sharedRepository = true
, aber es hat nicht geholfen.
Ich habe 2 Fragen:
- was ist die richtige Art und Weise zu teilen-Funktion äste zwischen Entwicklern?
- wie kann ich push-back die änderungen im Entwickler B s repository Entwickler ist original?
- Und wieder: ich würde raten, drängen änderungen zwischen non-bare repositories wie es stellt nur problem, das Sie nicht haben wollen 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie drücken, um eine nicht-bare-repo. Was können Sie tun, drücken Sie auf eine nicht-bare-repo, das die Filiale, die Sie drängen zu überprüfen. Der Grund dafür sollte Sinn machen. Ändern Sie die Dateien, die jemand anderes vielleicht arbeiten, wäre falsch.
In der Regel werden Sie wollen, um push-to-master oder einen anderen gemeinsamen Zweig. Um zu vermeiden, dass dieser Konflikt, der Besitzer des remote non-bare-repo sollte auf einer lokalen Niederlassung oder zumindest einem anderen Zweig. Dann können Sie drücken, um die gemeinsamen Zweig.
Zur Nutzung Ihrer Beispiel:
git branch remoteA/newfeature
git checkout -b work-newfeature
git rebase newfeature
Der einfachste Weg zu teilen-Funktion äste ist einfach, schieben Sie Sie an das zentrale repository, damit jeder das ziehen kann von Ihnen. So einfach können Sie die Infrastruktur, die Sie bereits haben für Ihre Haupt-repository, und Sie können leicht teilen code.
Einmal ein feature-branch auf das remote nicht mehr benötigt, können Sie einfach löschen Sie Sie, indem Sie eine
Würd ich abraten sharing direkt zwischen Entwickler-Maschinen, die anfällig für Probleme wie Benutzer auf andere Netzwerke (nicht miteinander verbunden).
Wenn möglich können Sie auch auf der GitHub-Modell, wo es ein zentrales repository auf dem server (der gesegnete Haupt-repo).
Und neben das Haupt-repository, jeder Entwickler hat eine "Gabel" für das repository, in dem er vollen Zugriff auf das Projektarchiv kann, und push-Filialen nach seinem Geschmack.
In diesem Fall können Sie Ihre Mitarbeiter Gabeln wie Fernbedienungen, um Ihr Projektarchiv unter Beibehaltung einfachen Zugang zu einem zentralen server (sparen Sie sich die lästige einrichten von SSH-Schlüssel auf jeder Maschine etc etc)..
Beschreibung auf der GitHub-Modell kann hier gefunden werden:
http://www.eqqon.com/index.php/Collaborative_Github_Workflow
Update: Als eines Kommentators darauf hingewiesen, dies ist ein guter link zum Einstieg in die zentrale feature-branch-workflow: http://nvie.com/posts/a-successful-git-branching-model/
Update2: erweitern Sie auf Ihre zweite Frage:
Was Sie versuchen zu tun, drücken Sie auf eine nicht-bare-repository von einem anderen Entwickler.
Git eingeführt, in einigen vorherigen version (ich glaube 1.6 oder so) das Konzept eines bare repository ist ein repository, das hat keine ausgecheckt Staat, sondern enthält nur die Datenbank, normalerweise geht in
.git
.Die Argumentation hinter dieser änderung war, dass, wenn Sie drücken Sie, um Ihre Kolleginnen und co-Arbeitskräfte-repository (wer arbeitet derzeit auf etwas) - Sie manipulieren das repository direkt unter seiner Nase. Also er checkt version featureA-1 .. Arbeit beginnt .. Sie dann push featureA-2 auf seine repo-und wenn er Begehen will, läuft er in Schwierigkeiten geraten, weil der Zweig, den er war in erweitert wurde durch einen commit-hatte er das nicht während der Entwicklung.
Weil das ist ziemlich störend - die Meisten Menschen angenommen haben, der Begriff des lokalen git-Repositorys (die, in denen Sie aktiv arbeiten) sollte private, während Sie ein öffentliches git-repo (die Gabel), wo Sie empfangen und teilen änderungen. Auf diese Weise werden Sie nie unterbrochen werden durch andere Personen, die während Ihrer Arbeit (das ist die ganze Idee hinter dem dezentralen Modell sowieso) und kann nur integrieren änderungen, die Sie haben wollen. (Niemand kann drücken was auf Ihre aktuelle Arbeit).