簡體   English   中英

git 的新手,為什么我在開發分支上看到我的更改,即使我將它們暫存到功能分支上?

[英]New to git, why I see my changes on develop branch even if I stage them on feature branch?

我是 git 的新用戶。

我正在關注 git-flow 分支 model,所以我有分支 master 和 develop ,每次我需要一個新功能時,我都會打開一個新功能分支。

我對功能分支中的幾個文件進行了一些更改,並暫存了它們,但尚未提交,因為更改尚未經過測試:

$ git status
On branch feature/ParamConfigFaultCollection
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   IOLSE_User_Objs.h
        modified:   data.c

現在我需要在分支開發上工作,所以我切換到它,我使用 Sourcetree 作為 git GUI,然后雙擊開發: 在此處輸入圖像描述

我原以為功能分支上隱藏文件的更改對開發不可見,但似乎這些更改也出現在開發中:

$ git status
On branch develop
Your branch is up to date with 'origin/develop'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   IOLSE_User_Objs.h
        modified:   data.c

我究竟做錯了什么?

您暫存的更改不會被隱藏。 他們為提交做好了准備。 在分支之間切換時,任何未提交或未隱藏的更改都將保留在您的工作區域中,並且當 Git 可以執行切換到另一個分支而不覆蓋您更改的文件時,它將允許您這樣做。

如果您不想隨身攜帶更改,則必須:

  • 最佳選擇:首先將它們提交到您的功能分支以清理您的工作區域
  • 不錯的選擇,但有一些缺點:將它們藏起來並清潔您的工作區域
  • 最壞的情況:創建一個新的臨時分支,在那里提交您的更改,稍后再挑選回來。

然后切換到另一個分支。

有些客戶會請您代您保管。 我不想那樣做,因為當我切換回來時很容易忘記隱藏的更改。

我要做的不是隱藏,而是在功能分支上提交我的更改,最好有一個非常清晰的提交消息來解釋這些還沒有准備好,然后,當我回到那個分支時,我可以:

  • 修改提交以在推送它們之前向其添加其他更改
  • 對更改進行交互式 rebase 以及其他更改,以在推送之前清理本地歷史記錄
  • 執行git reset --soft HEAD~1以撤消臨時提交,但保留其更改,然后對其進行更多處理並稍后在新提交中再次提交。

只要您不將更改推送到遠程服務器,您就可以調整本地歷史記錄,直到它看起來像您想要的那樣。

暫無
暫無

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

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