如何使用git版本控制将多个代码合并为单个代码

如何使用git版本控制将多个代码合并为单个代码,git,version-control,Git,Version Control,我们已经创建了20多个代码文件,每个文件都是对第一个代码的分支或改进。它们可以按日期排序,以便查看哪个文件是要初始化git回购的文件。我如何将这些文件自动合并到一个文件中,有没有一种方法可以做到这一点,或者一个人必须初始化git repo并通过手动操作/提交继续?文件名可以用作git提交注释。我已经搜索过了,但找不到帖子。如果这是转载,我很抱歉。嗯。。。。。。如果所有文件都是从“主”文件开始的版本(被认为是分支)。。。假设主文件名为“main.txt”,我会这样做: 将main.txt添加到m

我们已经创建了20多个代码文件,每个文件都是对第一个代码的分支或改进。它们可以按日期排序,以便查看哪个文件是要初始化git回购的文件。我如何将这些文件自动合并到一个文件中,有没有一种方法可以做到这一点,或者一个人必须初始化git repo并通过手动操作/提交继续?文件名可以用作git提交注释。我已经搜索过了,但找不到帖子。如果这是转载,我很抱歉。

嗯。。。。。。如果所有文件都是从“主”文件开始的版本(被认为是分支)。。。假设主文件名为“main.txt”,我会这样做:

  • 将main.txt添加到master中
  • 对于每个文件(main.txt除外),我将创建一个分支(带有所讨论的文件名),并用它替换main.txt
在这个过程的最后,您将得到所有这些分支,然后您可以将它们重命名为“有意义的”,然后您将能够合并内容或执行任何您喜欢的操作。所以

git add main.txt
git commit -m "common ancestor for all branches"
ls -1 | grep -v main.txt | while read file; do git checkout -b $file master; mv $file main.txt; git add main.txt; git commit -m "Committing main.txt from $file"; done

应该可以。

我不是git方面的专家,但在我看来,你确实想在钉子上使用螺丝刀。也许能帮你我能想到的强制合并两个新文件的唯一方法是创建两(一)个分支,每个分支上都有相同文件的两个版本。然后合并两个分支。但我很确定这会导致手动合并。你是说更改是累积的,还是说每个文件都是对原始文件的一组不同的更改?您想保留某些特定的历史记录,以某种方式显示您对这些文件中的每个文件的处理过程,还是只希望该文件的一个版本合并来自多个原始文件的更改?似乎所有分支都为不同版本存储相同的代码,并且您希望获得最新版本的代码。如果这是您的需求,git merge不是一个好方法,因为合并冲突不能通过两个分支之间的修改时间自动解决。您可以使用
gitk--all
查看提交历史记录,找到您需要的分支,然后删除其他旧版本的分支。顺便说一句:您最好在某个分支中管理相同代码的版本,这样会使历史更加清晰。