git将master重置为其他分支的代码

时间:2020-10-20 09:13:59

标签: git github git-reset

几天前,我错误地将dev分支合并到master并进行了大量提交。 我暂时没有使用master的旧提交(在dev合并之前)创建一个新分支,名为“ master_old”,并将其用于部署。

say master has commits 1,2,3,4,5 (3,4,5 are unwanted ones from dev)

master_old has commits 1,2,6,7,8 

I want the master to have 1,2,6,7,8

现在我想切换回master,但是我希望master是当前master_old的精确副本(开发合并中没有更改)

如何将master重置为master_old的代码?

3 个答案:

答案 0 :(得分:2)

让我们保持简单:

const Discord = require('discord.js');
const GoogleImages = require('google-images');

module.exports = {
  name: 'pic',
  description: 'Sends A Picture Depending On Arguments',
  async run(client, message, args, cseid, apikeygoogle, prefix) {

    const client2 = new GoogleImages(cseid, apikeygoogle)

    var term = args.join(" ")

    if (term) {
      client2.search(`${term}`)
        .then(images => {
          const randomIndex = Math.floor(Math.random() * images.length);
          message.channel.send({ files: [images[randomIndex].url] });
        })
        .catch((err) => {
          message.channel.send('Error')
          console.log(err)
        })
    }

  }
}

答案 1 :(得分:1)

  1. 您必须重置master的开头。 3可以执行命令来退回2提交。运行此命令时,您必须处于master上。
  • git reset --soft HEAD~3
  1. 隐藏更改以避免冲突。
  • git stash
  1. 当您在master_old上时,现在使用master进行基准化。
  • git rebase master_old
  1. 您可以弹出隐藏的更改
  • git stash pop
  1. 现在您的主人将是-1, 2, 6, 7, 8

答案 2 :(得分:0)

首先,您需要确定是要重写master分支的历史记录,还是添加新的提交以使master状态保持应有的状态。如果您发布了master分支(已推送至原始分支),并且可能有人拉了master分支,则您不应该重写历史记录。

如果可以重写历史记录,请遵循RomainValeri的回答。

要添加新的提交而不是重写历史记录,请执行以下操作:

git checkout master
git reset master_old .
git commit

说明:命令git reset master_old。使用master_old处的提交状态加载索引(暂存区)。然后,当您提交时,会使用该索引状态将新的提交添加到master。

Master现在看起来像这样:1,2,3,4,5,9,其中commit 9撤消3,4,5并添加对6,7,8的更改

相关问题