我有两个工作分公司,大师和论坛,我刚刚作出了一些修改论坛的分支,我想摘樱桃进入主.但不幸的是,我想要挑选的提交还包含一些我不想要的修改.
解决方案可能是以某种方式删除错误的提交并将其替换为两个单独的提交,一个包含我想在master中选择的更改,另一个不属于那里.
我试过了
git reset --hard HEAD^
Run Code Online (Sandbox Code Playgroud)
删除了所有更改,所以我不得不回去
git reset ORIG_HEAD
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,将最后一次提交分成两个单独的提交的最佳方法是什么?
我有一个从GitHub分叉的存储库,它对它做了一些修改.但是,在某个提交中,更改了一些文件,我想提交一个pull-request,将其他修改后的文件保留在请求之外.
拉请求合并所有提交,还是我需要做一些特殊的事情来隔离这个提交?
我目前正处于 git rebase --interactive会话中,我正在编辑提交.我正在按照建议如何拆分历史上埋藏的Git提交?即我跑了git reset HEAD^并做了我的修改.现在我想要rebase继续,这需要我提交我的更改.我想修改我的旧提交消息,但问题是,如果我运行git commit --amend,我会在我实际修改之前给出提交的提交消息- 我当然不想合并我的更改为该提交.
那么如何为我正在进行的提交检索旧的提交消息呢?
我复制了一个文件并同时对它进行了一系列更改(即在一次提交中).然后我继续在后续提交中进行更改.我现在想将该提交分成两个 - 一个只是将文件复制到新位置,另一个修改该文件.我该怎么办?如果这是最近的提交,那将很容易,但现在回到历史.
好的,这是案例:
几年前,我们在代码库中对多个文件进行了多处更改,并且一次性提交了所有文件.这些变化中的某处隐藏了一个错误.使用git bisect,我很快就能找到罪魁祸首提交,但是这个提交的变化量让我不那么热情了.
使用git bisect找到一个糟糕的提交是轻而易举的,但是一旦发现,追踪单一变化的最佳方法是什么让它变得繁荣?将受影响的文件逐个还原为以前的版本?
我需要带一些对develop分支进行的错误修正master.我想文件A是相同的develop和master.
通常情况下,我想git cherry-pick影响的提交A,但一些这些提交的也会影响文件B和C,其中B是存在于一个文件master,但我不想还没有改变,C就是还没有在存在的文件master.
当下一个版本在将来某个时候发布时,develop将被合并到master.如果我git cherry-pick -n现在想要的提交,我将不得不取消更改B,并C在提交之前解决不存在的冲突.当从实际合并develop成master发生,我会希望修改B和C,但我不会真正得到他们,因为我已经用在这些变化搞砸cherry-pick了吧?
我该怎么做呢?如果我git checkout <latest_commit_hash> A,这不会导致将来发生令人讨厌的合并冲突吗?
我想在最近几天解决这个问题.
首先,我在代理服务器后面工作,我使用Cntlm建立连接,我尝试在我的Visual Studio Online帐户上创建一个小存储库,一切都按预期工作,我能够克隆和推送.
我创建了另一个存储库,这次更大(整个回购大约是800MB),当我试图推送时.它需要我通过身份验证周期,然后它就会挂起(我已经将它挂了24小时而没有任何反应).postBuffer正如其他地方所建议的那样,我已经将git 增加到了524288000,但这并没有帮助.
我已经设定了更多
GIT_CURL_VERBOSE=1
Run Code Online (Sandbox Code Playgroud)
然后当我跑:
git push origin master -v
Run Code Online (Sandbox Code Playgroud)
这是它被卡住的地方:
> POST /DefaultCollection/_git/PROJex/git-receive-pack HTTP/1.1
Authorization: Basic ZGRpbWl0cm92OkQxbxxxxxx
User-Agent: git/1.9.2.msysgit.0
Host: [user].visualstudio.com
Accept-Encoding: gzip
Content-Type: application/x-git-receive-pack-request
Accept: application/x-git-receive-pack-result
Content-Length: 37423253
* Connection #1 to host localhost left intact
Run Code Online (Sandbox Code Playgroud)
我看到内容长度明显大于小型回购.我还应该注意到有500多个提交日志.
现在我认为它可能是一个代理问题,所以我在没有代理的情况下在不同的网络上尝试了它,我得到了相同的结果.除了http(s)之外的任何内容都不是我的设置中的选项.
我刚刚完成了两个已经分离了很长时间的分支,因此产生了很多冲突.在几天的时间里,解决冲突已经花了我大约16个小时.
现在冲突已经完成,并且合并已经提交,我发现我偶然搞砸了一些冲突.无论如何我是否可以进入提交,并还原或更改它的某些部分?
我更喜欢在Git Extensions中给我解决方案,但如果需要的话,我使用bash没问题.