8

私は大学院生で、多くのスクリプト、bibtexの参考文献データ、ラテックスの論文ドラフト、オープンオフィスでのプレゼンテーション、scribusのポスター、図と結果のデータを持っています。すべてを1つのプロジェクトにバージョン管理下に置きたいと思います。次に、書誌データなどの部分で作業する必要がある場合は、そのサブディレクトリをチェックアウトし、必要に応じて変更してからマージし直したいと思います.1つのバージョンを自宅のコンピューターにチェックアウトできるようにしたいです。私の仕事用コンピュータとは別のものを使用して、それぞれに個別に変更を加え、最終的にそれらをマージして戻します。また、この大きなプロジェクトからコードをチェックアウトして、バージョン管理とともに別のプロジェクトにインポートできるようにしたいと思います。変更する可能性がある場合は、それらを元のプロジェクトにマージできるようにしたいと思います。

私の理解に基づいて、gitサブツリーはこれを行うことができます。

http://github.com/apenwarr/git-subtree

私がやろうとしていることに沿った例があります:

http://psionides.jogger.pl/2010/02/04/sharing-code-between-projects-with-git-subtree/

私のプロジェクトのトランクにディレクトリが含まれているとしましょう:(bib bin cfg data fig src todo)。

使うとき

git subtree split -P bib -b export
git checkout export

bibディレクトリに加えて、srcディレクトリなどの.gitignoreに基づい て無視またはバイナリと見なされるべきすべてのファイルと、チルダまたは./dataディレクトリで終わるすべてのファイルを取得します。

dwickrama@DWwork:~/research/trunk$ ls * -r
biblography.bib  JabRef

src:
script1.sh~ README~         script2.sh~
script3.sh~ script4.R~  script5.awk~
script5.py~ 

cfg:
cfgFile1.ini~  cfgFile2.ini~  cfgFile3.ini~

bin:
bigBinaryPackage1   bigBinaryPackage2

dwickrama@DWwork:~/research/trunk$ 

私の.gitignoreファイルは次のとおりです。

*.doc diff=word
*.tex diff=tex
*.bib diff=bibtex
*.py diff=python
*.eps binary
*.jpg binary
*.png binary
./bin/* binary
*~

これを防ぐにはどうすればよいですか?

4

3 に答える 3

5

無視されたファイルはすべて実際にはリポジトリに含まれていないように見えます。前回のチェックアウトから残っているだけです。

元のプロジェクトから特定のサブツリーを抽出したため、.gitignoreファイルは存在しなくなり、ファイルは「無視」されなくなり、gitステータスで表示されます。しかし、それらはあなたのリポジトリの一部でもありません。彼らはただそこに座っているだけです。

'gitclean'を使用してそれらをクリーンアップしてみてください。

于 2010-03-24T01:58:05.190 に答える
4

これはgit-subtreeに固有のものではないと思います。2つのブランチを切り替えて、一方がgitignoreにある余分なファイルを生成し、もう一方がそれらについて認識しない場合も、同じ状況になります。 .gitignoreにファイルを追加すると、ファイルが完全に無視され、何も実行されないことが予想されるため、このgitの動作はかなり正しいと思います。これには、ブランチに移動したときにファイルを削除しないことも含まれます。 gitignoredされていないところ...

これに対処できる可能な方法は次のとおりです。

  • サブディレクトリ/サブプロジェクトのgitignoreにも同じファイルを追加します
  • ブランチを切り替える前にgitcleanを実行してください
  • これを無視してください。結局のところ、コミットを外部にプッシュする以外に、git subtree splitによって生成されたブランチではあまり作業を行わないでしょう...サブプロジェクトで個別に作業したい場合は、おそらくチェックアウトしてくださいメインディレクトリの外にある別のディレクトリにサブプロジェクト自体を配置します。
于 2010-05-08T18:42:05.037 に答える
1

.gitignoreファイルがgitignore構文とgitattributes構文を誤って混合してます

ファイルには.gitignoreパターンのみが含まれている必要があります。のようなもの

*.py diff=python
*.eps binary

.gitattributes代わりにファイルに属します。

于 2014-03-27T19:59:22.253 に答える