簡體   English   中英

如何停止跟蹤git中目錄的內容?

[英]How to stop tracking the content of a directory in git?

我有一個名為img的目錄。 我希望該目錄在存儲庫上退出,但始終應為空。 我的意思是只應該跟蹤該目錄的內容。

這是我的項目的簡化:

myproject/
    .git/
    application/
    public/
        img/
            img1.jpg
            img2.jpg
    vendor/
    composer.json
    composer.lock

我想在存儲庫中使它像這樣:

myproject/
    .git/
    application/
    public/
        img/
    vendor/
    composer.json
    composer.lock

我怎樣才能做到這一點?


根據一些研究,我必須使用.gitignore文件。 但是如何? 我是否應該在項目的根目錄下創建一個.gitignore文件並將其寫入其中?

// .gitignore file
public/img/*

還是應該在img目錄中創建.gitignore 如果是,我應該在里面寫些什么?


好的,現在我遇到了一個新問題。 讓我們解釋一下我想確切地做什么。 這是場景:

我在本地開發我的網站,並將其推送到github存儲庫中。 然后我進入服務器並執行git pull 還有一個img目錄,其中包含所有用戶的頭像。 我要做的就是將真實用戶的頭像保留在img目錄中。 如果我將整個img目錄放在.gitignore ,則不會創建頭像(因為缺少img目錄) 如果我排除img目錄的內容,那么當我執行新的git pull時,所有當前用戶的頭像都將消失。 知道如何處理這種情況嗎?

Git不跟蹤目錄,僅跟蹤文件。

為了在倉​​庫中添加一個空目錄,您必須在其中放置一個文件,並在項目的.gitignore編寫正確的規則。

但是,由於Git存儲庫允許在每個目錄中放置.gitignore文件,因此您可以在要排除的目錄中放置一個.gitignore文件,並將以下行放入其中:

# Ignore everything in this directory
*
# ... but do not ignore this file
!.gitignore

將新文件添加到存儲庫並提交。

就這樣。


如果要將所有忽略規則放在一個位置(在項目根目錄的.gitignore文件中),則可以將一個空文件放在該目錄中以忽略,並將上述規則以路徑開頭作為前綴.gitignore文件。

通常,這樣一個空文件名為.gitkeep (名稱無關緊要,該文件用於表達其目的)。 在這種情況下,將添加到項目的.gitignore文件中:

/public/img/*
!/public/img/.gitkeep

如果您已經將文件public/img的文件添加到了存儲庫中(並提交了文件),則必須先將其刪除,以便不再對其進行跟蹤。

git rm --cached public/img/*

並將此更改與.gitignore更改一起提交。 --cached參數告訴git rm不要從工作樹中刪除文件,而只是停止跟蹤它們。

您應該通過發出ls -la在工作目錄中看到一個.gitignore文件。 如果沒有創建一個.gitignore文件(與.git文件處於同一級別)。

在該文件中,您可以將路徑添加到img文件夾,如下所示: public/img/*

Git不跟蹤目錄,僅跟蹤文件。 您可以做的是跟蹤該目錄中的任何文件,例如.gitignore ,甚至是名為.placeholder文件。 您還需要取消版本化,但不刪除實際文件,可以使用git rm --cached file

# Untrack, but keep the existing files in img
git rm --cached myProject/public/img/*

# Create the placeholder file to keep the directory tracked
# You do not need this if any other versioned file exists
# in this directory or potentially any subfolders of this
# directory.
echo 'placeholder' > myProject/public/img/.placeholder

# Track the placeholder file in the img directory
git add myProject/public/img/.placeholder

# Commit your work
git commit -m 'YOUR COMMIT MESSAGE'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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