Подтвердить что ты не робот

Что означает Git эквивалент команд TFS shelve/unshelve? вишневый выбрать?

Я обнаружил, что команды shelve/unshelve в TFS очень удобны и очень просты в использовании. Что эквивалентно в Git?

здесь сценарий в TFS:

  • Я сделал изменения в багажнике
  • Я помещаю: набор изменений сохраняется на сервере (с меткой), и я возвращаю исходный код перед изменениями
  • Я работаю в багажнике
  • Кто-то может отключить: получить изменение в своей рабочей области

Я знаю, что есть командный вызов cherry-pick, но я не уверен в рабочем процессе и если он подходит.

4b9b3361

Ответ 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, я думаю. Ссылка