Masalah saya adalah saya memiliki banyak situs WordPress di repo git saya, di mana saya hanya ingin memasukkan konten themes
folder saya secara selektif , sambil mengabaikan sisa file redundan yang ditemukan di WordPress.
Saya telah menggunakan file .gitignore untuk mengabaikan jenis file sebelumnya, tetapi bisakah itu digunakan sebaliknya- yaitu mengabaikan semuanya TETAPI jalur folder tertentu?
root (git repo)
- / wordpress
- - / (Situs WordPress 1) / wp-content / themes
- - / (Situs WordPress 2) / wp-content / themes
- - / (WordPress Site 3) / wp-content / themes
Terima kasih-
MEMPERBARUI:
Berdasarkan jawaban yang saya lakukan berikut ini, tetapi tidak berhasil. Ada ide?
# Ignore everything:
*
# Except for wordpress themes:
!*/wp-content/themes/*
Saya juga mencoba variasi berikut:
!*/wp-content/themes*
!*wp-content/themes/*
!wp-content/themes/*
!/wordpress/*/wp-content/themes*
!wordpress/*/wp-content/themes*
Tak satu pun dari ini membaca themes
folder saya .
**
pengganti hanya berfungsi jika Anda tidak memiliki garis miring dalam pola Anda, lihat sparethought.wordpress.com/2011/07/19/…!/wordpress/*/wp-content/themes/**/*
Saya mencoba cara di atas dan tidak berhasil dengan baik. Pendekatan yang lebih baik adalah sebagai berikut dari sini: https://gist.github.com/444295
sumber
ubah baris pertama
ubah menjadi
sumber
Coba jawaban ini:
sumber
!*/wp-content/themes/
dan!*/wp-content/themes/*
. Sudahkah Anda mencoba variasi itu? Selain itu, sebagai alternatif, Anda bisa menggunakan!*/wp-content/themes/
dan di setiap direktori tema memiliki file .gitignore sendiri dengan!*
!*/wp-content/themes*
Jika Anda memberi awalan pola dengan tanda seru (
!
) itu meniadakan pola sebelumnya yang mengecualikannya. Jadi, mungkin, Anda dapat mengabaikan semuanya, lalu hanya mengizinkan apa yang Anda inginkan dengan menggunakan pola ini.sumber
!wordpress/[write out directories]/wp-content/themes/
. Perhatikan garis miring penutup dan tidak ada tanda bintang penutup. Perhatikan juga bahwa*
hanya akan cocok dengan satu level, bukan beberapa direktori. Ini adalah halaman manualnya: kernel.org/pub/software/scm/git/docs/gitignore.htmlKatakanlah Anda memiliki struktur direktori seperti ini:
Jika Anda hanya ingin mengizinkan situs / semua / file / privat / kertas koran dan situs / default / file / privat / kertas koran , pertama-tama Anda dapat mencoba ini:
Ini salah! Hal yang rumit dengan gitignore adalah Anda harus terlebih dahulu mengizinkan direktori induk ("private") untuk dimasukkan , sebelum Anda dapat mengizinkan direktori turunannya ("kertas koran") untuk disertakan dalam komit.
http://www.christianengvall.se/gitignore-exclude-folder-but-include-a-subfolder/
sumber
Saya perlu mengabaikan semuanya kecuali satu folder dengan subdirektori.
Bagi saya, ini berhasil
sumber
Saya selalu terjebak di suatu tempat dalam hal ini bahkan setelah kembali ke pertanyaan ini berkali-kali. Saya telah menemukan proses mendetail untuk melakukannya selangkah demi selangkah:
Pertama gunakan saja
git add
untuk menambahkan konten yang sebenarnya.Ini akan menampilkan file relevan yang ditambahkan ke indeks sementara yang lainnya masih belum terlacak. Ini membantu menyusun
.gitignore
langkah demi langkah.Tambahkan
DUMMY.TXT
file sementara di direktori Anda:Tujuan kami sekarang adalah untuk membuat aturan sedemikian rupa sehingga ini
DUMMY.TXT
menjadi satu-satunya yang masih muncul sebagai Tidak dilacak ketika kami selesai.Mulai tambahkan aturan:
.gitignore
Yang pertama adalah mengabaikan segalanya. Semua file yang tidak dilacak akan hilang, hanya file yang diindeks yang akan ditampilkan:
Tambahkan dir pertama di jalur
wp-content
Sekarang file yang tidak dilacak akan muncul lagi, tetapi hanya ada
wp-content
isinyaAbaikan semua yang ada di dir pertama
/wp-content/*
dan hapus abaikan!/wp-content/themes
Sekarang file yang tidak dilacak akan lebih mempersempit menjadi hanya
wp-content/themes
Ulangi proses tersebut sampai file dummy itu adalah satu-satunya yang masih ditampilkan sebagai Tidak dilacak:
sumber
Jawaban Yarin berhasil untuk saya, ini versi saya (saya tidak memerlukan
/wordpress
sub-direktori):sumber
Setelah membutuhkan ini beberapa kali, saya akhirnya menemukan solusi [1]:
Penjelasan baris demi baris:
.gitignore
dirinya sendiri (dan berpotensi.gitattributes
).[1] Batasan (yang saya ketahui):
/*
akan merusak seluruh skema).wordpress
dalam hal ini) tidak boleh ada.
dalam namanya (misalnyawordpress.1
tidak akan berfungsi). Jika memang memiliki.
, maka hapus baris 2 dan temukan cara lain untuk mengecualikan semua file di root.git version 2.17.1.windows.2
sumber
Bagi mereka yang mencari pembersih solusi yang , silakan coba yang berikut ini.
Seperti yang disebutkan dalam komentar ini jawaban , Anda harus menggunakan metode ini secara rekursif.
Dalam contoh ini, Anda memiliki pengaturan situs web di
./
mana.git
folder dan.gitignore
file Anda berada dan pengaturan instalasi WordPress./wordpress
. Untuk mengabaikan semua yang ada di bawah./wordpress
direktori dengan benar selain dari direktori tema itu sendiri (wordpress/wp-content/themes/my-theme
), Anda harus mengabaikan dan mengizinkan setiap direktori secara rekursif hingga direktori yang ingin Anda izinkan:Alasan mengabaikan dengan karakter pengganti dan mengizinkan (atau, mengabaikan 'selain') direktori itu sendiri memungkinkan Git untuk melihat ke dalam direktori terlebih dahulu sebelum mengabaikan semua yang ada di dalamnya. Kami kemudian memberi tahu Git untuk mengabaikan semua yang 'selain' direktori yang telah kami tentukan. Berikut sintaks yang sama tetapi dalam urutan bagaimana Git melihatnya:
Semoga ini membantu seseorang lebih memahami perlunya metode rekursif.
sumber
terlambat ke pesta tetapi inilah yang saya gunakan untuk kedalaman yang tidak diketahui (solusi yang diterima membutuhkan kedalaman yang diketahui)
dengan cara ini semua yang ada di dalam wp-content tidak diabaikan.
sumber
Solusi mudah lainnya:
Anda ingin mengabaikan semua file Wordpress, tetapi bukan tema Anda (misalnya).
.gitignore , kontennya adalah:
Dalam contoh ini, Anda dapat menghapus wordpress jika .gitignore ada di direktori root wordpress
Anda dapat melakukan hal yang sama pada setiap folder dan konten yang ingin Anda "sangat" dijauhkan dari folder / file gitignored
Kesimpulan:
TAPI
sumber
Anda bisa mencoba ini:
Dimana :
sumber
Inilah solusi saya, yang mengasumsikan pembayaran ke
wp-content
dan pengujian:
jadi dengan benar mengabaikan semua yang tidak saya inginkan dan tidak ada yang ingin saya simpan.
Merilis Kode
Gitlab dikonfigurasi dengan cermin repositori untuk cabang yang dilindungi, menurut https://docs.gitlab.com/ee/workflow/repository_mirroring.html
Ketika kode didorong ke cabang yang dilindungi, itu akan dicerminkan ke server pementasan dan produksi dalam
/opt/checkout/repo.git/
repo telanjang.post-receive
Hook berikut (in/opt/checkout/repo.git/hooks/post-receive
) kemudian akan melakukan checkout kode ke direktori kerja.Untuk informasi lebih lanjut, lihat https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps
sumber
Inilah cara saya melakukannya:
Inilah yang berhasil bagi saya. Memungkinkan Anda mengabaikan semuanya kecuali file atau folder tertentu
macOS sierra
sumber
Saya berada di perahu yang sama mencoba mengelola banyak situs Wordpress di bawah satu repo. Struktur direktori saya terlihat seperti ini:
Saya hanya ingin melacak item di dalam
app/public
folder untuk setiap situs. Saya mencoba contoh di halaman ini serta beberapa saran di sini dan akhirnya mencoba ini:yang berhasil tetapi saya harus mengabaikan jalur yang sama untuk setiap situs yang saya coba hindari.
Kemudian saya hanya mengganti nama situs dengan
*
dan itu berhasil bagi saya. Jadi inilah yang akhirnya saya gunakan:Ini secara efektif mengabaikan semua yang ada di folder situs sambil menangkap semua yang ada di
app/public
folder untuk situs apa pun yang saya buat di root.Perhatikan bahwa itu tidak akan mengabaikan file di root, hanya direktori :)
Semoga ini membantu.
sumber
Ini adalah satu-satunya file yang diabaikan dalam banyak kasus, karena Anda memiliki wp-config-sample.php yang dapat Anda bagikan dengan orang lain.
sumber