[解決済み] git export」(「svn export」のようなもの)を行うか?
2022-03-14 11:52:49
質問
を使わずにツリーのコピーを作成する、良い "git export" ソリューションがあるかどうか、ずっと考えていました。
.git
リポジトリディレクトリです。私が知っているのは少なくとも3つの方法です。
-
git clone
を削除し、その後に.git
リポジトリディレクトリを作成します。 -
git checkout-index
はこの機能を暗示していますが、"目的のツリーをインデックスに読み込むだけ..."で始まっており、どうやればいいのか全く分かりません。 -
git-export
はサードパーティのスクリプトで、本質的にはgit clone
を一時的な場所にコピーし、その後にrsync --exclude='.git'
を最終目的地に送る。
どの解決策も、私には納得のいくものではありません。最も近いのは
svn export
というのも、どちらもターゲットディレクトリを空にする必要があるからです。しかし、インデックスにツリーを読み込むというのがどういうことなのかがわかれば、オプション2の方がもっと良さそうです。
解決方法は?
おそらく、これを実現する最も簡単な方法は
git archive
. もし、本当に展開されたツリーだけが必要なら、次のようにすることもできます。
git archive master | tar -x -C /somewhere/else
git から何かを「エクスポート」する必要がある場合、大抵の場合は圧縮されたアーカイブが必要なので、以下のような方法をとります。
git archive master | bzip2 >source-tree.tar.bz2
ZIP アーカイブです。
git archive --format zip --output /full/path/to/zipfile.zip master
git help archive
を使えば、かなり柔軟に対応できます。
アーカイブには.gitディレクトリは含まれませんが、.gitignoreや.gitattributesなどのgit固有の隠しファイルが含まれることに注意してください。アーカイブにそれらを含めたくない場合は、.gitattributes ファイルに export-ignore 属性を指定し、アーカイブを作成する前にそれをコミットするようにしましょう。 続きを読む...
注:インデックスのエクスポートに興味がある場合、コマンドは次のとおりです。
git checkout-index -a -f --prefix=/destination/path/
(参照 グレッグの回答 をご覧ください)
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] サブモジュールを含む "git clone "の方法は?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】git revert <hash> not allowed due to a merge but no -m option was given.
-
[解決済み】GitHubで空のブランチを作成する
-
git commits with an error: 更新が拒否されました。現在のブランチの先端が、このブランチより後ろにあるためです。
-
git revert 複数コミット
-
[解決済み] Git エラー : 'upstream' は git リポジトリでないようです。
-
[解決済み] git rebase: "error: cannot stat 'file': パーミッションが拒否されました"
-
[解決済み] Gitのフォルダ構造で変更・追加されたファイルのみをエクスポートする機能
-
[解決済み] gitからクローンしたプロジェクトからバージョントラッキングを削除するには?
-
[解決済み] GIT: 特定のフォルダへのチェックアウト
-
[解決済み] git shallow clone (clone --depth) はリモートブランチを見逃す