2013-04-10 123 views
2

我在很多不同的项目中工作,并希望从多台计算机使用git-tfs而无需额外的裸存储库。没有裸存储库的Git tfs

我的想法是将git-tfs存储库存储在一个共享中,并且全部推入工作分支。将更改合并到主服务器并推送到tfs。

我希望我可以做这样的事情:

克隆从TFS,并创建一个“工作”分支

cd centralrepository 
git tfs quick-clone --shared http://tfs.. $/tfsfolder . 
git branch work 

在客户端的克隆工作的分支

git clone --branch work --single-branch path/to/centralrepository 

做在客户端工作,承诺并推向中心

... 
git commit -m"my work" 
git push 

在中央再次,从TFS获取更新,适用于“工作”的变化,现在推回

git tfs pull 
git rebase master work 
git checkout master  // rebase checks out the work branch 
git merge work 
git tfs checkintool 

回客户端,拉动和继续工作

git pull 
... 
git push 

但是,这并不工作,这是对于有经验的git用户可能很明显

会发生什么情况是中央客户端和客户端之间的更改会合并导致冲突,因为rebase将应用更改两次。

是整个想法有缺陷还是我只是错过了一些步骤。

回答

1

当想通过场景多一点时,我发现了错误。

work分支当然不应该在中央存储库中重新分配。 work应与master合并,然后快速转发。

它应该是这样的:

git tfs pull 
git merge work 
git checkout work 
git merge -ff-only master 
git checkout master 
git tfs checkintool