簡體   English   中英

Git-分支以引入新文件而不刪除舊文件

[英]Git - branch to introduce new files without deleting old files

我有一個不尋常的git問題,希望其他人以前已經做過,可以提供見解...

我正在努力將文件添加到現有git項目中。 通過一系列自動化步驟,我希望創建一個完全為空的分支,引入新文件,將這些文件提交到遠程分支,然后讓用戶手動合並新文件,以使新更改不會自動覆蓋/損壞現有項目中的任何內容。

我嘗試了git checkout --orphan ,它並沒有實現我想要的功能,它只是創建了一個“新”歷史記錄,合並git checkout --orphan替換現有分支的內容。 您無法像通常合並更改那樣合並它們。

我還嘗試了正常的git checkout -b emptybranch ,然后手動刪除了所有文件並引入了新文件。 這種情況下的問題是,我不希望在合並時刪除現有文件-我只希望將新文件包含到新項目中,或者使沖突對於項目所有者可見以使其自身合並。

我想要的是添加/合並新文件,而不刪除現有分支中現有的任何內容(新分支僅包含新文件,現有分支中沒有其他內容)。 任何幫助將不勝感激。

TL; DR執行摘要

我認為您確實需要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.

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