我有一个源目录,其中包含不同语言和文件的混合。可能是100+总文件。我想要‘分叉’的代码,并创建一个完全不同的版本的源代码。此时,我将得到代码的版本1和版本2。我不会在版本1上做太多的开发。我想要更改文档头和其他一些小的更改。我将在version-2上做很多开发,然后在一两个月后回来,并将version-2与version-1合并(将最新版本-2设置为version-1)。
但是,我不想失去我对版本1所做的任何修改(比如经过几个月的小修正之后)。
以下是我想要得到的一些其他条件。
我唯一关心的是吉特。答:理想情况下,我希望能在“我同时完成了对版本1和版本2的所有开发”之后创建git存储库,比如在对这两个repos进行了两个月的开发之后。我宁愿只做一次git创建存储库,这样我就可以避免执行一堆增量提交。
我想我可能需要一些git工具,一旦我需要合并?git有什么工具吗。
C.我讨厌.git存储库文件,在对这两个repos进行了所有的开发之后,我将不得不删除所有这些。要清除这些可能很难。
...back到我的编号选项。
发布于 2009-07-10 22:07:43
git只创建一个.git目录。svn是一个分散每个目录中的.svn目录的目录。
在学习有用的git命令(如git merge --squash)时,您的时间会更好。使用git,它可以毫无困难地做你想做的事情。
编辑:
使用git,您可以将其保存在一个地方,随意地来回切换,并尽可能多地提交。
为了减少冲突,您可能希望将Phase1合并到Phase2中(因为您在Phase1中进行了很少的更改)。但这完全取决于你。
下面是我如何用git来做这件事:
cd /path/to/project
git init
git add .
git commit -m "Initial Commit"此时,您在主分支上有一个称为“初始提交”的提交。现在,让我们创建分支。
git branch Phase1
git branch Phase2现在,要在Phase2上工作:
git checkout Phase2
... work ...
git add ...
git commit转到第一阶段,做些工作。
git checkout Phase1
... work ...
git add ...
git commit切换到第二阶段,做一些更多的工作。
git checkout Phase2
... work ...
git add ...
git commit在适当的时候,将更改从Phase1拉到Phase2 (或者反过来):
git checkout Phase2
git merge Phase1
... resolve any conflicts and commit if needed ...重复..。您将能够进行尽可能多的提交、合并和分支,以保持在项目的顶部。
另外,使用git tag ...创建指向给定提交的标记。那样的话,你就可以随时回去,而不必对历史进行梳理。
编辑:
我们从命令行运行git,因此我不太熟悉存在哪些GUI工具。应该不难找到。
当您遇到冲突时,git会将文件标记为冲突(git status),并尽可能地将它们合并。在合并无法完成的地方,它在文件中留下非常清晰的标记:
<<<<<<< yours:sample.txt
Conflict resolution is hard;
We went shopping yesterday.
=======
We go shopping today.
>>>>>>> theirs:sample.txt因此,您只需删除其中的一个,并编辑其余的适合。
它很少发生,而且很容易清理。
发布于 2009-07-10 21:52:14
虽然我不同意您关于在开发两个月后才创建存储库的立场,但是您可能会发现一个工具对于合并整个目录是有用的,那就是无与伦比。除了比较,让我们来做文件夹比较。
以下是“无与伦比”比较文件夹的截图。
发布于 2009-07-10 22:00:40
您的情况被称为“分支”,这是源代码管理系统的基本概念之一。
使用SVN(或Git、Hg、CVS或.)把工作做好,做好。
https://stackoverflow.com/questions/1112158
复制相似问题