首先,我以大师为基础
A - B - C
\
D' - E'
然后,主服务器还原了一些提交,因此远程看起来像:
A - B
在本地时,我的dev分支仍然具有C
提交。做一个安全吗
git pull origin master
git rebase master
某些提交不会重复吗?回到正途的正确方法是什么
A - B
\
D' - E'
答案 0 :(得分:0)
获得所需历史记录的一种方法是使用
git rebase -i origin/master
并从列表中删除不需要的提交(C
)。
“安全吗?”的答案是“是,如果操作正确”。
答案 1 :(得分:0)
问题解决方案
使用--onto
有一个简单的解决方案git rebase --onto B C
这意味着:
重新确定可从其父代为C的HEAD到达HEAD的提交。
如果您想清楚地了解要进行的基础调整,请选中https://stackoverflow.com/a/29916361/9936783
或更一般地说,如果您想更好地了解重新定基:https://git-scm.com/book/en/v2/Git-Branching-Rebasing
提议解决方案的安全性
就您而言,
master
|
A - B - C
\
D' - E'
|
HEAD
git pull origin master
master
|
A - B - C
\
D' - E'
|
HEAD
git rebase master
将什么都不做。如您所见,您的HEAD已经基于master。所以git会告诉你无事可做。
在git中,所有本地(无推送)操作都是安全的,因为您没有未版本化的本地修改,如果不确定您要做什么,只需放置一些temp标签或分支。如果您弄乱了树,总是可以回到这些地方。