2016-09-08 6 views
1

レッツは、私がこれを行うと言う人跡未踏のリモートファイル/ディレクトリの追跡を開始:私のようなものを参照のgit -

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を入力:だから今、私は唯一の特定のディレクトリを追加したい

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

をし、その内容

git reset f2/ 
git reset f3/ 

は今git statusを実行している:

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

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

だから、それは私が必要と私はローカルに追加f2f3ディレクトリをコミットして削除することができます何が、私はこれを行うことができます。しかし、後で私が今例f2ディレクトリとその内容を追跡したいと思ったらどうすればいいですか?

もう一度git merge --no-ff --no-commit merge remotes/some_other_remote_repo/masterを実行しても、すべてが最新であると表示されます。だから、それは今それらのuntrackedディレクトリを無視します。 gitが遠隔地にある特定のディレクトリを追跡するように指示する方法ですか?

+0

ここでGitはディレクトリそのものを追跡しないことに言及する価値があります。代わりに、チェックアウト時に、 'f1/some.txt'というファイルを持つためにGitがディレクトリ' f1'を作成する必要がある場合は、そうします。コミットXからコミットYに移動するときに、コミットXが 'f1/some.txt'を持ち、コミットYが' f1'に何もない 'f1'が空になると、Gitは' f1'を取り除く傾向があります。 (Gitは空のディレクトリを削除できないので、この2番目の動作をあまりにも多くカウントしないでください。) – torek

+0

@torekはい私は理解しています。私は自分自身に気づいた。私の場合、すべてのサブディレクトリはモジュールです。そのため、ディレクトリ全体を含めるか除外する必要があります。 – Andrius

答えて

2

ソリューション

リモートブランチを再度マージします。これにより、ファイルが取り込まれます(再度)。

免責事項

私はこの非常に悪い習慣を考えます。最初に削除されたファイルをマージした後は、gitの履歴にマージが成功していますが、これは当てはまりません。

勧告

代わりに、あなたは、remote/masterの上に新しいブランチsome_featureを作成し、それらのファイルを削除し、some_featureをマージする必要があります。 すべてのファイルを指定する場合は、完全にremote/masterをマージします。

ファイルsome.txtsome1.txt、...がすべて異なるコミットで追加されている場合は、少数の場合はそれらのコミットをチェリーピックアップすることもできます。

+0

私は実際にあなたの推薦が好きです。それはより多くの制御を与える。私はそれを試みるつもりです。ありがとう。 – Andrius