Git:在解决冲突的过程中改变分支(藏匿不起作用)

时间:2015-12-30 16:21:51

标签: git

git version 2.6.3.windows.1

我有pull request我需要做的事 所以我结帐了一个新的分支(pull_feature_branch)。做了pull请求,该请求在许多冲突中解决。

没问题 - 我只是需要时间来解决它们,应该花几天时间。

但我突然发现了一个我必须注意的错误 - 在主要分支中。 但是我无法从我的 pull_feature_branch 分支结帐到我的主分支。

通常我隐藏我在其他分支中的未经修改的更改 - 这允许我签出到主分支来修复错误。

但是现在藏匿不起作用 -

fatal: git-write-tree: error building trees
Cannot save the current index state

我必须有办法停止冲突程序,修复错误,然后返回修复冲突。

现在我知道我可以"有点"通过创建另一个项目文件夹(通过克隆项目或使用worktree命令来解决它(避免是更合适的单词) - 请参阅CodeWizard's answer) 并使用一个文件夹来解决冲突,另一个用于解决错误。

我正在寻找一种能够在同一文件夹中更改分支的方法。

总结一下:我做了 pull 请求,这使得许多冲突,现在我已经""卡住"在当前的冲突分支中,没有能力改变分支。

1 个答案:

答案 0 :(得分:2)

答案很简单。

在Git源代码的contrib/workdir目录下,您将找到名为git new-workdir的git命令。

此命令允许您并排在多个分支上同时工作 该函数的作用就是创建git文件夹的浅表副本(在新文件夹中键入树.git以查看它实际指向的位置),您将看到它指向原始git文件夹。 /> 在新文件夹中,您可以创建新的提交,分支机构等,您将在所有new-workdir个文件夹中看到它,因为它们共享"相同的" git repo。

演示:(Unix)

  1. contrib/workdir添加到您的路径
  2. 将执行标志设置为git-new-workdir
  3. 导航到您当前的git存储库

    git new-workdir . my_new_path 
    cd my_new_path
    tree .git ( you should see links to the original git repository)
    git checkout -b new_branch
    git branch (your new branch is listed)
    cd original_path
    git branch (the new branch is listed but the current branch is the original branch)
    
  4. : - )

    Here is a screenshot of the 2 diffent branches

    Git 2.5将包含一项功能,允许您在不使用此脚本的情况下拥有多个工作目录(git checkout --to=$path)。