git version 2.6.3.windows.1
我有一个
pull request
我需要做。所以我 checkout 到一个新的分支(
pull_feature_branch
)。 pull
请求,在 中得到解决许多 冲突。没问题 - 我只需要时间来修复它们,应该花我几天时间。
但是突然我发现了一个我必须注意的错误 - 在主分支中。
但是我无法从我的 pull_feature_branch 分支 checkout 到我的主分支。
通常我会将我未提交的更改 stash 在其他分支中 - 这允许我 checkout 到主分支以修复错误。
但是现在 stash 不起作用-
fatal: git-write-tree: error building trees
Cannot save the current index state
必须有办法让我停止我的冲突过程,修复错误,然后返回修复冲突。
现在我知道我可以通过创建另一个项目文件夹(通过克隆项目或使用
worktree
命令 - 参见 CodeWizard's answer)来“有点”解决它(避免是更合适的词)并使用一个文件夹解决冲突,另一个用于解决错误。
我正在寻找一种能够在同一文件夹中更改分支的方法。
总结一下:我做了一个 pull 请求,导致了很多冲突,现在我“卡在”当前的冲突分支中,无法更改分支。
最佳答案
答案很简单。
下contrib/workdir
在 Git 的源代码目录下,你会发现一个名为 git new-workdir
的 git 命令.
此命令允许您并排在多个分支上同时工作。
该函数所做的只是创建 git
的浅拷贝。文件夹(在新文件夹中键入 tree .git 以查看它实际指向的位置),您将看到它指向原始 git 文件夹。
在新文件夹中,您可以创建新的提交、分支等,并且您将在所有 new-workdir
中看到它。文件夹,因为它们共享“相同”的 git 存储库。
演示:(Unix)
contrib/workdir
到您的道路 git-new-workdir
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)
:-)
Git 2.5 将包含一项功能,允许您在不使用此脚本的情况下拥有多个工作目录 (
git checkout --to=$path
)。
关于Git:在解决冲突的过程中更改分支(stash 不起作用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34533187/