Amazon

2014年5月1日木曜日

gitリポジトリの一時的な持ち出し

閉じたネットワークにあるgitのリポジトリのソースを一時的によそで修正するには、git archiveとgit format-patchとgit amが便利です。


  • 事前に編集対象の最新ソースをアーカイブ
  • 修正する環境で、新規にgitリポジトリを作成して、アーカイブしたソース一式をコミットして修正用ブランチを作成
  • 修正が完了したらgit format-patchを使ってオリジナルと修正のパッチファイルを作成
  • 閉じたネットワークに戻ったらgit amでパッチを適用


・最新ソース一式をアーカイブ

git archiveコマンドで最新ソース一式のアーカイブを作成します。
$ git archive --format=tar HEAD -o ../archive.tar

・gitリポジトリを作成してアーカイブしたファイル一式をコミット

gitリポジトリを新規に作成してアーカイブしたファイルを展開、コミットします。
修正用のブランチを作成してチェックアウトし、普通に修正作業をします。
$ git init remote.git
$ cd remote.git/
$ tar xf ../archive.tar 
$ git add *
$ git commit -m "base"
$ git branch work
$ git checkout work
$ 
... 修正作業 ...

・パッチの作成

git format-patchでオリジナルと修正版のパッチを作成します。
パッチは、commitした数だけ作成されるのでアーカイブして持ち帰ります。
$ mkdir patch
$ cd remote.git
$ git format-patch master..work -o ../patch
../patch/0001-update.patch
$

・パッチの適用

パッチを展開してgit amコマンドで適用します。
$ git am ../patch/*
Applying: update
$

0 件のコメント: