Tambahkan folder khusus yang baru dibuat ke .gitignore di Git

90

Saya memiliki direktori kerja yang bersih dan membawa tiruan dari repo Git tadi malam. Tetapi sekarang server lokal saya membuat dan berisi folder statistik yang ingin saya abaikan.

Saya tidak bisa membuat Git mengabaikan folder ini ketika saya menjalankan status git.

On branch master
Your branch is ahead of 'origin/master' by 1 commit.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file: app_public/views/pages/privacy.php
    new file: app_public/views/pages/terms.php
    new file: public_html/stats/ctry_usage_200908.png
    new file: public_html/stats/daily_usage_200908.png
    new file: public_html/stats/dns_cache.db
    new file: public_html/stats/hourly_usage_200908.png
    new file: public_html/stats/index.html
    new file: public_html/stats/usage.png
    new file: public_html/stats/usage_200908.html
    new file: public_html/stats/webalizer.current
    new file: public_html/stats/webalizer.hist

Changed but not updated:
    modified: .gitignore

Saya menambahkan di .gitignore saya beberapa baris berbeda tetapi masih mencoba menambahkannya:

public_html/stats
public_html/stats/**
public_html/stats/**/*
public_html/stats/*
Lee
sumber

Jawaban:

99

Coba /public_html/stats/*?

Tetapi karena file di git statusreport as menjadi commited itu berarti Anda sudah menambahkannya secara manual. Dalam hal ini, tentu saja sudah terlambat untuk diabaikan. Anda dapat git rm --cachemelakukannya (IIRC).

Michael Krelin - peretas
sumber
16
Tunggu! Anda memiliki "file untuk dikomit" - itu berarti Anda sudah git add-ed mereka.
Michael Krelin - hacker
94

Untuk ini ada dua kasus

Kasus 1: File sudah ditambahkan ke git repo.

Kasus 2: File baru dibuat dan statusnya masih ditampilkan sebagai file yang tidak terlacak saat menggunakan

git status

Jika Anda memiliki kasus 1:

LANGKAH 1: Lalu jalankan

git rm --cached filename 

untuk menghapusnya dari cache git repo

jika itu adalah direktori, gunakan

git rm -r --cached  directory_name

LANGKAH 2: Jika Kasus 1 selesai maka buat file baru dengan nama .gitignoredi repo git Anda

LANGKAH 3: Gunakan perintah berikut untuk memberi tahu git untuk mengabaikan / menganggap file tidak berubah

git update-index --assume-unchanged path/to/file.txt

LANGKAH 4: Sekarang, periksa status menggunakan status git terbuka .gitignoredi editor Anda nano, vim, geany dll ... siapa saja, tambahkan jalur file / folder untuk diabaikan. Jika itu adalah folder maka pengguna folder_name/*mengabaikan semua file.

Jika masih belum paham baca artikel git ignore file link.

Kshitiz
sumber
3
Saya mendapatkan ketika fatal: Unable to mark file .idea/jsLibraryMappings.xmlsaya melakukannyaupdate-index
OlehZiniak
@OlehZiniak sudahkah Anda menemukan apa yang harus dilakukan ketika seseorang mendapat fatal: Unable to mark filekesalahan. Tolong bantu.
chanchal pardeshi
izin dan kepemilikan file yang tidak dapat Anda tandai. di langkah mana itu menunjukkan kesalahan?
Kshitiz
16

Dari "git help ignore" kita belajar:

Jika pola diakhiri dengan garis miring, itu dihapus untuk tujuan deskripsi berikut, tetapi hanya akan menemukan kecocokan dengan direktori. Dengan kata lain, foo / akan cocok dengan direktori foo dan path di bawahnya, tetapi tidak akan cocok dengan file biasa atau link simbolik foo (ini konsisten dengan cara kerja pathspec secara umum di git).

Oleh karena itu yang Anda butuhkan adalah

public_html / stats /

kajaco
sumber
1
Itu hanya berarti "public_html / stats /" hanya akan cocok dengan direktori, tapi bukan file, tapi "public_html / stats" akan cocok dengan direktori dan file dengan nama itu, jadi bukan itu masalahnya. Masih ide yang bagus.
jmanning2k
1
Halaman manual mengatakan foo / akan cocok dengan direktori foo dan path di bawahnya. OP ingin mengabaikan folder dan isinya. Selain masalah lain dengan git add, beginilah cara melakukannya.
kajaco
6

Itu /public_html/stats/*.

$ ~/myrepo> ls public_html/stats/
bar baz foo
$ ~/myrepo> cat .gitignore 
public_html/stats/*
$ ~/myrepo> git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   .gitignore
nothing added to commit but untracked files present (use "git add" to track)
$ ~/myrepo>
Agustus Lilleaas
sumber
2

Saya sangat malas. Saya baru saja melakukan pencarian berharap menemukan jalan pintas untuk masalah ini tetapi tidak mendapatkan jawaban jadi saya mengetuknya.

~ / bin / IGNORE_ALL

#!/bin/bash
# Usage: IGNORE_ALL <commit message>                                                                                                                             
git status --porcelain | grep '^??' | cut -f2 -d' ' >> .gitignore              
git commit -m "$*" .gitignore 

EG: IGNORE_ALL menambahkan pengabaian stat

Ini hanya akan menambahkan semua file yang diabaikan ke .gitignore Anda dan komit. perhatikan Anda mungkin ingin menambahkan penjelasan ke file sesudahnya.

michael
sumber