【问题标题】:How do I fix a Git merge with conflicts in breakpoint's file?如何修复断点文件中存在冲突的 Git 合并?
【发布时间】:2013-11-29 09:58:10
【问题描述】:

我有一个 iPad 应用程序(XCode 5、iOS 7、Git 源代码控制和 Storyboards)。我目前正在处理两 (2) 个分支(App Store 中的 1.8.1 和工作副本中的 2.0.0)。

我为下一个版本对 1.8.1 做了一些小改动,并认为 XCode 的源代码管理会自动合并这些更改到 2.0.0。我想我错了。所以我尝试使用 XCode 的源代码控制进行合并,这就是事情走下坡路的地方……它进入了一个循环。所以,我杀死了 XCode,然后重新启动它。

现在,我正在尝试使用 SourceTree 进行合并。它告诉我我的工作副本中有一个合并冲突,即 (2.0.0)。查看 2.0.0 的构建,我看到了:

      <BreakpointProxy
     BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
     <BreakpointContent
        shouldBeEnabled = "No"
        ignoreCount = "0"
        continueAfterRunningActions = "No"
        filePath = "saori/CalendarViewController.m"
        timestampString = "404851038.443273"
<<<<<<< HEAD                              <---------------- merge conflict
        startingColumnNumber = "9223372036854775807"
        endingColumnNumber = "9223372036854775807"
        startingLineNumber = "205"
        endingLineNumber = "205"
        landmarkName = "-viewDidLoad"
=======
        startingColumnNumber = "9223372036854775807"
        endingColumnNumber = "9223372036854775807"
        startingLineNumber = "205"
        endingLineNumber = "205"
        landmarkName = "-viewDidLoad"
        landmarkType = "5">
     </BreakpointContent>
  </BreakpointProxy>
  <BreakpointProxy
     BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
     <BreakpointContent
        shouldBeEnabled = "No"
        ignoreCount = "0"
        continueAfterRunningActions = "No"
        filePath = "saori/SubViewData.m"
        timestampString = "406167919.038573"
        startingColumnNumber = "9223372036854775807"
        endingColumnNumber = "9223372036854775807"
        startingLineNumber = "221"
        endingLineNumber = "221"
        landmarkName = "-drawRect:"
>>>>>>> 1.8.1
        landmarkType = "5">
     </BreakpointContent>
  </BreakpointProxy>
  <BreakpointProxy
     BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
     <BreakpointContent
        shouldBeEnabled = "Yes"
        ignoreCount = "0"
        continueAfterRunningActions = "No"
<<<<<<< HEAD                                    <------- merge conflict
        filePath = "saori/SubViewData.m"
        timestampString = "406167919.038573"
        startingColumnNumber = "9223372036854775807"
        endingColumnNumber = "9223372036854775807"
        startingLineNumber = "221"
        endingLineNumber = "221"
        landmarkName = "-drawRect:"
=======

更新当我执行 git status 时,我得到以下信息:

# On branch 2.0.0
# You have unmerged paths.
#   (fix conflicts and run "git commit")   
# 
# Changes to be committed:
#
#   new file:   Resized Images/MainStoryboard.strings
#   modified:   saori/AppDelegate.h
#   modified:   saori/AppDelegate.m
#
# Unmerged paths:
#   (use "git add <file>..." to mark resolution)
#
#   both modified:      SalonBook.xcodeproj/project.xcworkspace/xcuserdata/rolfmarsh.xcuserdatad/UserInterfaceState.xcuserstate
#   both modified:      SalonBook.xcodeproj/xcuserdata/rolfmarsh.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   Crashlytics.framework/Versions/Current
#   SalonBook.xcodeproj/xcuserdata/rolfmarsh.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist.BACKUP.5744.xcbkptlist
#   SalonBook.xcodeproj/xcuserdata/rolfmarsh.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist.BASE.5744.xcbkptlist
#   SalonBook.xcodeproj/xcuserdata/rolfmarsh.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist.LOCAL.5744.xcbkptlist
#   SalonBook.xcodeproj/xcuserdata/rolfmarsh.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist.REMOTE.5744.xcbkptlist

我的问题是:如何解决这个问题以便进行合并?

【问题讨论】:

  • 要在合并冲突状态下获取文件名,请运行git status
  • @RyPeck 我做了 git status 并将结果发布在原始问题中。我可以只删除断点文件吗?
  • 这是一个懂 xcode 的人的问题。不是我!
  • 在我看来,本地编辑器设置根本不应该在 git 中。
  • Frank Osterfield:请将您的评论更改为答案,以便我奖励积分并关闭此问题。谢谢...

标签: git version-control xcode5


【解决方案1】:

使用.gitignore 从您的项目中排除断点数据(请参阅Which Xcode project files can I 'exclude' from my git repo?)。

然后您需要使用 git rm -r --cached 从 git 索引(缓存)中清除 .gitignore 中包含的所有文件

git rm -r --cached .
git add .
git commit -m 'Removed all files that are in the .gitignore'
git push 

【讨论】:

  • 当然,但这不是回答问题。我希望如何清理推送的忽略文件以及如何清理缓存的 git 等。
【解决方案2】:

解决这个问题:(mac)

  1. 添加 gitignore 文件:

    • 从终端打开项目文件夹并按 $ touch .gitignore
    • 然后按命令:$ vi .gitignore
    • 按字母:i
    • 在每一行中添加忽略文本,例如: PushFor.xcworkspace/xcuserdata/ Tapaway.xcworkspace/xcuserdata/dang.xcuserdatad/UserInterfaceState.xcuserstate Tapaway.xcworkspace/xcuserdata/dang.xcuserdatad/xcdebugger/ Tapaway.xcworkspace/xcuserdata/ Pods/Pods.xcodeproj/xcuserdata/
    • 按下键盘上的退出按钮
    • 按 $ :x(保存)
    • 检查终端上的一切是否正常:$ cat .gitignore
  2. 现在按下命令:$ git st 并看到尽管您只是将它们放在 gitignore 上,但您仍然有未跟踪的文件,这意味着您已经将其推送到 git 以便修复它: -git --cashed (并在此处复制文件)例如: git rm --cached Pods/Pods.xcodeproj/xcuserdata/dang.xcuserdatad/xcschemes/xcschememanagement.plist

现在提交并推送!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多