我有如下的檔案夾結構:
AllMyWork/
--.git/
--Proj1/
file1.cpp, ..., file10.cpp
--WindowsOnly/ (這個子檔案夾在Linux機器上不存在)
filea.bat
--LinuxOnly/ (此子檔案夾在Windows機器上不存在)
fileb.sh
我在Windows機器和Linux機器上交替進行Proj1的作業。兩臺機器在.git/和Proj1/及其內容file1.cpp到file10.cpp方面共享完全相同的檔案/檔案夾結構。然而,他們不共享的是子檔案夾WindowsOnly/和相關的檔案filea.bat(這只在Windows機器上可用)和子檔案夾LinuxOnly/和相關的檔案fileb.sh(這只在Linux機器上可用)。
現在,我在 Windows 機器上做了一個提交/推送。當我打開 Linux 機器并發出 git status 命令時,我得到了:
deleted
deleted: WindowsOnly/filea.bat
這是可以理解的,因為Git認為這個檔案被洗掉了,因為這個檔案夾在Linux機器上不存在。
然而,如果我在Proj1中處理普通檔案并從Linux機器上提交/推送,會發生什么?當我下次打開 Windows 機器時,子檔案夾 WindowsOnly/ 和 filea.bat 是否會從 Windows 機器中被洗掉,因為最近從 Linux 機器推送的檔案不包括這些檔案?
ETA: Windows 機器和 Linux 機器是如何共享相同的 .git/ 和 Proj1/ 檔案夾的,因為在每臺機器上,我都運行了 GoogleDrive/Insync 來自動同步這些檔案夾。在Linux機器上,我特別指示GoogleDrive/Insync不要下載和同步WindowsOnly/;在Windows機器上,我特別指示GoogleDrive/Insync不要下載和同步LinuxOnly/。
uj5u.com熱心網友回復:
我不會說不需要。你需要這些檔案來支持這兩個平臺上的專案。這并不像linux(內核專案)有不同的分支/版本來支持他們所支持的架構數量。它是一個單一的專案,所有的架構都在一個板塊中。
以防萬一,為了實作這一目標,我將做的是在Proj1中建立一個公共分支(例如,main),然后在windows分支和linux分支中都創建一個main。在windows分支中,你可以砍掉WindowsOnly的東西(這是該目錄所在的唯一分支),然后在linux分支中,你持有LinuxOnly。
你甚至可以從windows分支創建linux分支(或者相反)(確保洗掉其他架構的檔案),這樣git就能看到檔案之間的關系(如果有的話)。當你想從一個架構中挑選改動時,這可能會緩解一些問題,但如果你想嘗試這個技巧,你就會進入更深的領域(這是可行的....,但你需要有更高的git-zen水平來理解為什么當試圖在兩個架構分支之間移動東西時,git會發出這樣或那樣的抱怨)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/308186.html
標籤:
