问题描述
几天前,我错误地将dev分支合并到master并进行了大量提交。 我暂时没有使用master的旧提交(在dev合并之前)创建一个新分支,名为“ master_old”,并将其用于部署。
say master has commits 1,2,3,4,5 (3,5 are unwanted ones from dev)
master_old has commits 1,6,7,8
I want the master to have 1,8
现在我想切换回master,但是我希望master是当前master_old的精确副本(开发合并中没有更改)
如何将master重置为master_old的代码?
解决方法
让我们保持简单:
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)
})
}
}
}
,
- 您必须重置
master
的开头。3
可以执行命令来退回2
提交。运行此命令时,您必须处于master
上。
-
git reset --soft HEAD~3
- 隐藏更改以避免冲突。
-
git stash
- 当您在
master_old
上时,现在使用master
进行基准化。
-
git rebase master_old
- 您可以弹出隐藏的更改
-
git stash pop
- 现在您的主人将是-
1,2,6,7,8
首先,您需要确定是要重写master分支的历史记录,还是添加新的提交以使master状态保持应有的状态。如果您发布了master分支(已推送至原始分支),并且可能有人拉了master分支,则您不应该重写历史记录。
如果可以重写历史记录,请遵循RomainValeri的回答。
要添加新的提交而不是重写历史记录,请执行以下操作:
git checkout master
git reset master_old .
git commit
说明:命令git reset master_old。使用master_old处的提交状态加载索引(暂存区)。然后,当您提交时,会使用该索引状态将新的提交添加到master。
Master现在看起来像这样:1,3,4,5,9,其中commit 9撤消3,5并添加对6,8的更改