2013-03-21 4 views
5

サテライトからのコミットがしばらくの間プッシュされる中央リポジトリがあるとします。開発者Aは自分のレポをコミットし、Bは自分自身でレポをコミットします。著者が私のレポにコミットしたかのようにgit patchを適用するには?

ここで、AはBのコミットの1つを彼のレポに組み込みたい(彼は引き出しに直接アクセスできない)。

1つの方法は、パッチを作成してAに送信することですが、その場合は2つの問題があります。 1.パッチは、コミットしたAのローカル修正として表示されます) 2.中央repoが更新されると、変更は競合します(2人の異なる著者によってプッシュされます)。

ローカルAレポの "コミットとして"パッチを直接適用して、中央リポジトリ(すなわち起点)から引っ張られたように見せかける方法はありますか?

PS:(これは当てはまらない:コメントを参照してください:検証するまでテキストをストライクする方法はありますか?)さらにいくつかの調査とテストを行った後、git am < git-formatted-patchはパッチローカルマスターにコミットされているように見えます(Bが中央レポにプッシュすると同じコミットとして認識されることを望みます)。パッチをコミットしないまま残すgit applyのようです...

+1

'git am'は、元のコミットと同じコミットになりません。作者の識別と時間は保存されますが、新しいコミットには異なるコミット時間があります(あなたが誰であるかについてgitに嘘をつけていない限り)別のコミッターIDです。これらの違いは、異なるSHA1 IDを持つ結果のコミットになります。 – qqx

答えて

3

Bは、パッチではなくbundleを作成して送信できます。これにより、プッシュまたはフェッチに使用可能なトランスポートのいずれも機能しない場合に、コミットを送信できます。

13

git amあなたが探しているものです 彼に現地に約束してgit format-patchを依頼してください。これにより、パッチが作成されます。 git amを使ってリポジトリに追加することができます。

関連する問題