事件
使用重訂基底來套用變更
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 |Visual Studio 2022
Git 會自動藉由將每個新認可連結到其前置專案,在分支上維護開發歷程記錄。 當您 將一個分支合併 到另一個分支時,歷程記錄可能會變得不那麼簡單。 例如, 不快速向前合併 會藉由建立與多個前置專案的合併認可,來合併開發各行。 相反地,Git 重新基底 會結合不同的開發行,而不建立合併認可,這會導致較簡單的認可歷程記錄,但遺失合併的相關信息。 您所選擇的 合併類型 可能會受到您要保留合併記錄或簡化認可歷程記錄的影響。
本文討論何時使用 rebase 而非無快速向前合併,並提供下列工作的程式:
- 重新設定本機分支的基底
- 在重新基底之後強制推送本機分支
- 互動式重新基底來壓縮本機認可
如需 Git 工作流程的概觀,請參閱 Azure Repos Git 教學課程。
Git 重新基底 會將來源分支的認可整合到您目前的本機分支(目標分支)。 來源分支保持不變。 如需比較,Git rebase 和其他合併類型會顯示在下圖中。
Git rebase 會重新設定目標分支的認可歷程記錄,使其包含所有來源分支認可,後面接著自上次一般認可之後的所有目標分支認可。 另一個檢視方法是,重新基底會在來源分支歷程記錄上方重新執行目標分支中的變更。 值得注意的是,Git 重新基底會變更現有目標分支認可的順序,這不是其他合併策略的情況。 在上圖中,commit K' 包含與 K 相同的變更,但有新的認可標識碼,因為它會連結回認可 E,而不是 C。
在重新基底期間,如果來源分支變更與目標分支變更衝突,Git 會提示您 解決合併衝突。 您可以使用在合併期間解決合併衝突的相同方式,在重新基底期間解決合併衝突。
Git 重新處理會產生較簡單但較不精確的認可歷程記錄 ,而不是非快速向前 合併,否則稱為 三向 或 真實 合併。 當您想要在認可歷程記錄中記錄合併時,請使用無快速向前合併。
如果您是處理功能或 Bugfix 分支的唯一人員,請考慮使用 rebase 定期將最近的 main
分支工作整合到其中。 該策略有助於確保您隨時瞭解其他人最近的工作,並及時解決任何出現的合併衝突。 藉由重新設定,您會在最新的 main
分支工作之上實作新功能,以協助維護線性認可歷程記錄。
如需 Git Rebase 和使用時機的詳細資訊,請參閱 Rebase 與 merge。
如果您重新建置先前 推送的本機分支,然後再次執行預設 Git 推送命令,推送將會失敗。 默認 Git push 命令會套用快速轉送合併,以將本機分支整合到遠端分支。 該命令會在重新基底之後失敗,因為重新基底會改變本機目標分支中現有認可的順序,因此它不再符合其遠端對應專案的歷程記錄。 在此案例中, 強制推送 將會成功,方法是覆寫遠端分支。
Git 重設基底和強制推送是功能強大的工具,但在決定是否使用時,請記住這些指導方針:
- 除非您確定沒有人使用共用分支,否則請勿重新建置已推送並與他人共用的本機分支。 重新基底之後,您的本機分支將不再符合其遠端對應項目的歷程記錄。
- 請勿強制推送至其他人正在使用的遠端分支,因為其遠端分支的本機版本將不再符合更新的遠端分支歷程記錄。
- 您的小組應同意重新基底和強制推送的使用案例。
提示
若要進行共同作業檢閱程式,請使用 提取要求 ,將新工作合併至遠端存放庫的預設分支。
Visual Studio 2022 提供 Git 版本控制體驗,方法是使用 Git 功能表、Git 變更,以及透過 方案總管 中的操作功能表。 Visual Studio 2019 16.8 版也提供 Team Explorer Git 使用者介面。 如需詳細資訊,請參閱 Visual Studio 2019 - Team Explorer 索引標籤。
選擇 [Git > 管理分支 ] 以開啟 [Git 存放庫 ] 視窗。
在 [ Git 存放庫 ] 視窗中,以滑鼠右鍵按兩下目標分支,然後選取[ 簽出]。
以滑鼠右鍵按兩下來源分支,然後選取 [將目標分支重新設定<為<source-branch>>]。
Visual Studio 會在成功重新基底之後顯示確認訊息。
如果因合併衝突而停止重新基底,Visual Studio 會通知您。 您可以 解決衝突,或取消重新基底並返回預先重新基底狀態。
如果您重新建置先前推送的本機分支,後續的預設 Git 推送將會 失敗。 相反地,您可以強制推送本機分支來覆寫其遠端對應專案,使其認可歷程記錄相符。
警告
永遠不要強制推送其他人正在處理的分支。 如需詳細資訊,請參閱 重新基底和強制推送指導方針。
若要強制在 Visual Studio 中推送,您必須先啟用強制推送選項:
移至 [工具>選項>] 原始檔控制>Git 全域 設定。
選取 [ 啟用 push --force-with-lease ] 選項。
Git 推送 --force-with-lease
旗標比 --force
旗標更安全,因為它不會覆寫遠端分支,其認可未整合到您強制推送的本機分支內。
一般而言,當您在本機功能分支中處理新功能時,您將建立多個認可。 當您準備好發佈新功能時,您可能會想要將這些認可合併成單一認可,以簡化認可歷程記錄。 您可以使用互動式重新基底,將 多個認可壓縮 成單一認可。
Visual Studio 2022 不支援互動式重新配置。 請改用 Git 命令行。
注意
Azure DevOps 用戶可以 壓縮合併 ,以壓縮提取要求期間主題分支的認可歷程記錄。
其他資源
訓練
文件
-
瞭解如何使用 Visual Studio 或命令行來解決來自 Git 合併或 Git 重新基底的合併衝突。
-
瞭解如何捨棄未認可的變更、還原共享認可中的變更、將分支重設為先前的狀態,以及通常會復原 Git 存放庫中的變更。
-
瞭解如何挑選 ,將變更從一或多個來源分支認可複製到 Git 存放庫中的目標分支。