相关疑难解决方法(0)

撤消git合并

我对Git没有经验,现在我有一个很大的问题落到了我的腿上.

这是我当前分支的样子:

feature       /---F1-----F2----\
             /                  \
master -----M0-----M1-----M2-----M3-----M4
             \                        /
bugfix        \--B1-----B2-----------/
Run Code Online (Sandbox Code Playgroud)

情况:

有人做了一件非常糟糕的事情并推出了一个非常糟糕的合并(M3).在我将B1和B2合并到M4之后,当我们的模型(不是源代码)无法加载时,我才注意到错误的合并.幸运的是,我还没有推过M4.

问题:

我该如何重新设置好的东西?我想要M0,M1,M2,F1,F2,B1和B2.但我不想要M3和M4(因为M4显然已被打破).如果我不得不放弃改变,那么可以牺牲F1和F2 :)

我看着,git revert但我不相信我完全理解它是如何工作的.所以...我真的希望得到如何解决这个问题的帮助.

提前致谢.

git merge

10
推荐指数
1
解决办法
7756
查看次数

无法在 Azure DevOps 中恢复

我将拉取请求合并到我们的开发分支中,但需要对其中一个文件进行额外的更改。我想恢复拉取请求,然后将更改添加到功能分支,但是当我在 Azure Devops 中使用恢复按钮时显示:

Encountered conflicts when reverting commit '8a750f'. This operation needs to be performed locally.
Run Code Online (Sandbox Code Playgroud)

信息非常少,没有任何内容可以指出错误是什么或错误在哪里。

我的第一个问题是:恢复原始功能分支,在此处添加新更改,然后再次合并它们Dev,使用新的拉取请求是添加新更改的最佳方式吗?或者我应该将新的更改添加到新分支中并将该分支推送到Dev?我主要关心的是如何将这两个功能分支(已经合并的分支Dev和新的分支)推送到进一步的分支,例如TestMaster

第二个问题是关于错误消息:它是什么意思以及如何检查冲突?我使用 Visual Studio 2019 和 .Net Core 2.2。

git visual-studio git-revert azure-devops

10
推荐指数
1
解决办法
2万
查看次数

如何恢复`git fetch upstream; git merge upstream/master`?

这个问题与其他问题的不同之处在于,我希望在恢复一些提交时保留一些提交.

这是我的设置.

Upstream repo on github (public repo which I don't own)
Personal repo on my server(git clone --bare $upstream)
Run Code Online (Sandbox Code Playgroud)

我的工作流程是这样的:

Need to customize my personal branch
   1. check out origin/master(Personal)
   2. make changes
   3. push to origin/master

Need to get new feature or bug fix from the original author(github)
   1. git fetch upstream
   2. git merge upstream/master
Run Code Online (Sandbox Code Playgroud)

现在我发现upstream/master有一个bug并且想要恢复,
如何在我最后一次获取/合并上游之前返回状态?

编辑.

假设

  1. 我上游合并了
  2. 我将团队成员推送到origin/master(个人)的内容合并

现在我要撤消第1步.

git reset --hard commit_sha_of_one_prior_the_merge_1

(虽然找到啥是不容易的.git的日志显示了很多承诺的上游沙的,所以这是不容易找到犯-SHA-of_one_prior_the_merge_1这是不是upstream而是 origin/master)

如何保持第2步合并?

假设一个稍微复杂的场景

  1. 我上游合并了
  2. 我合并了另一个团队成员推送到Personal的内容
  3. 我也将我的工作推向了个人

现在我想撤消上游合并.我该怎么做?

git revert

9
推荐指数
1
解决办法
5909
查看次数

如何撤消git合并,但保留历史记录

我们的存储库有一个主分支,但似乎我们的一个同事有一个具有不同历史的主分支.昨天他把他的主人合并成了主人并推了推.所以今天我们中的一些人已经开始工作了.当我们意识到这个问题已经过了几个小时的工作......

所以我的问题是如何撤消他的合并,但仍然保持今天的代​​码更改?左侧是我们目前的状态,右侧是我正在拍摄的.我应该改变吗?或者有办法撤消合并?什么是最好的方法?

在此输入图像描述

编辑1:我不认为这是Undo一个尚未推送的Git合并的副本,因为提交被推送到原点以及我有其他提交错误后我想保留历史记录.

编辑2:我试图改变,问题是新手在过去的两周内融入了他的主分支......所以即使我还原我也没有摆脱他创造的新"时间轴"......我只要我摆脱他的时间表,重写历史没有问题......

在此输入图像描述

编辑3:

最后,我最终找到了一个未受影响的存储库版本,并回复了事件发生后所做的修改......

git

8
推荐指数
1
解决办法
1567
查看次数

哪个提交哈希使用git-revert撤消推送合并?

我将beta分支合并到主分支中.我推到原点.我现在希望master在本地和远程合并之前就像它一样.

撤消已经推送的合并的一个很好的答案表明

git revert -m 1 commit_hash
Run Code Online (Sandbox Code Playgroud)

如果这确实是要走的路,我该如何确定commit_hash?我没有成功尝试merge-base返回的哈希:

$ git merge-base --all master beta
1f4b949b7ef97abf913ae672e3acd0907abfac1b
$ git revert -m 1 1f4b949b7ef97abf913ae672e3acd0907abfac1b
error: Mainline was specified but commit 1f4b949b7ef97abf913ae672e3acd0907abfac1b is not a merge.
fatal: revert failed
Run Code Online (Sandbox Code Playgroud)

我已经检查了分支的git-log和gitk再现,但是它们很长,我不太清楚我的解释,觉得我应该寻求帮助才能做出更大的混乱.Beta来自v2,它来自master.随着我与主人保持最新的分支机构,我们已经有一些从大师到v2和beta的合并.从beta到Master的方向的合并是我想纠正的错误.

一旦我确定了合并点,如果我发现在合并之后对master进行的任何提交真的应该在beta分支上,那么移动它们的最佳方法是什么?

git undo git-merge git-revert git-log

7
推荐指数
1
解决办法
9367
查看次数

Git:如何将我的本地分支恢复到远程分支状态?

我弄乱了项目的本地分支,我想将本地副本还原到远程状态.我如何完成那个简单的目标?

git

6
推荐指数
2
解决办法
7009
查看次数

Git-Flow撤消已完成的功能分支

如果要"撤消"功能分支,您有哪些选择?假设你添加了一个supercool-feature你完成的新功能(合并到开发并删除功能分支)然后它进入一个版本.但是你的用户真的不喜欢这个supercool-feature.如何撤消/回退/反转已合并到开发和发布中的此功能?

我正在使用SourceTree进行版本控制.

git git-flow

6
推荐指数
1
解决办法
5150
查看次数

如何撤消master分支的合并?

我是新Github所以请原谅看似明显的问题.我有一个Experimentation分支,在master分支之前有24个提交.

在本教程之后,我将master分支与Experimentation分支合并,如下所示:

git checkout master
git merge Experimentation
Run Code Online (Sandbox Code Playgroud)

(没有合并冲突.)

但后来我意识到合并两个分支不会保留Experimentation分支的提交历史,而我真正想要的是做一个rebase(为了保留Experimentation分支的提交历史).

所以我的问题是:如何撤消主分支的合并?

我已经尝试过了:

$ git branch
      Experimentation
    * master
      pod-attempt

$ git merge --abort
      fatal: There is no merge to abort (MERGE_HEAD missing).
Run Code Online (Sandbox Code Playgroud)

在"致命"的消息让我感到困惑B/C,我想我做了合并的主分支.

git version-control merge github git-branch

6
推荐指数
1
解决办法
1万
查看次数

Bitbucket,不小心拉错了分支

我碰巧选择了错误的分支,因为我原本应该选择主分支,但最终却选择了开发分支。这确实合并了我的本地仓库。但是,我不想合并Bitbucket存储库。有什么办法可以撤销拉取或删除合并请求(见图)?

在此处输入图片说明

编辑:

我还没有对Bitbucket进行任何更改(是如图所示)。

git bitbucket

6
推荐指数
1
解决办法
160
查看次数

如何从 GIT 恢复旧的 Pull 请求

如果一个 Pull 请求被合并(比如 PR3),并且在这几个 Pull 请求(比如 PR4、PR5 等)之上被合并,这些请求对先前合并的 Pull 请求 PR3 中的同一文件进行了更改,现在我想要恢复 Pull 请求 PR3,Git 不允许我自动执行此操作并给出此错误。

抱歉,此拉取请求无法自动还原。它可能已经被恢复,或者内容可能在合并后发生了变化。

我应该如何恢复拉取请求 PR3?

git github git-revert

6
推荐指数
1
解决办法
5803
查看次数