2014-12-13 73 views
1

我有一个正在开发的应用程序的git存储库。我创建了一个主分支,现在我想将它合并回主。它拒绝这样做,因为有些文件将被覆盖,但这些文件甚至不应该被版本控制跟踪。强制合并分支,忽略覆盖的文件

如何从版本控制中删除这些文件并强制进行合并?我已经提交了这个文件几次,但当然它不断变化,因为它是一个用户界面状态文件。我尝试放弃更改,然后立即尝试合并,但每次都收到相同的错误。最近一次,它现在提到一个有关工作树文件的错误,我不确定那是什么,如果我可以覆盖它。

本质上,我希望整个分支覆盖主 - 没有什么不在这个分支的主人,因为我直接从它分支,然后我从来没有修改主。

The working copy "app name" failed to merge. 

error: Your local changes to the following files would be overwritten by merge: 
app name.xcodeproj/xcuserdata/Administrator.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist 
Please, commit your changes or stash them before you can merge. 

error: The following untracked working tree files would be overwritten by merge: 
app name.xcodeproj/project.xcworkspace/xcshareddata/app name.xccheckout 
Please move or remove them before you can merge. 
Aborting 
+0

Git不会跺脚工作树中的未提交内容,是否被跟踪。删除或移动或提交内容。查找['git filter-branch'](https://www.kernel.org/pub/software/scm/git/docs/git-filter-branch.html)的文档,它解释了如何返回切除你的历史中不应该追踪的内容。 – jthill 2014-12-14 18:12:38

回答

0

一个简单的方法来做到这一点是删除您的旧master分支,并从dev分支:

  • git checkout dev
  • git branch -D master
  • git checkout -b master新建一个名为master分支
  • git push -f origin master

再回到这里的问题:

我的文件犯了几次,但当然是不断变化 因为它是一个用户界面状态文件

如果这些是可以从代码中随时重新生成的文件,然后不需要在git中进行跟踪。使用git rm --cached filename将它们从git中删除,使用git commit -m "msg"提交删除/未跟踪,并在您的开发分支中使用echo filename >> .gitignore将它们放入您的gitignore中。