場(chǎng)景描述
在使用git的時(shí)候,項(xiàng)目開(kāi)始我們?cè)O(shè)置了一些需要忽略的文件和文件夾,比如一些工程文件和項(xiàng)目依賴(lài)庫(kù),以免多個(gè)開(kāi)發(fā)者本地環(huán)境不一樣和工程文件過(guò)大的問(wèn)題。但后期發(fā)現(xiàn)那些已經(jīng)被我們忽略掉的文件需要重新添加或者忽略的文件夾里面有某個(gè)文件(夾)是需要大家一致的流码,需要設(shè)置一下排除,下面我們針對(duì)這兩種場(chǎng)景講一下解決辦法
設(shè)置忽略排除
設(shè)置忽略我們通常是在.gitignore
文件中設(shè)置不傅,比如在laravel
框架中我們?cè)O(shè)置忽略整個(gè)vendor文件夾旅掂,則在.gitignore
中添加如下路徑
/vendor/*
路徑中的星號(hào)表示所有,如果需要這是后續(xù)的排除访娶,這里的星號(hào)很重要
接下來(lái)我們?cè)O(shè)置忽略的文件夾中有一個(gè)文件夾里面的內(nèi)容不需要忽略
!/vendor/laravel/framework/src/Illuminate/Auth/
!表示排除的意思商虐,當(dāng)然如果忽略某個(gè)文件就直接指定就行了,比如
!/vendor/laravel/framework/src/Illuminate/Auth/TokenGuard.php
好崖疤,設(shè)置忽略和設(shè)置忽略排除秘车,這里就基本行了
重新添加已經(jīng)被忽略過(guò)的文件(夾)
重新添加已經(jīng)被忽略過(guò)的文件時(shí),我們僅僅使用git add
是不行的劫哼,因?yàn)間it倉(cāng)庫(kù)中根本沒(méi)有那個(gè)文件叮趴,這時(shí)候我們需要加上-f參數(shù)來(lái)強(qiáng)制添加到倉(cāng)庫(kù)中,然后在提交权烧。比如上面設(shè)置了忽略排除的文件TokenGuard.php我們需要重新加入
git add -f /vendor/laravel/framework/src/Illuminate/Auth/TokenGuard.php
然后在commit和push就行了
忽略已經(jīng)提交過(guò)的文件
這里說(shuō)點(diǎn)題外話(huà)眯亦,有的時(shí)候我們需要忽略掉以前提交過(guò)的文件,因?yàn)間it已經(jīng)索引了該文件所以我們先要?jiǎng)h除掉該文件的緩存般码,如文件User.php已經(jīng)提交過(guò)了妻率,現(xiàn)在我們想忽略,這是我們先在.gitignore
中設(shè)置該文件為忽略板祝,然后我們執(zhí)行如下命令刪除緩存
git rm --cached User.php
若是文件夾
git rm -r --cached folder/
然后我們?cè)赾ommit和push就好了
忽略目錄中文件宫静,保留目錄結(jié)構(gòu)
項(xiàng)目有的時(shí)候?yàn)榱舜a目錄的完整性,需要保留目錄本身,目錄里面的文件都忽略孤里。比如涉及用戶(hù)上傳相關(guān)的文件需要忽略伏伯,而上傳目錄有的時(shí)候因?yàn)闄?quán)限的問(wèn)題無(wú)法自動(dòng)創(chuàng)建,所以需要保留目錄本身捌袜。
我們只需要在需要保留的目錄中添加一個(gè).gitignore
文件说搅,內(nèi)容如下
# ignore all except .gitignore file
*
!.gitignore
當(dāng)然第一行是一個(gè)注釋?zhuān)梢匀サ簟H绻惹澳夸浭潜缓雎缘淖粮颍瑒t需要用git add -f
來(lái)強(qiáng)制添加在提交
還有一種情況是目錄里面的文件不是忽略的蜓堕,只是由于git無(wú)法提交空目錄抛虏,所以可以在空目錄中添加一個(gè)文件占位符博其,我們一般叫做.gitkeep
文件,里面內(nèi)容是空的迂猴,這樣目錄就可以提交了
轉(zhuǎn)載自:https://blog.csdn.net/cyxlzzs/article/details/61422214