如果"许可被拒绝" git merge会造成混乱。用于编写一个文件

时间:2018-03-28 21:11:59

标签: git

情景:

  • 我有一个存储库,可能还有一些未经修改的本地修改。
  • 我做了一个git merge somebranch,它应修改~100个或更多文件,但保留本地修改。
  • 由于设置权限设置不佳,其中一个文件无法写入或移除。

结果:

  • git merge失败,例如"无法取消关联旧网站/ default / default.settings.php' (许可被拒绝)"
  • 其他99个文件的所有修改现在都已取消暂存,所有新文件都未跟踪。因此,git status现在为我提供了一长串未经跟踪的本地修改。

如果我在尝试合并之前进行了一些未经修改的修改,那么灾难现在已经完成,因为我无法再区分以前修改过的内容,以及由于合并而导致的新内容。

我的问题是:

  • 如果无法写入或删除文件,为什么git merge会一团糟?
  • 我可以避免这个吗?
  • 我怎样才能回到" safe"州?

2 个答案:

答案 0 :(得分:0)

到目前为止,我自己的解决方案是:

git add .
git stash
chmod u+rw path/to/problematic/directory
git merge somebranch
git stash apply
git status

git status显示是否还有任何本地修改。这些应该是你合并之前的那些。

之后您可能希望git stash drop进行清理。

这并没有回答所有问题,但这对我来说已经足够了。

答案 1 :(得分:0)

我在VS Code Editor中执行 git merge anotherBranch 命令时遇到了类似的问题。重新启动编辑器后,“权限被拒绝”错误消失了。