7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Gitで別のリポジトリの特定のコミットを取り込む・対応したコミットをおこなう

Posted at

やりたいこと

特定のリポジトリのコミットに対応して(変更を取り込んで)、別のリポジトリにコミットしたいことがあります。
例えば、GitHub上のリポジトリにある英語の公式サイトを翻訳して、別のリポジトリの日本語公式サイトを作成している場合などです。

例: 英語公式サイトのコミットに対応して、日本語サイトのコミットをおこないました。

git-cherrypick.png

そんなときにはgit cherry-pickを使いましょう!

git cherry-pickとは

git cherry-pickとは、別リポジトリまたは他のブランチの特定コミットを自分が今いるブランチに反映できるコマンドです。

以下のようにすると、変更が取り込まれ、またコミッタ情報には元のコミットをした人に加えて新たにコミットをおこなった自分自身が入るようです。

ちなみにWikipediaによるとcherry-pickの意味は以下のとおりだそうです。

cherry-pickingの語義は、サクランボの熟した果実を熟していないものから選別することであり、転じて「良い所だけを取る」「(特売品専門の)購買者」「つまみ食い」の意味で使用される。
  (略)
Gitのようなバージョン管理システムにおいて、あるコミットで行われた変更を別な箇所に「つまみ食い」的に適用する操作がチェリーピックと呼ばれる[1]。

手順

上の概略図も参考にしながら、手順を参照すると少しわかりやすいと思います。

日本語サイトのリポジトリをローカルにプルしておき、ブランチ(名前は適当にここではdev)を切っておきます。

git remote add english https://github.com/abc-english/example-website.git
git fetch english
git cherry-pick {englishの対応したいコミットハッシュ値(4e106d...)}

英語サイトをenglishというリモートに追加、フェッチします。
その中から日本語サイトに反映させたい・対応付けさせたいコミットをハッシュ値によって指定して取り込みます。これがgit cherry-pickコマンドです。

日本語訳がある程度進んでいる場合には競合が発生するので、適当なエディタで編集して解消(日本語訳)をおこないます。

git add <path>
git commit -m {対応した英語サイトのコミットのコミットメッセージ}
git push --set-upstream origin dev

編集をおこなったファイルをステージングし、コミットをおこないます。コミットメッセージは対応したコミットのコミットメッセージをコピペしたほうが対応したことがわかりやすくなると思います。

devブランチとして日本語サイトのリモートリポジトリにプッシュして完了です。

あとはGitHubなどでプルリクエストを出すなり何なりしましょう。
PRに含まれるコミットが英語サイトのコミットに対応したものだと、たぶん気づいてもらえるはずです!

参考文献

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?