TFSのshelve/unshelveコマンドは非常に便利で使いやすいことがわかりました。 Gitで同等のものは何ですか?
tFSのシナリオは次のとおりです。
Cherry-pickというコマンドコールがあることは知っていますが、ワークフローとニーズに合っているかどうかはわかりません。
説明する内容は 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
あなたがしたいことは、gitの単純な古い分岐で達成されます。
Nice StackOverflow answer by JaredPar :
棚は、チェックインせずにボックス上のすべての変更を保存する方法です。変更はサーバー上に保持されます。
これは、ブランチにコミットしてgitのサーバーにプッシュすることに似ています。
「マスター」ブランチで作業していて、機能Xを実装することに決めたとします。まずは機能Xを使用しますが、上司は機能Yをできるだけ早く実装する必要があると言います。次のキューブのPhilは、機能Yを実行している間に機能Xを完了するボランティアを募集しています。
新しいブランチを作成し、それに切り替えます。
$ git checkout -b feature-x
変更をコミットします。
$ git add filethatyouchanged.cc
$ git commit -m 'partial implementation of feature X'
Philが確認できるサーバーにプッシュします。
$ git Push Origin feature-x
Masterブランチ(変更されていない)に戻ります。
$ git checkout master
機能Yの新しいブランチを積極的に作成することもできます。
$ git checkout -b feature-y
Philは機能Xの作業をプルダウンし、中断したところから再開できます。
phil$ git fetch Origin
phil$ git checkout -t Origin/feature-x
git stash は少し似ていますが、your作業ツリーに限定されます。
DVCSでは、このようなワークフローを実現するには、次のことが必要です。
別の方法は、他の開発者がブランチをフェッチできるようにすることです(その特別な変更セットをコミットした場所)、そして cherry-pick it ですが、 cherry-選択したコミットを追跡するのは困難です 。