簡體   English   中英

我一直在從舊分支創建新的 Git 分支,而沒有簽出到主分支

[英]I have been creating new Git branches from older branch without checking out to the master

我一直在從舊分支簽出新分支,而不是簽出到主分支。 目前,我創建了四個新功能:home_feature、admin_user-feature、customer_request、blog_feature。

在創建“customer_request”分支之前,我忘記向 master 結帳,並通過移動到博客功能來創建該功能。 現在我面臨很多沖突。 我嘗試過使用“git rebase”,但每個分支最多可以提交 80 個提交,所以它不實用。 我該如何解決這些沖突?

在此處輸入圖像描述

您可以只進行一次合並並修復沖突,而不是像使用變基一樣可能需要多次修復。

或者您可以讓 Git 在發生沖突時自動選擇您的更改或主人的更改。

例如,如果您進行變基,您可以將ours (或theirs )選項添加到遞歸合並策略中。

例如,以下命令會將您的分支重新設置在 master 之上,並且對於任何沖突,它將選擇您的更改而不是 master 的更改:

git rebase master -Xtheirs

在這種情況下, theirsours的有點違反直覺。 -Xtheirs將選擇您的更改, -Xours將從 master 中選擇更改。

從評論來看,這似乎是解決方案。 你有三個分支:

  • 碩士(男)
  • 舊功能分支 (O)
  • 新功能分支 (N)

N 意外地從 O 分支,而不是 M,這是您的意圖。 這意味着在 N 中的某個時間點開始有一系列提交,並且您希望使用這些提交重新創建分支,就好像您從 M 分支一樣。

解決方案是創建一個新分支:

  • 較新的功能分支(來自 M 的 N2)

然后從 N 中識別出一系列提交哈希,並將它們應用於 N2。 您可以通過依次挑選每一個來手動執行此操作。

存在這些不會完全適用的風險,因為與 O 相比,M 可能已經更改了一些文件,因此您在 N 中的工作將基於過時的文件/文件夾。 文本更改合並是一個相當簡單的算法,它不像人類那樣理解代碼結構(換句話說,並非所有內容都是可合並的)。

然而,事實證明,櫻桃挑選干凈。 如果您無法做到這一點,您可能必須為每個失敗的差異創建一個差異,並查看如何根據 M 中的更改手動將其應用於 N2。如果發生這種情況,仍然值得嘗試櫻桃-選擇以下提交,因為它們可能並不都需要手動解決沖突。

暫無
暫無

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

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