我一直在使用git flow,现在是时候完成第一个版本v1.0.0了。我在Windows上使用SourceTree。
当我想完成发布时,我收到了这个错误:
sh.exe C:\Users\xy\AppData\Local\Atlassian\SourceTree\gitflow_local\gitflow\git-flow release finish -f C:\Users\xy\AppData\Local\Temp\2ffrpxef.20z v1.0.0
Switched to branch 'master'
error: unable to create file component/admin/config.xml (Permission denied)
There were merge conflicts.
Completed with errors, see above.
我不知道为什么会出现这个错误,因为不应该有任何文件权限问题,因为在使用功能分支之前从未发生过这样的问题。
在上述失败之后,基本上我的所有变化都来自于我的工作副本中与master相关的变化。我简单地删除了所有这些更改并删除了新文件,依此类推。不存在冲突。所以我再次准备好完成我的发布。
目前开发和发布处于同一阶段,当然还有许多提交在master之前:
如何在不遇到此问题的情况下完成发布?
有没有办法强制当前的开发/发布阶段掌握?基本上所有的开发提交都应该应用到主分支 - 所以当它们出现时所有的合并冲突我都想用开发分支版本来解决。这可能吗?
答案 0 :(得分:3)
我发现有人可以帮我解决这个问题,他认为这与锁定文件的其他进程有关。
为了验证这一点,我将我的存储库复制到其他地方,使用SourceTree打开它,我能够在没有问题的情况下完成发布。
因此我猜这与文件被锁定有关。
虽然我怀疑我的IDE(PHPStorm),但我无法确定它,因为我关闭它然后仍然有文件权限问题。 也许是Dropbox(整个存储库都在那里),谁知道呢。但现在我知道至少有一个解决方法。
答案 1 :(得分:0)
如issue 107所示,该错误消息表示由于冲突而导致合并无法完成“请参阅git-flow-release#L225-L240
):
if ! git_is_branch_merged_into "$BRANCH" "$MASTER_BRANCH"; then
git checkout "$MASTER_BRANCH" || \
die "Could not check out $MASTER_BRANCH."
git merge --no-ff "$BRANCH" || \
die "There were merge conflicts."
这意味着您需要resolve the merge conflicts和complete the merge first。
OP hbit添加
基本上所有开发提交都应该应用到主分支 - 所以当它们出现时我想用开发分支版本解决所有合并冲突。
这是develop
上master
分支的典型特征:
develop
之上重播master
分支,解决develop
分支中的任何冲突develop
分支位于master
(重新定位)之上,合并到master
(由git-flow release finish
完成)将是一个微不足道的快速 - 前进一个。答案 2 :(得分:0)
我猜这个错误不仅发生在您修改了权限的情况下,而且还修改了该文件的所有权(可能导致权限更改)。
我自己无法解决这个问题所以我所做的(并为我工作)就像是“隐藏壁橱里的骨架”。目的是将错误文件隔离到您之后可以删除的测试分支中。
sudo rm badfile.xxx
- 物理删除文件,确保您有一个副本以便稍后添加
git add —all badfile.xxx
- 在舞台
git checkout -b some_local_branch_we_ll_never_use
- 在提交之前创建一个新分支
git commit -m "Delete the bad file"
- 提交删除新分支中的坏文件,工作目录应该是干净的
git checkout my_good_old_branch
- 回到你的工作分支继续你的生活...
然后您可以删除测试分支:
git branch -D some_branch_we_ll_never_use
git status