git合并两个提交
我不确定这是否是重复的,我不是git专家,所以原谅我可能看起来像一个愚蠢的问题。
我有一个文件。 我编辑它,保存并执行这些更改。
我忘了我已经完成了这个工作,并编辑了该文件的原始版本(恰好在另一个编辑器窗口中打开),保存并提交了一组不同的更改。
  因此我有两个连续的提交。 
  我想生成一个git merge样式文件,并在两者之间产生冲突,以便我可以编辑并解决冲突。 
  Git认为它可以使用所有较新的文本并丢弃旧的文本。 
  我已经尝试了git merge和git merge -no-ff组合,但不能真正解决做什么问题。 
我也不确定要使用哪些搜索条件。
更新:
  只是要清楚,我最终想要的是一个git merge冲突的文件。  我可以很容易地看到使用git diff的两个文件之间的git diff但是输出不容易编辑。  我认为git可能有一种简单的方法来说“这两个提交以这种方式冲突......”,因为它必须能够在某个级别上做到这一点。 
如果你只是试图合并这两个提交,那么Git会(正确地)认识到一个基于另一个提交,并且不会为它产生冲突。 毕竟,对Git来说,历史看起来像这样:
                   master
                     ↓
* ---- X ---- A ---- B
  B是一个改变A具有的东西的提交。  从版本X查看文件状态时,Git无法知道您是否创建了B 
  所以你必须改变这个事实,所以Git将使用X作为A和B 。  所以让我们先为基础创建一个分支: 
git branch base X
这导致:
      base         master
       ↓             ↓
* ---- X ---- A ---- B
  现在,我们切换到base并从B检出文件并提交该更改(这实质上是从B复制文件的状态) 
git checkout base
git checkout master -- file.ext
git add file.ext
git commit
                   master
                     ↓
* ---- X ---- A ---- B
        
         
          C
          ↑
         base
  现在您可以合并A并按照需要生成冲突: 
git merge A
解决冲突之后,结果如下:
                   master
                     ↓
* ---- X ---- A ---- B
              
               
          C ---- M
                 ↑
                base
此时,您拥有该文件所需的状态。 你现在有三个选择:
base合并master以保留我们人为创建的整个历史。  对于文件冲突(您将在此收到),您可以使用theirs策略来保持解决方案的状态。 master文件,并在B之后对合并的内容进行新的提交。 master重置为M (扔掉B ),并使用这个新创建的历史记录继续。  当然,这会删除提交B因此它基本上删除了历史(如rebase),如果您已经发布了B则应该避免这种情况。 既然你只是想合并一个文件,你可能更好的是创建每个状态的副本,并手动合并(或与一些合并工具)。
如果你做了两次提交,git没有提出任何抱怨,那就意味着你没有任何冲突。
我建议你
add / rm它们 这样你最终会得到一个包含你希望包含的更改的提交。
在命令中,它会是这样的
$ git checkout sha-commit-2  # or branch name, depends on how your tree looks
$ git reset HEAD^  # soft reset, remove commit but keep changes
$ git diff  # diff against previous commit (should be the first one you mention)
--make your changes and add them--
$ git commit --amend
如果你只做了提交,而你没有推进你的更改,你可以恢复你已经完成的提交,在这里:
如何撤消Git中的最后一次提交?
你会发现如何撤消你最后一次提交:
$ git commit -m "Something terribly misguided"
$ git reset --soft HEAD~
<< edit files as necessary >>
$ git add ...
$ git commit -c ORIG_HEAD
另一个类似的信息与其他设施如何在git中提交提交?
如果git的使用对你来说很复杂,另一种方法是:将自己置于编辑文件的分支中,将编辑后的文件复制并保存到另一个文件夹中,例如。 “/ home / your_file_here”,然后将您的分支更改为主,并将编辑的文件“/ home / your_file_here”移至主。 然后您将更新文件,并且可以使用“git diff your_edited_file”来检查更改。
更新你的文件后,你可以删除你修改文件的分支“git branch -d branch_to_be_removed”。 附加信息在这里:如何删除本地和远程的Git分支?
所以我的建议是,不要合并你有的两个提交,你应该撤销其中的一个,在这种情况下,你是在主人做的。 如果你想了解更多关于'合并'的信息,你会在这里找到真正有趣的信息:Git-Branching-Basic-Branching-and-Merging和here:Git-Tools-Advanced-Merging
链接地址: http://www.djcxy.com/p/23461.html