[解決済み] Gitでコミットを部分的にチェリーピックする
質問
2つの異なるブランチで作業しています。 リリース と 開発 .
にコミットされたいくつかの変更をまだ統合する必要があることに気づきました。 リリース ブランチに戻し 開発 ブランチを作成します。
問題は、すべてのコミットが必要なわけではなく、特定のファイルの一部だけが必要なため、単純な
git cherry-pick bc66559
ではうまくいきません。
をすると
git show bc66559
diffを見ることはできますが、それを部分的に私の現在の作業ツリーに適用する良い方法をよく知りません。
どのように解決するのですか?
ここで必要になるのは
git add -p
(
-p
の同義語です。
--patch
). これはコンテンツを追加するためのインタラクティブな方法を提供し、それぞれのハンクを入れるべきかどうかを決定させ、必要であればパッチを手動で編集することも可能にしています。
cherry-pickと組み合わせて使う場合。
git cherry-pick -n <commit> # get your patch, but don't commit (-n = --no-commit)
git reset # unstage the changes from the cherry-picked commit
git add -p # make all your choices (add the changes you do want)
git commit # make the commit!
(を思い出させてくれたTim Heniganに感謝します)。
git-cherry-pick
には
--no-commit
オプションが必要であることを指摘してくれた Felix Rabe に感謝します。
git reset
. もし、コミットから少しだけ残したいだけなら
git reset <path>...
を使用して、これらのファイルだけをアンステージします)。
に特定のパスを指定することができます。
add -p
が必要です。パッチから始めるのであれば
cherry-pick
で
apply
.
本当に必要なら
git cherry-pick -p <commit>
(そのオプションは存在しません) を使用することができます。
git checkout -p <commit>
これは、現在のコミットと指定したコミットとの差分をとり、その差分から個別にハンクを適用できるようにするものです。このオプションは、引き込んだコミットの一部でマージマージが発生している場合に便利です。(ただし
checkout
とは異なります。
cherry-pick
:
checkout
を適用しようとします。
<commit>
の内容は完全に
cherry-pick
は、指定したコミットとその親コミットの差分を適用します。つまり
checkout
はそのコミット以上のものを適用することができ、それはあなたが望む以上のものであるかもしれません)。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] git rebase の取り消し
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】Gitでコミットをチェリーピックするというのはどういう意味ですか?
-
[解決済み】ローカルの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 commit」は私の変更を保存しないのですか?
-
[解決済み] git rebase fatal: 必要なリビジョンは1つです。
-
[解決済み】GitHubで空のブランチを作成する
-
[解決済み] [Solved] 作業ツリーのディレクトリ 'example.com' を作成できませんでした。パーミッションが拒否されました
-
git revert 複数コミット
-
gitコミット発生 ! [リモート拒否] master -> master (pre-receive hook declined) 解決策
-
[解決済み] リモートから<branch name>とマージするように構成が指定されていますが、そのような参照は取得されませんでしたか?
-
[解決済み] git stashを元に戻す
-
[解決済み] 現在の支店にはトラッキング情報がありません
-
[解決済み] Gitのプッシュエラーです。Unable to unlink old (Permission denied)です。