我一直在閱讀已經與團隊成員共享的提交壓縮/修改/修改提交的危險。如果團隊要求這個改變,我們該怎麼做?如何在Github上重寫共享Git歷史記錄?
是否每個人都停止提交文件,只有一個人重寫歷史記錄,推送到GitHub,然後讓每個人都拉+恢復工作?
我一直在閱讀已經與團隊成員共享的提交壓縮/修改/修改提交的危險。如果團隊要求這個改變,我們該怎麼做?如何在Github上重寫共享Git歷史記錄?
是否每個人都停止提交文件,只有一個人重寫歷史記錄,推送到GitHub,然後讓每個人都拉+恢復工作?
當我們做Squash/Rebase/Amend時,git的歷史被改變了。所以,我們無法推送到遠程except force (-f) push
,那麼遠程分支歷史將被本地分支歷史取代。
YES
。重寫歷史後,每個人都應該再次在同一分支上工作。基本上我們可以隨時重寫git歷史,只要git存儲庫不共享。
如果你想重寫一個共享分支(例如master),你應該在本地重寫它。一旦你完成了,你應該挑選新的提交併停止所有合作者在這個分支上的所有活動。那麼你push -f origin master
(如果受保護則取消保護)
此時你已完成。但是其他人都需要獲得該分支而不會丟失當前的未完成工作。如果每個人都挑選從舊主人創建的分支到從新主人創建的分支的本地非共享提交,則可以完成此操作。