[英]Git - branch to introduce new files without deleting old files
我有一個不尋常的git問題,希望其他人以前已經做過,可以提供見解...
我正在努力將文件添加到現有git項目中。 通過一系列自動化步驟,我希望創建一個完全為空的分支,引入新文件,將這些文件提交到遠程分支,然后讓用戶手動合並新文件,以使新更改不會自動覆蓋/損壞現有項目中的任何內容。
我嘗試了git checkout --orphan
,它並沒有實現我想要的功能,它只是創建了一個“新”歷史記錄,合並git checkout --orphan
替換現有分支的內容。 您無法像通常合並更改那樣合並它們。
我還嘗試了正常的git checkout -b emptybranch
,然后手動刪除了所有文件並引入了新文件。 這種情況下的問題是,我不希望在合並時刪除現有文件-我只希望將新文件包含到新項目中,或者使沖突對於項目所有者可見以使其自身合並。
我想要的是添加/合並新文件,而不刪除現有分支中現有的任何內容(新分支僅包含新文件,現有分支中沒有其他內容)。 任何幫助將不勝感激。
我認為您確實需要git checkout --orphan
,但是您想要它緊隨其后是git rm -r .
(也許還有rm -rf
留下的所有未跟蹤文件)。
我嘗試了
git checkout --orphan
,它並沒有實現我想要的功能,它只是創建了一個“新”歷史記錄,合並git checkout --orphan
替換現有分支的內容。
那不是很正確。 --orphan
所做的是進行設置,以便當前分支上的下一個提交本身就是root提交 。 否則,使用--orphan
與-b
相同,即, 索引將保持當前已滿的狀態。 工作樹同樣不受干擾。
如果然后還清空索引(在頂層使用git rm -r .
),還可以選擇清理工作樹(如果還有任何剩余的未跟蹤文件),那么從現在開始, 只有新文件來自工作樹的git add
將在下一次提交中。 (由於人們在新存儲庫中進行此類提交的相同原因,您可能希望首先僅提交自述文件,就像在新的完全空的存儲庫的初始根提交中所做的那樣。)
以后,如果並且當您使用git merge
此分支時,Git現在(從2.9版開始)會拒絕該嘗試,除非您添加--allow-unrelated-histories
。 這是因為孤立分支與存儲庫中的其他分支之間沒有合並基礎 。 添加--allow-unrelated-histories
告訴Git使用合成的空提交(實際上是空樹 )作為合並基礎。 因此,在合並期間,兩個分支提示中的所有文件都被視為新添加的,並且如果標識了兩個文件(即,兩個提示提交中具有相同的路徑名),您將在它們上發生添加/添加沖突,並且被迫手動解決此問題。 給定您的問題描述,聽起來這就是您所擁有的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.