[英]Github - Creating a fork and later merging upstream changes without sending my changes back
我們正在對一個項目進行快速的持續開發,因此開發人員存儲庫每隔幾天就會更改一次。
我不熟悉 Git 和 Github
我最初是將存儲庫作為 zip 下載,然后根據我們的需求在本地進行一些更改。 每次都進行一次檢查以確認更改的文件並手動解決與我在本地更改的文件以及來自開發人員存儲庫的任何新更新的任何沖突。
由於這很麻煩,我然后在本地創建了遠程存儲庫的克隆,如果與我在進行獲取時在本地更改的文件存在沖突,我將存儲本地文件,然后在獲取后手動添加更改的行遠程分支。
然后我認為可能更容易分叉存儲庫對我的分叉進行更改,然后通過從它們中獲取最新提交來自動合並開發人員的任何更改。 我一直在為 Windows 使用 github.com 和 github 桌面的組合。
但是現在存在沖突 - 我假設我對開發人員現在更改的相同文件所做的更改。
該分支在上游后面有 6 次提交,並且存在必須解決的沖突。 打開拉取請求以獲取上游並查看更改或解決沖突。
但是,從我讀到的內容來看,這會將我的更改發送回上游給開發人員,讓他們接受到他們的存儲庫中?
我想在本地創建更改而不是將它們返回到上游,而只是將上游的更改合並到我的 fork 中,並在文件中逐行手動處理沖突。 目前,可能是錯誤的,我已經分叉並在主分支中進行了本地更改。
實現這一目標的最佳方法是什么?
您可能應該在單獨的分支中完成所有自定義工作。 初始設置如下所示:
git clone
遠程倉庫git checkout -b updates
以創建並移動到新分支updates
分支上進行更改初始設置后,只要遠程存儲庫更新,您就可以執行以下操作:
git checkout master
切換到 repo 的“干凈”版本git fetch
拉git fetch
遠程更改git checkout updates
以切換回帶有本地修改的分支git merge master
啟動更新代碼的合並並手動處理任何沖突有關合並命令的更多信息,請參閱https://git-scm.com/docs/git-merge 。
好的,我不清楚您為什么要這樣做 - 如果您提供用例,您可能會得到更好的建議。 例如,如果它是用於構建系統,那么可能會以其他方式注入額外內容,例如使開發人員的版本可配置或在 git 之外添加機密(比如); 如果用於部署,那么開發人員的版本應該與部署沒有太大區別。 通常還有其他方法可以做更簡單的事情——例如使用傳統補丁。
話雖如此,對於這種方法,我會不時將您的 mod 重新設置為最新版本的 main/master,並在那時處理任何沖突。 在這種情況下使用 rebase 而不是 merge 會給你一個更清晰的歷史(你總是看到你自己對主分支的一些添加)並且更容易專注於開發人員版本開始發生根本變化時應該做什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.