ios - 为什么 XCode 不断地做 "Merge remote-tracking branch ' origin/master'”

标签 ios xcode git github

我是 XCode 新手。最近开始与团队合作进行 iPhone 项目。我们使用 GitHub 进行源代码控制,并直接从 XCode (5.1) pull/提交/推送。

目前我们都在研究 master。

我注意到我们的提交日志中包含大量以下语句:

Merge remote-tracking branch 'origin/master'

这些看起来很多余。这些项目几乎总是与另一个用户之前的提交相同。

示例场景:

  1. 用户 A 和用户 B 执行 PULL 以开始处理代码。
  2. 用户 A 编辑 SomeViewController.m 并执行 COMMIT 和 PUSH。
  3. 用户 B 编辑 AnotherViewController.m 并执行 COMMIT 和 PUSH。
  4. 用户 B 收到一个 [来自 XCode] 的错误,他必须先 PULL 才能提交。
  5. 用户 B 执行 PULL,然后执行 COMMIT。

现在提交日志中有 3 个项目:

  1. 来自用户 A 的更改
  2. 用户 B 的更改
  3. merge 远程跟踪分支 'origin/master'

但#1 和#3 是相同的!我们做错了什么?还是这只是一起使用 Git 和 XCode 的必要之恶?

最佳答案

一个解决方案是使用 rebase 命令而不是经典的 pull (获取 + merge )。
doing a pull in XCode时可以勾选选项.

这将在(获取和更新的)远程跟踪分支之上重播您的本地提交。

在命令行中,一个不错的选择是:

  • 获取
  • 尝试 merge
  • 如果没有,尝试 rebase

参见“"Merge remote-tracking branch..." What is this? I don't even. ”和
"Why am I merging “remote-tracking branch 'origin/develop' into develop”? "

# download the latest commits
git remote update -p

# update the local branch
git merge --ff-only @{u}

# if the above fails with a complaint that the 
# local branch has diverged:
git rebase -p @{u}

关于ios - 为什么 XCode 不断地做 "Merge remote-tracking branch ' origin/master'”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24690277/

相关文章:

ios - 在循环中以相同名称编程创建的 SKSpriteNodes 上使用 repeatActionForever?

iphone - Storyboard 应用程序也可以在 iOS 5 之前的设备上运行吗?

c++ - 从 C++ 函数访问数据到 UITextView Controller

git - 当有多位作者使用版本控制时,您如何跟踪库的构建计数?

git - 如何对未 checkout 的分支进行非快进 git merge ?

ios - 如何在没有导航 Controller 的情况下从第三个 ViewController 弹出到初始 ViewController?

ios - 安装Xcode 6.3后,模拟器列表在Xcode 6.1中消失

ios - 优化苹果系统日志

java - Oracle Java 1.7 破坏了 Xcode 应用程序,如何取消选中?

git - 暂时 merge 了一个分支到我们的开发分支,想要撤消