将非git代码与基于git的代码合并(初始代码库是相同的)

时间:2012-03-31 09:08:16

标签: git repository diff patch

我有一个具有单一代码库的客户端站点。在我最近的更改中,我获取了网站的实时副本并将其提交到新的GIT存储库并开始对其进行新的更新。现在有另一个开发人员已对现场网站进行了更改,所以我想做一些能让我像其他分支或其他东西一样对待他的更改并顺利合并差异的内容。这样做的正确方法是什么?我已经考虑将代码添加到新分支,并创建差异补丁并将其应用于GIT代码。

3 个答案:

答案 0 :(得分:2)

我假设您做了类似以下的事情:

git init project
cd project
<copy existing code to this directory>
git add -Af .
git commit -m "Import code"
<edited some files>
git commit -a -m "Made changes"

最好的方法是从原始导入提交创建分支,并在该分支中创建活动站点的另一个快照。假设原始导入提交的提交ID为f00ba4(您可以使用git log来查找实际的SHA1 ID)。要合并其他开发人员的更改,您可以执行以下操作:

  1. 创建一个名为live的新分支,指向提交f00ba4,然后检查出来:

    git checkout -b live f00ba4
    
  2. 确保周围没有未跟踪的文件:

    git clean -dxf
    
  3. 从实际网站复制最新代码

  4. 提交最新代码:

    git add -Af .
    git commit -m "take another snapshot of the live site"
    
  5. 切换回您的分行:

    git checkout master
    
  6. 将其他开发人员的更改与您的更改合并:

    git merge live
    
  7. 每次其他开发人员修改实时网站中的文件时,您都可以按如下方式更新存储库:

    1. 使用最新代码更新live分支:

      git checkout live
      git clean -dxf
      <copy the files from the live site>
      git add -Af .
      git commit -m "another snapshot of the live site"
      
    2. 将对live的更改合并到master

      git checkout master
      git merge live
      
    3. 当您准备好部署更改时:

      1. 确保live分支是最新的:

        git checkout live
        git clean -dxf
        <copy the files from the live site>
        git add -Af .
        git commit -m "another snapshot of the live site"
        
      2. 将您的更改合并到live

        git merge master
        
      3. 将文件部署到实际网站

答案 1 :(得分:0)

创建另一个分支然后提交他的更改将是一个很好的方法。

更好的方法是将其他开发人员放在他自己的git分支上,然后彼此集成。

答案 2 :(得分:0)

分支是Git中的常规方法。这意味着:从当前代码分支,在那里进行合并,当成功时,将其合并回主分支。

分支不是偏离普通的东西(例如在SVN中),但它是Git中正常工作流程的一部分。无需让开发人员的编辑干扰您的工作:只需单独合并然后合并回主分支。