Wir verwenden ein Git-Repository, um unser Projekt zu speichern. Wir haben unsere Filialen von der ursprünglichen Filiale abweichen. Aber jetzt wollen wir ein kleines neues Projekt erstellen, um einige Dokumentationen zu verfolgen. Zu diesem Zweck möchten wir einen neuen leeren Zweig erstellen, um mit dem Speichern unserer Dateien zu beginnen, und ich möchte, dass andere Benutzer des Netzwerks diesen Zweig klonen.
Wie können wir das machen?
Ich habe einige Dinge ausprobiert, aber sie haben nicht funktioniert.
$ mkdir proj_doc; cd proj_doc
$ git init
$ git add .
$ git commit -m 'first commit'
$ git br proj_doc
$ git co proj_doc
$ git br -d master
$ git Push Origin proj_doc
Es scheint, als würde der Zweig in Ordnung gebracht, aber wenn ich einen Abruf oder Pull mache, werden Informationen aus anderen Zweigen heruntergeladen, und dann erhalte ich auch einige zusätzliche Dateien aus anderen Projekten. Was ist die beste Lösung?
Sie können einen Zweig als Waise erstellen:
git checkout --Orphan <branchname>
Dadurch wird ein neuer Zweig ohne Eltern erstellt. Dann können Sie das Arbeitsverzeichnis löschen mit:
git rm --cached -r .
und fügen Sie die Dokumentationsdateien hinzu, schreiben Sie sie fest und schieben Sie sie auf github.
Ein Pull oder Fetch aktualisiert immer die lokalen Informationen zu allen Remote-Zweigen. Wenn Sie nur die Informationen für einen einzelnen Remote-Zweig abrufen möchten, müssen Sie diese angeben.
Die richtige Antwort ist, einen Orphan Branch zu erstellen. Wie das geht, erkläre ich ausführlich in meinem Blog: http://sidja.in/post/62663941071
...
Bevor Sie beginnen, aktualisieren Sie auf die neueste Version von GIT. Führen Sie Folgendes aus, um sicherzustellen, dass Sie die neueste Version ausführen
which git
Wenn es eine alte Version ausspuckt, müssen Sie möglicherweise Ihren PATH um den Ordner erweitern, der die gerade installierte Version enthält.
Ok, wir sind bereit. Erstellen Sie einen Orphan-Zweig, nachdem Sie eine CD in dem Ordner erstellt haben, der Ihre Git-Kaufabwicklung enthält. In diesem Beispiel bezeichne ich den Zweig als "mybranch".
git checkout --Orphan mybranch
Löschen Sie alles in der Orphan-Filiale
git rm -rf .
Nehmen Sie einige Änderungen vor
vi README.txt
Fügen Sie die Änderungen hinzu und übernehmen Sie sie
git add README.txt git commit -m "Adding readme file"
Das ist es. Wenn du läufst
git log
sie werden feststellen, dass der Festschreibungsverlauf bei Null beginnt. Führen Sie einfach aus, um zu Ihrem Hauptzweig zurückzukehren
git checkout master
Sie können zum Zweig Orphan zurückkehren, indem Sie ausführen
git checkout mybranch
Erstellen Sie einen leeren neuen Zweig wie folgt:
true | git mktree | xargs git commit-tree | xargs git branch proj-doc
Wenn sich Ihre proj-doc-Dateien bereits in einem Commit unter einem einzelnen Unterverzeichnis befinden, können Sie den neuen Zweig folgendermaßen erstellen:
git commit-tree thatcommit:path/to/dir | xargs git branch proj-doc
dies ist möglicherweise praktischer als git branch --Orphan
, wenn Sie dann viel git rm
und git mv
zu tun haben.
Versuchen
git branch --set-upstream proj-doc Origin/proj-doc
und sehen Sie, ob das bei Ihrem Problem hilft, zu viel zu holen. Auch wenn Sie wirklich nur einen Zweig abrufen möchten, ist es am sichersten, ihn in der Befehlszeile anzugeben.
Angenommen, Sie haben einen Zweig master
mit Dateien/Verzeichnissen:
> git branch
master
> ls -la # (files and dirs which you may keep in master)
.git
directory1
directory2
file_1
..
file_n
git checkout —Orphan new_branch_name
ls -la |awk '{print $9}' |grep -v git |xargs -I _ rm -rf ./_
git rm -rf .
touch new_file
git add new_file
git commit -m 'added first file in the new branch'
git Push Origin new_branch_name
In Schritt 2 entfernen wir einfach alle Dateien lokal, um Verwechslungen mit den Dateien in Ihrem neuen Zweig und den Dateien, die Sie im Zweig master
behalten, zu vermeiden. Dann lösen wir die Verknüpfung aller dieser Dateien in Schritt 3. Schließlich arbeiten Schritt 4 und danach mit unserem neuen leeren Zweig.
Sobald Sie fertig sind, können Sie ganz einfach zwischen Ihren Filialen wechseln:
git checkout master
git checkout new_branch
wenn die Git-Version keine --Orphan-Option hat, sollte diese Methode verwendet werden.
git symbolic-ref HEAD refs/heads/<newbranch>
rm .git/index
git clean -fdx
Nach ein paar Arbeiten
git add -A
git commit -m <message>
git Push Origin <newbranch>