git使用隨筆:如何忽略已提交到倉(cāng)庫(kù)的文件或者文件夾

一、前言

我們以Android項(xiàng)目為例子,在新建項(xiàng)目的時(shí)候我們提交項(xiàng)目到倉(cāng)庫(kù)之前,會(huì)有一個(gè).gitignore文件用于過(guò)濾文件或者文件夾,本人強(qiáng)烈建議在第一次新建的時(shí)候把該考慮到的都考慮進(jìn)去,以免后期團(tuán)隊(duì)協(xié)作開(kāi)發(fā)的時(shí)候引起不必要的麻煩,畢竟,時(shí)間就是金錢(qián),哪怕是幾分鐘的事兒。

不過(guò),很多朋友可能是中途接手項(xiàng)目,項(xiàng)目中的忽略文件不合理,此時(shí)此刻,我們第一會(huì)想到去修改.gitignore文件去忽略提交倉(cāng)庫(kù)的文件,但是發(fā)現(xiàn)修改完成后,目標(biāo)文件還是能夠提交的。

所以,我們應(yīng)該怎樣做呢?

二、解決辦法

1.首先,我們要清楚,為什么我們?cè)谔峤粋}(cāng)庫(kù)之后修改了.gitignore去忽略目標(biāo)文件不起作用?

原因:.gitignore只能忽略掉那些原來(lái)沒(méi)有被追蹤(track)的文件,所以如果有一些文件提交到了git倉(cāng)庫(kù)當(dāng)中,接受了git追蹤,那么直接修改.gitignore是無(wú)效的。所以建議在第一次提交項(xiàng)目時(shí)候,把該考慮到的考慮全。

2.忽略已提交的文件也有很多種不同情況,下面我說(shuō)說(shuō)常見(jiàn)的幾種:
  • 例如說(shuō),有些文件已經(jīng)被提交,但是后期做項(xiàng)目的過(guò)程中,我們想要忽略這些文件的跟蹤。這些文件在本地磁盤(pán)中還想保留著(簡(jiǎn)單說(shuō)就是倉(cāng)庫(kù)上不會(huì)存在被忽略的文件,但是本地項(xiàng)目存在這些文件)
    應(yīng)用場(chǎng)景如下:

    過(guò)濾gradle-wrapper.properties本地配置

    這里我們是在本地配置gradle的distributionUrl,由于每臺(tái)電腦的gradle路徑都不一樣(如果電腦名不一樣),所以需要忽略掉此文件,并且本地是要保留的。這里 我直接把wrapper整個(gè)文件夾直接過(guò)濾掉。
    操作如下:
    git rm --cached -r gradle/wrapper
    然后修改項(xiàng)目.gitignore文件添加過(guò)濾規(guī)則:gradle/wrapper
    然后commit
    最后push

  • 還有種情況,在我們已經(jīng)提交過(guò)的一些文件中,在后期由于種種原因發(fā)現(xiàn)不需要某個(gè)文件,我們想這些文件被徹底刪除時(shí)候。
    操作如下:
    git rm somefiles 從本地移除這個(gè)文件,并且刪除本地緩存
    更新gitignore文件,忽略目標(biāo)文件(somefiles)
    然后commit
    最后push

三、總結(jié)

1.下面我說(shuō)說(shuō)rm命令系列的作用和用法與區(qū)別:
  • rm
    單純的刪除本地文件,與git沒(méi)有任何關(guān)系,所以git上是不會(huì)有該刪除記錄的
  • git rm
    刪除git追蹤文件,并刪除本地文件,git上會(huì)保存此次刪除記錄
  • git rm --cached -r
    單單刪除git追蹤文件,不刪除本地文件
2.為什么增加了.gitignore里的規(guī)則卻沒(méi)有效果?
  • 我在文章開(kāi)始也簡(jiǎn)單提到了,那是因?yàn)?gitignore文件只能作用于未跟蹤的文件(Untracked Files),也就是從來(lái)沒(méi)有被Git記錄過(guò)的文件。所以要先從Git索引中刪除對(duì)改文件的追蹤,才能使.gitignore文件生效。而刪除文件的追蹤是git rm,這種做法會(huì)將本地的物理文件一并刪除。如果想要?jiǎng)h除追蹤狀態(tài)而非物理文件,可以使用git rm --cached。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文為 Git教程的學(xué)習(xí)筆記,教程源自廖雪峰的博客。這是一個(gè)由淺入深,學(xué)完后能立刻上手的Git教程。另,附上另一本...
    七弦桐語(yǔ)閱讀 6,465評(píng)論 5 47
  • 關(guān)于我想要做兼職掙錢(qián)的起源,大概就是問(wèn)家里要錢(qián)搞畢業(yè)旅行被拒。傲氣的我,發(fā)誓不再問(wèn)家里要錢(qián),身上僅剩400塊...
    打油詩(shī)人張正義閱讀 4,119評(píng)論 3 5
  • 需要導(dǎo)入的頭文件: #define IOS_CELLULAR @"pdp_ip0" #define IOS_WI...
  • 初到深圳,是在五月之初,此時(shí)的深圳的早已被染綠,蔥蔥蓉蓉,卻不是我喜歡的顏色,作為男人,我不喜歡綠色。 來(lái)...
    你家凱爺閱讀 382評(píng)論 1 1

友情鏈接更多精彩內(nèi)容