2016-09-08 4 views
1

Lassen Sie sagen, ich dies tun:git - starten untracked Remote-Dateien Tracking/Verzeichnisse

mkdir some_repo 
cd some_repo 
git init 
git touch dummy.txt 
git commit -m 'dummy commit' 
git remote add -f some_other_remote_repo path/to/.git 
git merge --no-ff --no-commit merge remotes/some_other_remote_repo/master 

git status Keine Eingabe Ich sehe so etwas wie:

new: f1/some.txt 
new: f1/some11.txt 
new: f2/some2.txt 
new: f3/some3.txt 

So, jetzt habe ich nur bestimmte Verzeichnisse hinzufügen möchten, und ihr Inhalt. Ich kann dies tun:

git reset f2/ 
git reset f3/ 

jetzt läuft git status:

new: f1/some.txt 
new: f1/some11.txt 

untracked: f2/some2.txt 
untracked: f3/some3.txt 

Also es tut, was ich brauche und ich kann begehen und entfernen lokal hinzugefügt f2 und f3 Verzeichnisse. Aber was tun, wenn ich später entscheide, dass ich jetzt zum Beispiel f2 Verzeichnis und seinen Inhalt verfolgen möchte?

Nein, wenn ich wieder git merge --no-ff --no-commit merge remotes/some_other_remote_repo/master laufen, wird es sagen, dass alles auf dem neuesten Stand ist. Daher ignoriert es jetzt diese nicht verfolgten Verzeichnisse. Ist es eine Möglichkeit, git bestimmte Verzeichnisse, die sich nur in der Ferne befinden, zu verfolgen?

+0

Es ist erwähnenswert, dass Git Verzeichnisse nicht per se verfolgt. Stattdessen muss Git ein Verzeichnis 'f1' erstellen, um eine Datei' f1/some.txt' zu haben. und wenn man vom Commit X zum Commit Y wechselt, wenn Commit X 'f1/some.txt' hat und Commit Y nichts in' f1' hat und 'f1' leer wird, tendiert Git dazu,' f1' zu entfernen. (Ich habe im Laufe der Jahre viele Eckenfälle gesehen, in denen Git keine leeren Verzeichnisse entfernen kann, also solltest du dieses zweite Verhalten nicht zu viel zählen.) – torek

+0

@torek ja ich verstehe. Das habe ich selbst bemerkt. Obwohl in meinem Fall jedes Unterverzeichnis ein Modul ist. Daher sollte das gesamte Verzeichnis entweder eingeschlossen oder ausgeschlossen werden. – Andrius

Antwort

2

Lösung

Verbinden Sie den Remote-Zweig erneut. Dies zieht die Dateien (wieder) ein.

Haftungsausschluss

Ich halte diese sehr schlechte Praxis. Nach der ersten Zusammenführung mit gelöschten Dateien haben Sie eine erfolgreiche Zusammenführung in Ihrer Git-Geschichte - dies ist jedoch eindeutig nicht der Fall.

Empfehlung

Stattdessen sollten Sie eine Niederlassung some_feature oben auf remote/master, löschen Sie die Dateien erstellen und dann some_feature verschmelzen. Wenn Sie sich entscheiden, dass Sie alle Dateien möchten, führen Sie den Befehl remote/master vollständig zusammen.

Wenn die Dateien some.txt, some1.txt, ... alle in verschiedenen Commits hinzugefügt werden, können Sie auch diese Commits auswählen, wenn sie nur ein paar sind.

+0

Ich mag Ihre Empfehlung. Es gibt mehr Kontrolle. Ich werde es versuchen. Vielen Dank. – Andrius

Verwandte Themen