【问题标题】:Force merge branch, ignoring overwritten files强制合并分支,忽略覆盖的文件
【发布时间】:2015-02-11 20:26:22
【问题描述】:

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

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

本质上,我希望整个分支覆盖 master - master 中没有任何内容不在此分支中,因为我直接从它分支出来,然后我从未修改过 master。

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

【问题讨论】:

  • Git 不会踩踏工作树中未提交的内容,无论是否跟踪。删除或移动或提交内容。查找git filter-branch 的文档,它解释了如何返回并从您的历史记录中删除不应该跟踪的内容。

标签: xcode git merge


【解决方案1】:

一个简单的方法是删除旧的 master 分支,并从 dev 分支创建一个名为 master 的新分支。:

  • git checkout dev
  • git branch -D master
  • git checkout -b master
  • git push -f origin master

回到这里的问题:

我已经提交了几次文件,但它当然一直在变化 因为它是一个用户界面状态文件

如果这些文件可以动态地从代码中重新生成,那么就不需要在 git 中跟踪它们。使用git rm --cached filename 将它们从git 中删除,使用git commit -m "msg" 提交删除/取消跟踪,然后在您的开发分支上使用echo filename >> .gitignore 将它们放入您的gitignore。

【讨论】:

    猜你喜欢
    • 2019-08-04
    • 2018-12-26
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    相关资源
    最近更新 更多