2011-08-22 91 views
0

我一直在研究包含大约40或50个项目的Visual Studio解决方案。从头开始在混帐?

我已经为.sln文件添加了约10个项目,但与此同时其他人还在.sln文件中添加了一个项目。

如此有效地有一个文件 - V1,这两个人独立工作创建两个单独的V2。

我在找合并变化的噩梦。我正在使用的机器上安装了BeyondCompare,它向我展示了三列合并。我无法弄清楚,所以我决定用git认为远程版本覆盖我的本地文件。 但后来我又重新加入新项目的问题。

所以。在我进行第90次拉动+重做/提交之前,有没有简单的方法来解决这个问题? 比如,用远程端的内容覆盖当前所有的本地副本。然后重新添加我新添加的项目。然后提交。构建+测试。然后推。也许?

*编辑:FWIW,机器上还安装了龟git,现在所有东西都显示为绿色滴答声......所以这很好吗?

+4

我建议学习如何处理BeyondCompare的3路合并将花费时间。 –

回答

1

如果您要求Git /其他工具知道在远程sln文件中添加了项目,请添加它们,然后添加我添加的项目 - 不应该是您的方法。

只需修复合并冲突,即在远程添加的所有项目以及您添加的项目都存在。

0

我处于“相同但不同”的情况。我将问题分解成两部分。一个是简单地捕捉我可以写下的历史记录,并将其写入一系列的快速启动/提交。我可以确定一些不同的子项目和阶段,因此在捕获阶段每个都有自己的回购。然后我可以graft将它们放在一起,并使用git filter-branch将它们全部带入历史。

对于目前的工作,我都开始从一个合适的“现在”点的新混帐回购协议,也既定合并技术继续,转储到git仓库直到我们完全可以合并这两个过程一起。一些民众需要一些令人信服的(自我)管理意味着我们不会放弃目前的做法,直到新的做法出现。

需要一段时间才能'得到'git哲学,并放弃旧的根深蒂固,但错误的方法。

1

首先,让我们回到已知的状态。做一个git reflog,然后在尝试完成所有这些拉动和重新绑定之前找到一个提交。执行git checkout -b my-feature <commit-id>来创建一个名为my-feature的分支,该分支指向该提交。验证它是否按预期工作,而不需要从服务器进行所有最近的更改。

现在,通过执行git branch -f master origin/master使您的master分支与服务器上的内容匹配。

现在到了困难的部分。您必须解决您更改的内容与服务器上更改的内容之间的合并冲突。这是在一个团队中工作的正常部分,你应该有条不紊地学习如何去做,而不是去掉它。 This是一个很好的资源。除了比较是一个很好的工具,以帮助解决3路合并,你应该学会使用它。

有时候,如果你有这是由一个工具生成的,而不是手写的文件,它更容易使用的工具来进行更改,只需删除你的本地修改和添加他们回来以后。如果你真的不明白的SLN文件的语法,这可能是你的情况。

要改变只是SLN文件匹配什么在服务器上,这样做:

git checkout master -- filename.sln 
git commit -am "Reset solution file to match origin" 

添加您的项目,并为恢复正常提交该文件。现在,您想要将这些更改传送到主分支上。做:

​​