что Мерзавец эквивалентен из команд TFS, откладывают/не откладывают? избирательный подход?

Я нашел, что отложить/неотложить команды в TFS очень удобны и очень просты использовать. Каков эквивалент в Мерзавце?

вот сценарий в TFS:

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

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

70
задан MatthieuGD 18 June 2010 в 13:27
поделиться

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
81
ответ дан 24 November 2019 в 13:28
поделиться

То, что вы хотите сделать, достигается простым старым ветвлением в git.

От хороший ответ StackOverflow от JaredPar :

Стеллажи - это способ сохранить все изменения в вашем ящике без регистрации. Изменения сохраняются на сервере .

Это аналогично фиксации в ветке и отправке ее на сервер в git.

Как это сделать:

Предположим, вы работаете над «главной» веткой и решили реализовать функцию 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
28
ответ дан 24 November 2019 в 13:28
поделиться

git stash немного похож, за исключением того, что он ограничен вашим рабочим деревом.

В DVCS, чтобы добиться такого рабочего процесса, вам необходимо:

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

Другой способ - позволить другому разработчику получить вашу ветку (где вы зафиксировали этот специальный набор изменений) и выбрать ее , но это не рекомендуется для cherry -выбранные коммиты трудно отслеживать .

5
ответ дан 24 November 2019 в 13:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: