簡體   English   中英

將更改推送到遠程分支而不提交

[英]Push Changes to Remote Branch without Commit

我在幾個系統上工作,台式機和筆記本電腦是我主要的兩個開發站。 我希望能夠使用我的 github 在系統之間切換時使我的代碼庫保持最新; 但是,有時功能並不完整,至少對我來說,在沒有最終功能/更改的情況下進行提交似乎是一種不合適的策略(如果這是一種錯誤的思維方式,請糾正我)。

不過我很好奇,如果沒有提交,我如何將它推送到我的遠程/分支? 對於我要完成的工作,合適的方法是什么?

你的問題的簡短回答是,不。 Git 維護每個提交與其父項相關的更改歷史記錄。 如果不提交更改,您將無法推送更改。

[...] 有時功能並不完整,至少對我來說,在沒有最終功能/更改的情況下進行提交似乎是一種不合適的策略(如果這是一種錯誤的思維方式,請糾正我)

當談到 git 時,這不是正確的思維方式。 在討論中央系統時可能是正確的,但像 git 這樣的分布式系統是不同的。 您想要的是能夠跨系統共享正在進行的工作 (WIP)。 您可以通過以下幾種方式做到這一點:

本地開發,完成后推送

在本地,您可以在不影響其他人的情況下對歷史做任何您想做的事情(避免已經推送的提交)。 您可以從 main/master 創建一個新分支,根據需要進行盡可能多的 WIP/broken 提交,然后在推送之前 rebase 以將提交組合在一起。 缺點是所有這些都必須在一個系統上完成,並且在此期間它在開發過程中對您的其他系統是不可見的。

推送 WIP 更改,以便其他人可以看到

首先,您應該創建一個名稱清楚地表明WIP的分支。 例如,假設您為每個功能分支添加了WIP前綴。 確保與您一起工作的任何人都知道帶有此前綴的分支是不穩定的,並且可能會重寫其歷史記錄。

在這些分支上,您應該在小提交中進行開發。 最后的一個大提交是沒有人願意坐下來審查的,特別是如果它是一個大功能。 由於您與其他人位於不同的分支上,因此您可以自由推送。 您還可以將您的分支重新定位到 origin/master 以保持最新狀態,並在需要時將您的一些提交壓縮成更大的提交。 當您准備好再次推送時,您可以執行git push --force-with-lease origin your_branch_name以用您新重新調整的更改覆蓋遠程。

如果有一天您切換到另一個系統並希望確保您的本地副本是最新的,您可以簡單地切換到該分支並執行git pull --rebase 這將執行變基而不是合並,這將確保您的歷史保持線性。 完成開發后,您可以重命名分支,以便其他人知道它是穩定的。 為此,您需要在本地重命名分支並刪除遠程副本。 這可以通過切換到分支並運行git branch -m new_name來重命名分支來完成。 您可以使用git push --delete origin old_branch刪除遠程副本,最后您可以使用git push -u origin new_name將新分支名稱推送到遠程。

Ôrel 提供了一個合理的答案。

使用 WIP 為提交添加前綴,然后稍后對其進行修改。

暫無
暫無

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

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