我想手动合并所有文件与meld或任何其他diff工具,我怎么能用Git做到这一点?
我跑的git mergetool
时候说no files need merging.所以我想我只有在遇到冲突时才能这样做.
可能重复:
使用pull命令时github会锁定mac终端
我通过Mac上的终端使用git.我最近尝试执行时遇到了一个恼人的问题git pull.执行后git pull我收到以下错误消息:
Merge ssh://domain.com/repository.git
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts:
# the commit.
Run Code Online (Sandbox Code Playgroud)
问题是我不能输入任何东西.我的终端似乎卡住了,似乎没有任何我能做的事情.我对git来说相当新,所以这可能是我犯的一个简单错误.
我在这里读到,对于某些人来说,文本编辑器此时打开了.在我看来,情况肯定不是这样.它还指出我可以使用--no-edit标志在没有消息的情况下进行合并,但即便如此,这似乎也不适用于我.
我此刻有点无能为力,卡住并无法将任何更改推送到我的服务器.
我们有以下情况:
A --- B --- C --- ... --- iphone
/
... --- last-working --- ... --- master
Run Code Online (Sandbox Code Playgroud)
在上次工作和iPhone之间,进行了32次提交.在last-working和master之间,做了很多提交.
我现在想要的是一个新的分支,我将iphone和当前的主人合并在一起.在以后的某个时间,这应该合并到主人.
首先,我计划做:
git checkout iphone -b iphone31
git merge master
Run Code Online (Sandbox Code Playgroud)
但后来我想,如果做得更好:
git checkout master -b iphone31
git merge iphone
Run Code Online (Sandbox Code Playgroud)
现在我想知道.结果会有什么不同?合并会有不同的表现吗?
我已经尝试了两种,正如我所料,我遇到了很多冲突,因为与主人相比,iphone真的很老了.现在我想知道合并它们的最简单方法.
也许甚至从大师开始并将每一次提交的iphone合并到它会更容易?喜欢这样做:
git checkout master -b iphone31
git merge A
git merge B
git merge C
...
git merge iphone
Run Code Online (Sandbox Code Playgroud)
最后,当这个合并完成时(即所有冲突都已解决且工作正常),我想这样做:
git checkout master
git merge iphone31
Run Code Online (Sandbox Code Playgroud) 一个成功的Git分支模型建议--no-ff在合并分支时使用:
该
--no-ff标志使合并始终创建新的提交对象,即使可以使用快进执行合并.这样可以避免丢失有关功能分支历史存在的信息,并将所有一起添加功能的提交组合在一起.[...]是的,它会创建一些(空的)提交对象,但增益要大得多.不幸的是,我还没有找到一种方法来制作
--no-ffgit merge的默认行为,但它确实应该如此.
但是,了解Git工作流建议不要使用--no-ff:
因此,您添加了一条新规则:"当您在功能分支中合并时,使用
–-no-ff强制执行新提交."这可以完成工作,然后继续.[...]
这两种方法对于差异情景似乎都是合理的,但是什么被认为是"良好实践?"
你什么时候使用--no-ff,什么时候不用,为什么?
我有2个分支A和B.
每当我运行构建时,分支A都会合并到分支B中.我希望能够通过电子邮件发送自上次构建运行以来在A中所做的所有更新.我怎样才能git log复制自上次A - > B合并以来在A中所做的所有提交?
应该使用哪一个来隐藏微观发现?
是git merge --squash和git merge --no-ff --no-commit否认其他父母的唯一区别?
我知道默认的重命名限制是100,并且可以使用配置"diff.renamelimit config"增加此值
令人担心的是,如果没有设置此配置,是否会有错误的合并,任何丢失的代码?我试图合并(git merge)2个有巨大变化的分支.
有人可以更多地了解这个配置设置吗?
抱歉,如果这看起来多余,因为我知道有很多关于Merge和Rebase的问题,但似乎也没有任何关于'Branch Default'的问题.
您将获得一个案例,您可以同时处理多个人(即Android Studio中的Android应用程序).如果有人推送到主分支并且您想要引入新主服务器以便它不会覆盖您仍在处理并且尚未提交并推送到主服务器的工作,那么更新项目/拉动的最佳选项是什么?单击"更新项目"时,Android Studio会列出"合并""重新生成"和"分支默认".听起来,我想做'Rebase'(接着'合并'?),但我不完全确定.
我必须解决一些冲突git pull.
$ git pull
CONFLICT (rename/add): Renamed vignette_generator_mashed.h->vision_problem_8.h in 49423dd0d47abe6d839a783b5517bdfd200a202f. vision_problem_8.h added in HEAD
Added as vision_problem_8.h~HEAD_1 instead
Removed vignette_generator_cross_square.cc
Automatic merge failed; fix conflicts and then commit the result.
Run Code Online (Sandbox Code Playgroud)
所以我用Google搜索了一下,发现有人在说使用git mergetool.但这是我得到的:
$ git mergetool
merge tool candidates: meld kdiff3 tkdiff xxdiff meld gvimdiff emerge opendiff emerge vimdiff
No files need merging
$ git mergetool opendiff
merge tool candidates: meld kdiff3 tkdiff xxdiff meld gvimdiff emerge opendiff emerge vimdiff
opendiff: file not found
Run Code Online (Sandbox Code Playgroud)
那么这是否意味着我必须安装一些东西?
如果我只想让版本 …
我在我的项目中进行了很少的更改(我在远程分支而不是主服务器上工作),我提交了它们并在BitBucket上创建了一个pull请求并将分支合并到master.我忘了在提交后推送我的更改.现在,在尝试将当前分支切换到我的远程分支并在合并之前恢复到提交之后,我设法将所有更改恢复并将其备份到系统中的其他位置.我现在要做的是撤消我所做的错误合并.每次我单击合并并选择"反向提交",我收到以下错误消息:
"错误:提交是合并但没有给出-m选项.
致命:恢复失败"
分支现在看起来像这样:

我想删除合并并将其带到一个状态,以便它不再说master(4 behind)了.
git ×10
git-merge ×10
merge ×3
fast-forward ×2
git-pull ×2
android ×1
conflict ×1
git-config ×1
git-log ×1
squash ×1