【问题标题】:Merging non-git folder with git folder将非git文件夹与git文件夹合并
【发布时间】:2014-01-28 18:51:45
【问题描述】:

背景故事:

基本上,我被要求对项目进行一些重大更改。我使用 git clone 开始我的参与。我创建了一个新文件夹并将主项目目录中的所有代码复制粘贴到新文件夹中。这个新文件夹没有跟踪我的更改(显然)。

我有一个最新的网站文件夹和一个不是最新但包含我所有更改的文件夹。是否有合并这些文件夹以保留我所做的更改和其他人所做的更改?

我担心如果我更新主项目文件夹,我可能会在不知不觉中意外覆盖他们的更改。

我正在考虑使用Meld,但我愿意接受建议。

【问题讨论】:

    标签: git merge branch


    【解决方案1】:
    • 克隆原始存储库。

      git clone $url repo
      cd repo
      
    • 签出您在开始工作时复制的提交

    • 此时新建一个分支

       git checkout -b my_work $sha1
      
    • 将您的工作作为新提交添加到新分支

      cp -r /path/to/untracked/dir .
      git add .
      git commit -am 'fixed nasty bug'
      
    • 可选看看你的改变

      git show
      
    • 检查主分支

      git checkout master
      
    • 将你的新分支合并到主分支中

      git merge my_branch
      
    • 解决可能发生的任何冲突

      git mergetool -t meld
      

    (除了meld,您可以使用任何其他您喜欢的工具。我建议kdiff3。)

    【讨论】:

    • 非常感谢您的帮助。我马上试试这个。我有两个问题。 1) 查看提交历史记录的最佳方式是什么,以便我可以找到我的起点和 2) $sha1 参数是什么意思?
    • 克隆后执行git log 或gitk。这将向您显示当前分支的历史记录。每个提交都由一个 40 位的 sha1 提交 ID 标识。如果您能够找到正确的提交,请将其 id 用作“$sha1”。 - 尝试记住您何时复制代码以及从哪个分支复制代码。找到正确的提交至关重要。 - 使用上面的git show 步骤来验证显示的更改确实是您所做的更改。如果还有其他更改,您很可能选择了错误的提交。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 2019-10-04
    • 1970-01-01
    相关资源
    最近更新 更多