Что означает Git эквивалент команд TFS shelve/unshelve? вишневый выбрать?
Я обнаружил, что команды shelve/unshelve в TFS очень удобны и очень просты в использовании. Что эквивалентно в Git?
здесь сценарий в TFS:
- Я сделал изменения в багажнике
- Я помещаю: набор изменений сохраняется на сервере (с меткой), и я возвращаю исходный код перед изменениями
- Я работаю в багажнике
- Кто-то может отключить: получить изменение в своей рабочей области
Я знаю, что есть командный вызов cherry-pick, но я не уверен в рабочем процессе и если он подходит.
Ответы
Ответ 1
То, что вы описываете, похоже на 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 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 multiple commits, rebase it!
git rebase --onto my-branch start-of-featureA temp-featureA
Ответ 2
То, что вы хотите сделать, выполняется с помощью простого старого ветвления в git.
От fooobar.com/questions/26186/... JaredPar:
Стеллажи - это способ сохранения всех изменений на вашем ящике без проверки. Изменения сохраняются на сервере.
Это аналогично фиксации ветки и ее переносу на сервер в git.
Как это сделать:
Скажем, вы работаете над филиалом "master", и вы решили реализовать функцию X. Вы хорошо начинаете с этого, но затем ваш босс говорит вам, что функция Y должна быть реализована как можно скорее. Фил в следующем кубе над добровольцами, чтобы закончить функцию X, пока вы показываете Y. Вот что вы делаете:
Создайте новую ветку и переключитесь на нее:
$ git checkout -b feature-x
Зафиксируйте свои изменения:
$ git add filethatyouchanged.cc
$ git commit -m 'partial implementation of feature X'
Нажмите на сервер, который может видеть Фил:
$ git push origin feature-x
Вернитесь к главной ветке (которая не изменилась):
$ git checkout master
Вы также можете проактивно создать новую ветку для функции Y:
$ git checkout -b feature-y
Фил теперь может свернуть вашу работу с функцией X и выбрать, где вы остановились:
phil$ git fetch origin
phil$ git checkout -t origin/feature-x
Ответ 3
git stash немного похож, за исключением того, что он ограничен вашим рабочим деревом.
В DVCS для достижения такого рабочего процесса вам необходимо:
- зафиксировать текущие изменения в новой ветке
- проверить исходную ветку, в которой вы можете продолжить, без каких-либо изменений, которые вы ввели (но были зафиксированы в новой ветке)
- нажмите эту новую ветку на голое репо
- разрешить другому разработчику вытащить эту новую ветвь и слить ее в текущую ветвь.
Другим способом было бы позволить другому разработчику получить вашу ветку (где вы совершили этот особый набор изменений) и вишневый выбор, но это не рекомендуется, для отслеживать вишню трудно отслеживать.
Ответ 4
Вы ищете команду stash, я думаю. Ссылка