簡體   English   中英

將功能分支合並到母版后重寫歷史記錄

[英]Rewriting history after merging feature branch into master

在我正在進行的個人項目中,我遇到以下情況-

                                    N'          <-- mainscreen
                                   /
                                  | N--O--P--Q  <-- database
                                  |/
A---B---C---D---------------------M             <-- master
             \                   /
              F--G--H--I--J--K--L               <-- loginscreen

現在,盡管我對git有一些基本的經驗,但是我從不了解任何良好的git實踐,也從未從事過一個大型復雜項目,在此之前,我的技能一直處於停滯狀態。 因此,我決定適當地學習它,並遵循此項目的一些良好做法。 快速搜索使我想到了這一點 ,我認為從所有對其的引用中,它是一個受歡迎的模型。

閱讀完這篇文章后,我意識到由於我的提交中缺乏計划, loginscreen分支中的某些代碼實際上是其他分支中所需的通用代碼,因此應分開存放。 因此,我決定重寫分支的歷史記錄,以便將通用代碼分離到一個新的develop分支中。 我發現可以使用交互式重定基礎來拆分提交,但是我不確定在這里是否可行,因為我已經將loginscreen合並到了主loginscreen (這可能是個壞主意)。 基本上我想做的是-


  1. 基於初始提交A創建一個新的分支develop
  2. B,C,D動作致力於發展
  3. 拆分F-L提交,使得僅與loginscreen相關的代碼在其自己的分支中,而通用代碼在develop
  4. loginscreen合並到develop
  5. 如果可能,請刪除主數據庫中的合並提交M
  6. 在新的develop分支上重新develop databasemainscreen分支

結果應該是這樣的-

   A-----------------------M-----------      <-- master        
    \                      | N--O--P--Q      <-- database
     \                     |/
      B---C---D---G--I--K--L                 <-- develop
               \          / \
                F---H---J    \               <-- loginscreen
                              \
                               N`            <-- mainscreen

(G, I, K commits contain the common code)

就像我說的那樣,這是一個個人項目,尚未得到推動,因此重寫歷史記錄不會有任何問題。 但這有可能嗎?

我可以輕松地解決這個問題。 所有我需要做的就是創建一個名為新的分支develop的初始提交,然后櫻桃采摘B,C和D.然后我創建了一個新的分支loginscreen承諾和櫻桃采摘,分離文件,合並分支機構和解決必要時合並沖突。 所有這些都導致了這樣的狀態-

   A----------------------------------      <-- master        
    \                      
     \                             
      B---C---D--G--I--K--L--------------Q        <-- develop
               \   \     /   \          /
                F---H---J     M--N--O--P              <-- loginscreen

之后,添加mainscreendatabase分支很簡單, mainscreen將提交提交到各自的develop分支即可。

請記住,這將更改提交時間戳,有時還會更改作者時間戳(發生沖突時)。 我沒有理會提交者,但是可以使用git commit --amend --date更改作者時間戳。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM