我在大学里使用git已经有两年了,如果我说实话,我仍然不知道自己在做什么。我不确定标题是否恰当地描述了我遇到的问题,但是基本上,我在开发特定功能时对master分支做了很多提交。现在我已经完成了开发此功能的工作,我的后见之明向我展示了这是一个糟糕的主意,因为我现在只需要提交和部署最后几个提交。由于这些早期提交仍在审核中,正在等待批准,因此我不能仅仅将所有内容提交到我的开发服务器上。在尝试弄清楚这一点时,我偶然发现了git cherry-pick
,但显然这是用来从其他分支中提取特定提交的...我想...我的问题是,现在我处于此绑定中,是否有办法只从master分支中拉出最后2或3个提交,而没有得到我不想包括的所有更改?我已经阅读了有关SO的其他文章,但是我不确定我是否了解有关樱桃采摘的答案,足以尝试这些答案,或者在这种情况下是否合适。
答案 0 :(得分:2)
听起来您有一个分支,其中包含您不想要的提交,后来又提交了您要做的,但是您不想破坏该分支:
@DynamoDBTable(tableName = "Student")
public class StudentDO {
private Integer id;
private String name;
private Integer score;
@DynamoDBAttribute(attributeName = "Id")
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@DynamoDBAttribute(attributeName = "Name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@DynamoDBAttribute(attributeName = "Score")
public Integer getScore() {
return score;
}
public void setScore(Integer score) {
this.score = score;
}
@Override
public String toString() {
return "Student [Name=" + name + ", id=" + id + ", score=" + score + "]";
}
}
您需要一个新分支。
master branch
A - B - C - D - E - F - G -H - I - J - K
\ / \ /
Unwanted commits Good commits
,您需要将其重置为不需要的工作。
git checkout -b new-branch
现在,您可以从git reset --hard <hash-of-commit-C>
中挑选所需的提交。
master
答案 1 :(得分:1)
您可以这样做:
git checkout new-branch origin/master # or use whatever branch/revision you think it's ok to start from
git cherry-pick old-branch~2..old-branch # cherry pick the last two revisions of old-branch
如果您喜欢结果,可以用此替换分支
git branch -f old-branch # set old-branch where I am right now
git checkout old-branch
您完成了。