6

リモートごとに.gitignoreを実行することは可能ですか?オープンソースプロジェクトのパブリックリポジトリからコアアップデートをプルできるようにしたいのですが、ローカルの変更を(現在の).gitignoredディレクトリから別のリモートのプライベートgitリポジトリにプッシュします。これは可能ですか?

ありがとう!

編集:さらに考えてみると、gitサブモジュールがこれを処理するための良い方法であるように見えます。

http://git-scm.com/book/en/Git-Tools-Submodules

EDIT2:私は一日中サブモジュールを使用してきましたが、そのソリューションは私が達成したいことには完璧に見えます。

4

4 に答える 4

2

ファイルはリポジトリに保存されるため、.gitignore他のファイルと同じようにバージョン管理されます。そのため、ブランチごとに異なる可能性があるため、ローカルコピーに必要な変更を加えて、それらをローカルブランチにコミットすることができます。

ファイルの内容.gitignoreはリポジトリの内容の取得に影響を与えないため、ローカルで変更しても、プロジェクトのパブリックリポジトリからプルしたときに得られる結果は変わりません。ただし、パブリックリポジトリのバージョンが変更された場合は、そのファイルの競合を手動で解決する必要がある場合があります。

または、ファイルをそのままにして、ローカルで追跡するファイルを追加するために.gitignore使用することもできます。git add -fファイルがgitリポジトリに追加されると、無視されても効果はありません。ただし、無視されたディレクトリに定期的にファイルを追加する場合は、ファイルを変更して、.gitignore追加する必要のあるファイルがあることをgitが通知できるようにすることをお勧めします。

パブリックプロジェクトのアップストリームに送信したい他の変更を行う場合は、ファイルにローカルで変更を.gitignore加えたり、無視されたファイルを追加したりせずに、ブランチで変更を行う必要があります。次に、これらの変更を、通常の使用のために無視されたファイルを使用してローカルブランチにマージできます。

于 2013-03-19T14:02:59.563 に答える
2

また、2つのリモコンを使用していて、それらの上の異なるファイルを無視する必要がある場合にも、同様の問題が発生しました。

これは私がしたことです:

 $ git fetch <public remote>

現在の.gitignoreへの変更を除くすべてをマージします

 $ git merge --no-ff --no-commit <public remote>/master
 $ git checkout master path/to/.gitignore
 $ git commit -m "Merged ... into ... excluding the .gitignore"

このようにして、リモートから変更をプルし、既存の.gitignoreファイルを保持します

于 2016-06-15T11:44:14.117 に答える
0

私はそうは思わないが、gitは以前私を驚かせた。

.gitignoreリポジトリスコープであり、すべてに適用されるのは私の理解です。

無視されたファイルを明示的に指定することは可能git add ...です。その場合、gitは無視されなかったかのように追跡を続行しますが、リモートごとではありません。

于 2013-03-19T13:51:46.033 に答える
0

いいえ、それは不可能です。そのために別々のブランチを維持する必要があります。

于 2013-03-19T13:59:20.457 に答える