直到现在,我才意识到我一直在研究一个独立的HEAD(a32b42b123)分支。这个分支大大落后于大师。我做了以下操作,
git checkout master && git pull origin master
git checkout a32b42b123 && git rebase master
将该分支与master同步,并注意到我在该分支中所做的大部分更改都已消失。现在,我了解了分离头是什么。但是,如何在不清除我所做的更改的情况下在这里执行git rebase master
安全?
答案 0 :(得分:2)
Git中的提交是不可变的。如果您从a32b42b123开始并进行更改,那么分支的尖端将不再是a32b42b123,而是另一次提交。如您所见,当您退回到该提交时,您将丢失在此提交之上所做的更改。
当然,您可以使用独立的头,但这只是出于没有(好的)原因而使生活变得困难,特别是在分支机构如此便宜的情况下。只需从该提交创建一个命名分支,然后在其中进行更改即可:
$ git checkout a32b42b123 -b mybranch
# make some changes, commit
$ git fetch origin
$ git rebase origin/master