什么是GFS相当于TFS命令搁置/取消搁置?樱桃采摘?

时间:2010-06-18 13:27:47

标签: git tfs

我发现TFS中的shelve / unshelve命令非常方便且易于使用。 Git中的等价物是什么?

这是TFS中的情景:

  • 我在后备箱中进行了更改
  • 我搁置:更改集保存在服务器上(带有标签),我在更改前将源恢复
  • 我在后备箱工作
  • 有人可以取消搁置:在工作区中获取更改

我知道有一个命令调用樱桃选择,但我不确定工作流程,是否符合需要。

3 个答案:

答案 0 :(得分:80)

你所描述的内容类似于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

答案 1 :(得分:28)

你想要做的是用git中的旧分支完成。

a nice StackOverflow answer来自JaredPar

  

搁置是一种在不签入的情况下保存盒子上所有更改的方法。更改将保留在服务器上。

这类似于提交分支并将其推送到git中的服务器。

怎么做:

假设您正在使用“主”分支,并决定实现功能X.您可以从中获得良好的开端,但随后您的老板会告诉您功能Y需要尽快实施。菲尔在下一个立方体中通过志愿者来完成功能X而你的功能是Y.这就是你做的事情:

创建一个新分支并切换到它:

$ git checkout -b feature-x

提交您的更改:

$ git add filethatyouchanged.cc
$ git commit -m 'partial implementation of feature X'

将其推送到Phil可以看到的服务器:

$ git push origin feature-x

返回主分支(未更改):

$ git checkout master

您可能还想主动为功能Y创建新分支:

$ git checkout -b feature-y

Phil现在可以下载你的X功能,然后从你离开的地方开始:

phil$ git fetch origin
phil$ git checkout -t origin/feature-x

答案 2 :(得分:5)

git stash有点类似,但它仅限于您的工作树。

在DVCS中,要实现这种工作流程,您需要:

  • 在新分支中提交您当前的更改
  • 检查您可以继续的原始分支,没有您引入的任何更改(但在新分支中提交)
  • 将新分支推送到裸仓库
  • 允许其他开发人员拉出新分支并将其合并到当前分支。

另一种方法是让其他开发人员获取您的分支(您已经提交了一组特殊更改)和cherry-pick it,但不推荐用于cherry-picked commits are hard to track