1. ホーム
  2. git

TFS の shelve/unshelve や cherry-pick に相当する Git のコマンドは何ですか?

2023-07-29 02:56:05

質問

TFSのshelve/unshelveコマンドはとても便利で、使い方もとてもシンプルだと思います。Git における同等のコマンドは何でしょうか。

TFSでのシナリオは以下の通りです。

  • トランクに変更を加えました
  • 棚上げする : 変更セットをサーバーに保存し(ラベル付き)、変更前のソースを取得する
  • トランクで作業する
  • 誰かがシェルブを解除することができます : 彼のワークスペースに変更セットを取得します。

チェリーピックというコマンドがあることは知っていますが、ワークフローや必要性に合っているかどうかはわかりません。

どのように解決するのですか?

あなたが説明したことは、次のようなものです。 git stash ただし、git では自分自身のリポジトリを持っているので (サーバー上の単一のリポジトリではなく)、自分だけがその変更を取り消すことができます。

一般的な考え方は

# do some stuff
vim foo/bar.c
# stash away your changes
git stash

# do some other things...

# retrieve your changes
git stash pop

このチェンジセットに他の人がアクセスできるようにしたい場合、代わりに作業ブランチにコミットすることになるでしょう。

# make yourself a branch
git checkout -b temp-featureA
# commit to it
git add foo/bar.c; git commit

# now you push this branch (or they could just fetch straight from you)
git push origin temp-featureA


# Now, in someone else's repo:
# Fetch updates
git fetch origin
# Make a branch tracking the remote branch
git branch temp-featureA origin/temp-featureA

# Either check it out:
git checkout temp-featureA
# or cherry-pick it, to apply the changes somewhere else:
git cherry-pick temp-featureA
# or, if it's multiple commits, rebase it!
git rebase --onto my-branch start-of-featureA temp-featureA