TeamCityで実行されるAntビルドスクリプトの内部でこれを使用します。ファイル拡張子を持つファイルとその親フォルダだけをgitでチェックアウトするにはどうすればよいですか?
答えて
をビルドスクリプトがそれを更新していて、あなたがしたいだけのファイル
#clone as usual
git clone https://github.com/username/repo.git myrepo
#change into the myrepo directory that was just created
cd myrepo
#turn off tracking for everything
#this allows us to start pruning our working directory without the index
#being effected, leaving us only with the files that we want to work on
git ls-files | tr '\n' '\0' | xargs -0 git update-index --assume-unchanged
#turn on tracking for only the files that you want, editing the grep pattern
# as needed
#here I'm only going to track markdown files with a *.md extension
#notice the '--no-assume-unchanged' flag
git ls-files | grep \\.md | tr '\n' '\0' | xargs -0 git update-index --no-assume-unchanged
#delete everything in the directory that you don't want by reversing
#the grep pattern and adding a 'rm -rf' command
git ls-files | grep -v \\.md | tr '\n' '\0' | xargs -0 rm -rf
#delete empty directories (optional)
#run the following command. you'll receive a lot of 'no such file or
#directory' messages. run the command again until you
#no longer receive such messages.you'll need to do this several times depending on the depth of your directory structure. perfect place for a while loop if your scripting this
find . -type d -empty -exec rm -rf {} \;
#list the file paths that are left to verify everything went as expected
find -type f | grep -v .git
#run a git status to make sure the index doesn't show anything being deleted
git status
あなたが表示されるはずです。
行わ# On branch master
nothing to commit, working directory clean
!
と同じようにこれらのファイルを操作することができます。リモートにプルしたりプッシュしたりするなど、すべてをチェックアウトしています。 チェックアウトしたファイルのみを削除して更新します。
非常にクールです。ありがとう! –
(「チェックアウト」とは、私はあなたがgitの用語で「クローン」を意味することを前提とは - あなたは現在のリポジトリのコピーを持っていない、すなわち、リモートリポジトリからいくつかのファイルを取得する必要があります。)
短い答えはできないということです。
あなたは、いくつかの制限付きで、浅いクローンにはgitでを行う(唯一の最後のいくつかのバージョンを取得する)ことができますが、簡単なものとして、リポジトリの一部だけを、つかむ狭いクローンを(行うことができませんサブディレクトリ、または特定の条件に一致するファイルのみ)。
これは実際には分散バージョン管理システムとしてのgitの機能です。リポジトリをクローンしたときに、完全な履歴、すべてのブランチ、作業に必要なものコード上で完全にスタンドアロン。
例えば、この周りに、もちろん、さまざまな方法があります:
- あなたは
tar -x --wildcards --no-anchored '*.whatever'
- にちょうど完全なクローンを作成することをタールリモートリポジトリのアーカイブ、およびパイプを取得するために
git archive --remote=<repo>
を使用することができますローカルにどこかのリポジトリ、およびなどなど
ありがとうございました。私はGITが意図していたことに対して、私が求めているのは「穀物」に反対していることを認識しています。私は、TeamCityがGITのクローニングとどのように機能するかについていくつかの宿題をする必要があります。私はあなたがこの文脈で役に立つと思うと思う。 –
- 1. フォルダやサブフォルダをループしている間に、定義済みの拡張子を持つファイルを見つけるにはどうすればよいですか?
- 2. 異常な拡張子を持つファイルを削除するにはどうすればよいですか?
- 3. 拡張子を持たないファイルを削除するにはどうすればよいですか?
- 4. Intellij - IDE内からファイルのファイル拡張子を変更するにはどうすればよいですか?
- 5. ファイル拡張子* .aspx *でjavascriptファイルをインポートするにはどうすればよいですか?
- 6. Powershellは ".rtf"拡張子を持つファイルをフォルダとサブフォルダで検索します
- 7. フォルダ内の特定の拡張子を持つファイルを検索するバッチファイルを作成するにはどうすればよいですか?
- 8. 特定の拡張子を持つファイルを絶対パス/フォルダ構造で移動するにはどうすればよいですか?
- 9. フォルダ内の特定の拡張子を持つすべてのファイルを削除するにはどうすればよいですか?
- 10. XLS拡張機能を持つHTMLファイルをエクスポートするにはどうすればよいですか?
- 11. 拡張名を持つ複数のフォルダを削除するにはどうすればよいですか? (バッチファイル)
- 12. アップロードされたファイルの拡張子をPHPで取得するにはどうすればよいですか?
- 13. gitとの違いを持つコミットだけを表示するにはどうすればよいですか?
- 14. どのようにそのファイルを見つけるのはイメージか文書か...拡張子とコンテンツタイプなし?
- 15. 正規表現を使用して.txtファイル拡張子を.xmlファイル拡張子に変更するにはどうすればよいですか?
- 16. Gitは私はこのようなフォルダを持っている拡張子を持つ無視するが、ディレクトリ
- 17. ユーザー拡張子としてユーザースクリプトjsファイルを追加するにはどうすればよいですか?
- 18. ストレージアクセスフレームワークで珍しいファイル拡張子を設定するにはどうすればよいですか?
- 19. 拡張子に基づいてS3のファイルを制限するにはどうすればよいですか?
- 20. localstorageから拡張子「.log」でファイルを取得するにはどうすればよいですか?
- 21. Makeでループ内のファイル名拡張子を削除するにはどうすればよいですか?
- 22. SSRSでファイル名に.txt拡張子を持つcsvファイルを作成するにはどうすればよいですか?
- 23. 拡張子がxlsの古いExcelファイルをインポートするにはどうすればよいですか?
- 24. git - 拡張子を付けずに1つのファイルだけを無視するには?
- 25. zipファイルの中で私に送られた拡張子のないファイルのMIMEタイプを見つけるにはどうすればいいですか?
- 26. nginxのURLからファイル拡張子を削除するにはどうすればよいですか?
- 27. ループが別のファイル拡張子を持つフォルダ内のすべてのファイル
- 28. 1つのファイルだけをフォルダに保存し、gitで他のファイルを無視するにはどうすればいいですか?
- 29. gitで特定の拡張子を持つファイル以外のすべてのファイルを無視するにはどうしたらいいですか?
- 30. ファイル拡張子.kt?これはどのようなファイルですか?
これまでに何がありますか? – alex
現在、Subversionを使用しています(すぐにGitに移行します)、SVNリポジトリの大きなスラブ(ディレクトリのリスト)をチェックアウトし、Antファイルパターンを使用して検索する必要があります。動作は遅いです。 –
AFAIK Subversion APIは、このタイプのパターンベースの検索とチェックアウトをサポートしていません。私は最新のv1.7をチェックしていませんが、とにかくGitに移行しています。以前は、パターンベースのチェックアウトのリクエストをSubverisonチームに提出しましたが、Gitが既にそれを行ったかどうかは不思議でした。代わりに、gitコマンドを生成することに基づく別の方法があります。 –