Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
まとめ $ git diff --no-prefix HEAD~ > thisis.patch $ patch --dry-run -p0 < thisis.patch $ patch -p0 < thisis.patch git diffに--no-prefixをつける事で、普通のpatchで当てられるパッチファイルを出力できます。この例ではHEADの1個前*1からHEAD*2までのパッチです。 普通のpatchコマンドのほうの知識があまり無くて-p0がいまいちよく分からないんですが、git diff --no-prefixで作成したパッチファイルを当てるには必要みたいです。--dry-runは、実際には当てないけど当てた場合の結果を出力します。なので、まずは--dry-runで確認して、問題が無ければ実際にパッチを当てます。 エントリー書いた後に教えてもらった補足 patch -p1の
う〜ん、困った。 あるコミットはUTF-8、またあるコミットはEUC-JPでログを書くなんて…。 修正しようにも $ git rebase -iでは文字化けてしてまってうまくいかない。 ちょっと大げさかもしれないけど、次の方法で修正する。 既存コミットのパッチに書き出す 第1引数にはパッチを作成し始めるコミットを指定する。 今回はすべて書き出すのでmasterを指定。 $ git format-patch masterコマンドを実行するとその場にパッチを作成しようとするので要注意。 patchesなど適当なディレクトリに移動しておくべし。 問題のパッチを修正 さて、以下のようなパッチファイルができた。 $ ls -1 0001-FIXME-xxx-xxx-xxx.patch 0002-FIXME-xxx-xxx-xxx.patch 0003-FIXME-xxx-xxx-xxx.patch
subversionのリポジトリをgitに変換はよくあると思うが、gitのリポジトリをSubversionに変換というのを今回やりたい。 というのも、何度もいっているが、中央には、Subversionで、各ワークをgitで私は使いたいからだ。 (これは、Tracとはviewvcとか、すでに構築してしまった環境を変えるのも面倒というのもある。) しかし、今回はとりあえず、ネットにつながっていない環境で初めてしまったgitのリポジトリをSubversionに変換して、 再度、git-svnで再開したいのだ。 こんな用途を持っている人はあまりいないのか、WEBで方法を探したがすぐには見つからなかったので、 自分なりに、次のような手順でログ情報だけでも取り込むことにした。 Subversionのリポジトリを作成 ここでは、Subversionでのリポジトリを作成する方法は述べない。 で、s
差分を作る 作業ディレクトリで、以下を実行する。 $ svn diff -r 10:HEAD > foo.diff patchをあてる $ patch -p0 -E < foo.diff -E オプションを指定すると、パッチ適用後に空のファイルを削除する。 また、patchが当たるファイルを確認したい場合は、--dry-runオプションをつける。 patch -p0 --dry-run < foo.diff このとき、ファイルにpatchは適用されない。 あてたpatchを取り消す -Rオプションで、一応可能。 $ patch -p0 -R < foo.diff 元々-Rオプションは、差分の取り方が逆であったときに利用するオプション。 結果的に取り消すことができるが、そのような目的のオプションではないので、過信しないこと。
2つのファイルを比較して、行ごとの差分を表示したい場合には diff というコマンドを使用します。diff は、指定された ファイル1 と ファイル2 の内容を比較して、ファイル1 をどのように変更すれば ファイル2 と同じになるかという差分を出力します。 出力形式にはいくつかの種類がありますが、一般的には次のオプションとともに使用されます。 $ diff -urN test.txt.org test.txt --- test.txt.org Wed Apr 25 17:14:36 2001 +++ test.txt Wed Apr 25 17:14:11 2001 @@ -1,7 +1,9 @@ -This is file1 +This is file2 line1 line2 line3 line4 +line5 +line6 line7
diffとpatchコマンドを使うとファイルの変更を別のファイルに簡単に適用することができます。 例えば、サイトでWEBサーバーを複数台で運用していて1台のWEBサーバーに行った設定ファイルの変更を他のサーバーに適用するときなどに使えます。 基本的な作業の流れ ファイルへのパッチ適用を行う際はこんな感じです。 diffコマンドでパッチファイルを作成 作成したパッチファイルを元に、patchコマンドでパッチを適用 パッチファイルの作成 パッチファイルの作成にはdiffコマンドを使用します。コマンドの書式は以下のような形になります。 $ diff -u(または -c) 変更前のファイル 変更後のファイル > パッチファイル名オプションの「-u」はパッチファイルを、unified diff形式で出力するという指定です。 「-c」の場合はcontext diff形式での出力になります。 「-u(ま
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く