2014-09-23 15 views
12

Ich habe ein Git-Repository bei Github mit Dateien, file_1 und file_2 im Master-Zweig. Ich muss einen anderen Zweig "selektiv" mit nur file_2 darin haben. Was ich getan habe, war, dass ich einen neuen Zweig mit dem Checkout-Befehl erstellt habe. Dann habe ich file_1 gelöscht und zugesagt. Jetzt Master Zweig hat 2 Dateien, file_1 und file_2 und selektiven Zweig hat nur file_2. Ich kann spezifisch Änderungen vornehmen und file_2 für beide Zweige festschreiben. Ich habe bekommen, was ich wollte. Wenn ich mich nicht mit dem Master vereinige, gibt es überhaupt kein Problem. Ist das der Weg, es zu tun? Oder gibt es einen anderen besseren Weg?Git - Selektive Verzweigung

Mein Ziel ist, dass ich möchte, dass mein Client nur auf bestimmte Dateien in meiner Codebasis, d. H. Meinem Master-Zweig, zugreift. Ich brauche nur die Dateien, auf die der Client im anderen Zweig zugreifen soll.

Vielen Dank im Voraus

+0

denke ich, der richtige Weg, dies zu tun, ist eine saubere Repository ohne Geschichte für den Datenanteil mit dem Kunden zu haben und sie als Submodul verwenden (plus ein Skript in Ihrem Hauptprojekt, um Ihren ganzen Baum einzurichten). Auf diese Weise verlieren Sie eine ältere Version der Datei, die Sie nicht freigeben möchten. –

Antwort

10

ich zu dieser Einrichtung einer hinzufügen würde:

git checkout selective 
git merge -s ours master 

, dass eine Zusammenführung zwischen selective und master aufnehmen wird (während selective Änderungen beibehalten, hier speziell die Streichung von file1)

Das wird sicherstellen, dass die nächste Zusammenführung von master zu selective wird nur file2 aktualisieren, und würde nicht t wiederherstellen file1 in selektiven Zweig.

+0

das war eine ausgezeichnete zwicken. Vielen Dank!. Kann ich daraus schließen, dass dies der richtige Weg ist? – Shibin

+0

Ja, es wird funktionieren. – VonC

+0

Ok. Danke noch einmal – Shibin

0

Verwenden Sie die folgenden Code:

$ git checkout -b selective_branch 
$ git branch 
master 
* selective_branch 

$ git checkout master -- file_2 
$ git commit -m "Update file_2 from master" 

$ # make changes in file2 in master branch 
$ git checkout master 
$ git branch 
* master 
selective_branch 
$ git status -s 
M file_2 
$ git add file_2 

$ git commit -m 'Added abc function in file_2' 
$ git push origin master 


$ # make changes in file2 in selective branch 
$ git checkout selective_branch 
$ git branch 
master 
* selective_branch 
$ git status -s 
M file_2 
$ git add file_2 

$ git commit -m 'Added abc function in file_2' 
$ git push origin selective_branch 


$ # Now merge the changes from selective_branch to master branch. Switch the branch to master 
$ git checkout master 
$ git branch 
* master 
selective_branch 
$ git merge origin/selective_branch 
$ # After Merge Master and selective_branch will point to same Commit ID 
$ # After testing you can push the changes to the master branch 
$ git push origin master 
Verwandte Themen