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

Mat*_*uGD 70 git tfs

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

这是TFS中的场景:

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

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

Cas*_*bel 81

你描述的是类似的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
Run Code Online (Sandbox Code Playgroud)

如果您希望其他人有权访问此更改集,您可能希望将其提交到工作分支:

# 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
Run Code Online (Sandbox Code Playgroud)

  • 实际上,这与 TFS Shelveset 确实不同。如果我在本地 git 分支上工作......在一天结束时我想说......所有的疣和编译错误......将这项工作放在服务器上以确保安全。所以,如果我的硬盘崩溃了,我不会失去一切。但是,我还不想将我的工作推送到远程分支,因为它不完整。我的本地分支正在跟踪远程分支。Cascabel 列出了 8 个单独的 git 命令来编排这个……在 TFS 中……这是一个命令……搁置。 (3认同)

Nea*_*all 29

你想要做的是用git中的普通旧分支完成.

一个不错的StackOverflow的答案JaredPar:

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

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

怎么做:

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

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

$ git checkout -b feature-x
Run Code Online (Sandbox Code Playgroud)

提交您的更改:

$ git add filethatyouchanged.cc
$ git commit -m 'partial implementation of feature X'
Run Code Online (Sandbox Code Playgroud)

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

$ git push origin feature-x
Run Code Online (Sandbox Code Playgroud)

返回主分支(未更改):

$ git checkout master
Run Code Online (Sandbox Code Playgroud)

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

$ git checkout -b feature-y
Run Code Online (Sandbox Code Playgroud)

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

phil$ git fetch origin
phil$ git checkout -t origin/feature-x
Run Code Online (Sandbox Code Playgroud)

  • 虽然不像在 git 中那么便宜,但它实际上存储在 repo 中,如果 repo 是分布式的,这意味着您可以将架子从 repo 提供给任何计算机,而不会成为提交。(TFS2010) 如果有 CI 或 Gated Check-In 之类的策略(每次签入时强制服务器端构建),这将非常方便 (2认同)

Von*_*onC 5

git stash有点类似,除了它仅限于你的工作树.

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

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

另一种方法是让其他开发人员获取你的分支(你已经提交了一组特殊的更改),并挑选它,但不建议这样做,因为挑选的提交很难跟踪.