wake-up-neo.com

So erstellen Sie einen neuen leeren Zweig für ein neues Projekt

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?

300
fazineroso

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.

588
Hiery Nomus

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
65
Sid Jain

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.

10
jthill

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

Schritt für Schritt, wie man einen leeren Zweig macht:

  1. git checkout —Orphan new_branch_name
  2. Stellen Sie sicher, dass Sie sich im richtigen Verzeichnis befinden, bevor Sie den folgenden Befehl ausführen:
    ls -la |awk '{print $9}' |grep -v git |xargs -I _ rm -rf ./_
  3. git rm -rf .
  4. touch new_file
  5. git add new_file
  6. git commit -m 'added first file in the new branch'
  7. 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
6
user1723157

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>
5
cyb0k