что такое Git-эквивалент команд TFS shelve / unshelve? черри-пик?
Я обнаружил, что команды shelve/unshelve в TFS очень удобны и очень просты в использовании. Что такое эквивалент в Git ?
вот сценарий в TFS:
- я внес изменения в багажник
- I shelve: набор изменений сохраняется на сервере (с меткой), и я получаю источник обратно до изменений
- Я работаю в багажнике
- кто-то может распаковать : получить набор изменений в своем рабочем пространстве
I знайте, что есть команда call cherry-pick, но я не уверен в рабочем процессе, и если он соответствует потребности.
3 ответов:
то, что вы описываете, похоже на
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.
С хороший ответ StackOverflow by 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 work и забрать, где вы остановились:
phil$ git fetch origin phil$ git checkout -t origin/feature-x
git stash немного похоже, за исключением того, что он ограничен код рабочее дерево.
в DVCS, чтобы достичь такого рода рабочего процесса, вам нужно:
- зафиксируйте текущие изменения в новой ветке
- проверьте исходную ветку, в которой вы можете продолжить, без каких-либо изменений, которые вы ввели (но зафиксировали в новой ветке)
- подтолкните эту новую ветку к голому РЕПО
- разрешить другим разработчиком чтобы вытащить эту новую ветку и объединить ее с его текущей веткой.
другой способ-позволить другому разработчику получить вашу ветку (где вы совершили этот специальный набор изменений), и вишня-забрать, но это не рекомендуется, для Cherry-picked коммиты трудно отслеживать.
Comments