当Git中存在合并冲突时,会将以下垃圾插入冲突文件中.三个问题:

注意:如果它是相关的,我使用的是GitHub的Mac GUI客户端.
所以我以前做了无数的樱桃选择,似乎我现在必须在生活中失败,我想尝试从一个分支到另一个分支,这应该是容易的,我怎么会得到一个关于它是合并的错误但是不是给了-m?
$ git cherry-pick a8c5ad438f6173dc34f6ec45bddcef2ab23285e0
error: Commit a8c5ad438f6173dc34f6ec45bddcef2ab23285e0 is a merge but no -m option was given.
fatal: cherry-pick failed
Run Code Online (Sandbox Code Playgroud)
那看起来不对.......它应该是:
$ git cherry-pick a8c5ad438f6173dc34f6ec45bddcef2ab23285e0
Run Code Online (Sandbox Code Playgroud)
从什么时候开始我必须提供-m功能?
在Xcode更新到版本8.0(8A218a)之后,仅在某些文件发生冲突时才从Xcode中删除git存储库中的更改.我们都在同一个分支机构工作.
只要没有冲突,一切都很完美,我能够提交,拉动和推动.
但我发现每当我们在某些文件中发生冲突时,Xcode就不会再出现冲突了.它只是关闭拉动弹出窗口而不显示冲突解决程序窗口.没有信息或任何东西.我没看到
拉成功
信息.我无法推送我的提交(因为没有拉动更改)获取消息:
确保已从远程存储库中提取所有更改,然后重试
我试过使用终端拉,但是冲突的文件搞砸了git消息,显示我和其他人在这些git消息的同一个冲突文件中的变化.其他人正在处理的文件现在显示为我自己的更改/添加.
我也尝试将git更新到最新版本,目前是2.10.0.也没有运气.
所以我最终删除了我的副本并克隆了最新版本并重新应用了我所做的非常烦人的更改.
有人有解决方案吗?
编辑:以下是使用终端的解决方法:
打开终端并告诉系统Xcode实用程序所在的位置:
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
Run Code Online (Sandbox Code Playgroud)将"opendiff"设置为全局默认的mergetool:
git config --global merge.tool opendiff
Run Code Online (Sandbox Code Playgroud)手动打开Xcode mergetool并以通常的方式摆脱冲突:
git mergetool
Run Code Online (Sandbox Code Playgroud)保存更改,提交,推送.
刚刚面临一个问题,有人覆盖了我的整个提交,并且还有很多其他提交,现在我必须重新提交该特定提交.任何帮助,将不胜感激.
有人合并冲突,而合并时他失去了我所有的变化.我不知道他做了什么,但我的改变不在那里.在历史上,我的提交就在那里,但如果我看到他的合并,我的更改将被还原.
现在我无法恢复他的合并提交,因为它包含大量文件与我比较我也不想手动逐个更改每个文件.有没有办法在不影响其他人的情况下取回我的更改.
我试图将上游更改合并到我的分支中时遇到冲突,我不知道如何解决它们.
我创建了自己的fork.我克隆了它.我对我的分支,承诺和推送的分支进行了更改.但后来主叉更新了,我尝试通过合并上游来更新我自己的fork:
$ cd repo-name
$ git remote add upstream git://github.com/username/repo-name.git
$ git fetch upstream
$ git merge upstream/master
Run Code Online (Sandbox Code Playgroud)
合并说文件存在一些问题,自动合并不起作用.它告诉我自己修复并重新合并.所以我实际上去了主叉的GitHub上的(上游)存储库,并将新文件的所有代码复制到我的fork上的文件中,并尝试再次合并.然后,git给了我这个错误:
致命:'merge'是不可能的,因为你有未合并的文件.请在工作树中修复它们,然后根据需要使用'git add/rm'标记解析并进行提交,或使用'git commit -a'.
我有什么争论吗?我做了些蠢事吗?"未合并的文件"是什么意思?合并文件的合并不是全部吗?在合并之前,我是否必须提交更改?
在我的git repo中,我有一个Master分支.其中一个远程开发人员创建了一个分支,Branch1并在其上进行了一系列提交.我分支Branch1,创建一个名为Branch2(git checkout -b Branch2 Branch1)的新分支,以便Branch2头部在最后一次提交时添加到Branch1:(看起来像这样)
Master---
\
Branch1--commit1--commit2
\
Branch2 (my local branch)
Run Code Online (Sandbox Code Playgroud)
Branch1有过一些变化.另一个开发者压缩了他的提交,然后添加了一些提交.与此同时,香港专业教育学院在我的分支机构中进行了一系列更改但尚未提交任何内容 目前的结构如下:
Master---
\
Branch1--squashed commit1,2--commit3--commit4
\
Branch2 (my local branch)
Run Code Online (Sandbox Code Playgroud)
现在我想要改变我的变化Branch1.我对如何解决这个问题感到非常困惑.我知道第一步是使用git add .和提交我的更改git commit -m "message".但是我会推吗?用git push origin Branch2?还是git push origin Branch2 Branch1?非常需要帮助,非常感谢,如果我可以创建一个如何创建我的分支的备份,这将是伟大的,以防万一我搞砸了
我已经创建了一个git存储库并添加了一个文本文件.这是100%用于学习目的.
我在文本文件中添加了"1"并将其提交给master.
从master创建一个新分支并附加"2".
最后,从master创建了一个分支并附加了"3".
您能解释一下这个或任何其他场景中可能发生的冲突吗?
我的本地树与主人分道扬:
$ git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 7 and 3 different commit(s) each, respectively.
#
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)
我试过git pull --rebase并且失败了:
$ git pull --rebase
First, rewinding head to replay your work on top of it...
Applying: * ...
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging ChangeLog
CONFLICT (content): Merge conflict in ChangeLog
Failed …Run Code Online (Sandbox Code Playgroud) 最近我启用了diff3,现在解决冲突要容易得多.
以前在某些情况下,我必须检查日志,看看人们为什么这样做以及合并.但是使用diff3,信息会在一个地方显示出来
<<<<<<< HEAD
THIS IS USEFUL
||||||| merged common ancestors
This is useful
=======
This is really useful
>>>>>>> c2392943.....
Run Code Online (Sandbox Code Playgroud)
由此我们可以很容易地看到结果应该是"这真的很有用"
我想知道diff3是否有任何缺点?为什么它不是git的默认行为?
是否有一个Git命令可用于确定合并是否在进程中(即未提交)?我知道我可以简单地检查一下.git/MERGE_HEAD,但对于命令行脚本来说这是正确的和/或面向未来的吗?
git ×10
git-merge ×2
cherry-pick ×1
commit ×1
conflict ×1
diff3 ×1
git-branch ×1
git-diff ×1
git-rebase ×1
github ×1
merge ×1
partial ×1
rebase ×1
xcode ×1
xcode8 ×1