Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Git不是push';合并?_Git_Merge_Push - Fatal编程技术网

为什么Git不是push';合并?

为什么Git不是push';合并?,git,merge,push,Git,Merge,Push,我正在尝试合并。我执行了以下步骤(直接取自Bash历史记录): 我尝试使用git-push原始主机和git-push进行推送。在这两种情况下,Git都返回: $ git push origin master Username for 'https://github.com': noloader Password for 'https://noloader@github.com': Everything up-to-date 因为我合并了修补程序,所以无法更新所有内容。更改后,我没有看到已删除的

我正在尝试合并。我执行了以下步骤(直接取自Bash历史记录):

我尝试使用
git-push原始主机和
git-push
进行推送。在这两种情况下,Git都返回:

$ git push origin master
Username for 'https://github.com': noloader
Password for 'https://noloader@github.com':
Everything up-to-date
因为我合并了修补程序,所以无法更新所有内容。更改后,我没有看到已删除的代码:

$ grep WORKAROUND_MS_BUG_Q258000 *.h *.cpp
$
我验证了我在Master上:

$ git branch
* master
  noloader-master
  wyattoday-fix-junk-defines

为什么Git不推动合并?如何解决此问题?

如果运行
git status
,我相信您会发现您的工作副本包含与拉取请求中引入的更改相匹配的阶段性更改:

On branch master    
Your branch is up-to-date with 'origin/master'.                                 

Changes to be committed:                
  (use "git reset HEAD <file>..." to unstage)                                   

        modified:   config.h            
        modified:   osrng.h
分支主机上的

您的分支机构是最新的“原始/主”分支机构。
要提交的更改:
(使用“git重置磁头…”取消分级)
修改:config.h
修改:osrng.h
git diff--cached
应该显示与PR相似的差异。这是因为,实际上不会创建新的提交(我的粗体):

生成工作树和索引状态,就像发生了真正的合并一样(合并信息除外),但实际上不进行提交,移动
,或记录
$GIT\u DIR/merge\u头
导致下一个
GIT commit
命令创建合并提交)。这允许您在当前分支上创建一个提交,其效果与合并另一个分支相同(如果是八达通,则为多个分支)


提交这些阶段性更改,然后推送。

谢谢,让我试试。Git开发人员有这些工作流程,因此需要改进。我希望这个项目能雇佣一位用户体验专家。他们自己做不好。好吧,所以我做了一个承诺和推动。Git丢失了Pull请求信息。Git把它外包给了我,而不是那个花时间让PR.F**k'ing令人惊叹的家伙。Git的另一个+1。@jww,那是因为它是一个全新的提交。我很好奇你为什么用
--squash
;听起来你并不是真的想要这种行为
git merge
没有
——squash
将(a)更新
master
,因此您的
git push
将第一次工作,并且(b)通过直接使用您的贡献者所做的提交来维护作者信息。我们使用
--squash
,因为我们希望一次提交命中日志。如果没有
--squash
,Git会把日志弄得一团糟。它甚至包括关于提交前已修复的bug的消息。这绝对是一场噩梦。(这是从经验中得出的,并试图回答审核员关于从未掌握的bug的问题)。使用
squah
并不是操纵日志输出的最佳方式;你制造了一个问题,然后把它归咎于git。如果合并时不使用
--squash
,则实际上会有一个合并(您所做的不会产生合并,并且可能会导致后续的其他问题)。只要您为合并提供了一条有意义的提交消息(如果不提供,这不是git的错),您就可以说
git log--first parent
,以避免在合并的“另一端”看到单个提交。或者,在发布PR之前,可以使用rebase将无关紧要的提交挤在一起
On branch master    
Your branch is up-to-date with 'origin/master'.                                 

Changes to be committed:                
  (use "git reset HEAD <file>..." to unstage)                                   

        modified:   config.h            
        modified:   osrng.h