ใช้. gignignore เพื่อละเว้นทุกสิ่งยกเว้นไดเรกทอรีเฉพาะ


140

ปัญหาของฉันคือฉันมีเว็บไซต์ WordPress มากมายใน repo คอมไพล์ของฉันซึ่งฉันต้องการเลือกเฉพาะเนื้อหาของฉัน themesโฟลเดอร์เท่านั้นโดยไม่สนใจไฟล์ที่เหลือที่เหลือใน WordPress

ฉันเคยใช้ไฟล์. gignignore เพื่อเพิกเฉยต่อชนิดไฟล์ก่อนหน้านี้ แต่สามารถใช้วิธีอื่น ๆ ได้ไหมนั่นคือการข้ามทุกสิ่ง

root (git repo)
- / wordpress
- - / (WordPress Site 1) / wp-content / themes
- - / (WordPress Site 2) / wp-content / ธีม
- - / (WordPress Site 3) / wp-content / ธีม

Thanks-

UPDATE:

ตามคำตอบที่ฉันทำต่อไปนี้ แต่มันไม่ทำงาน ความคิดใด ๆ

# Ignore everything:
*
# Except for wordpress themes:
!*/wp-content/themes/*

ฉันได้ลองรูปแบบต่อไปนี้แล้ว:

!*/wp-content/themes*
!*wp-content/themes/*
!wp-content/themes/*
!/wordpress/*/wp-content/themes*
!wordpress/*/wp-content/themes*

สิ่งเหล่านี้ไม่ได้อ่านthemesโฟลเดอร์ของฉัน

คำตอบ:


133

นี่คือวิธีที่ฉันทำ - คุณต้องเดินไปตามเส้นทางคุณไม่สามารถใช้สัญลักษณ์แทนได้มากกว่าหนึ่งระดับในทุกทิศทาง:

# Ignore everything:
*

# Except for the themes directories:

!wordpress/
!wordpress/*/
!wordpress/*/wp-content/
!wordpress/*/wp-content/themes/
!wordpress/*/wp-content/themes/*
!wordpress/*/wp-content/themes/*/*
!wordpress/*/wp-content/themes/*/*/*
!wordpress/*/wp-content/themes/*/*/*/*
!wordpress/*/wp-content/themes/*/*/*/*/*

สังเกตว่าคุณต้องอนุญาตเนื้อหาในแต่ละระดับที่คุณต้องการอย่างชัดเจนอย่างไร ดังนั้นถ้าฉันมีไดเรกทอรีย่อย 5 ลึกภายใต้ชุดรูปแบบฉันยังต้องสะกดออก

นี่เป็นเพียงวิธีการทำงานสำหรับฉัน หากมีคนใส่ใจที่จะให้คำอธิบายที่มีข้อมูลมากขึ้นโดยวิธีการทั้งหมด

นอกจากนี้คำตอบเหล่านี้ยังมีประโยชน์:
วิธีทำรูปแบบการทำงานใน gitignore
วิธีการทำ gitignore ยกเว้นกฎ - ทำงานจริง


หมายเหตุ:ฉันพยายามใช้ double-wildcard 'globs' แต่ตามนี้การทำงานขึ้นอยู่กับระบบและมันไม่ทำงานบน mac ของฉัน:

ไม่ทำงาน:

!**/wp-content/themes/
!**/wp-content/themes/**

4
ก่อนที่จะคอมไพล์ 1.8.4 **ไวด์การ์ดใช้งานได้เฉพาะในกรณีที่คุณไม่มีสแลชในรูปแบบของคุณโปรดดูsparethought.wordpress.com/2011/07/19/…

สิ่งนี้น่าจะใช้ได้:!/wordpress/*/wp-content/themes/**/*
นั่น 0n3guy

1
ไวยากรณ์นี้ทำงานบน windows ได้หรือไม่? ดูเหมือนว่าจะไม่ได้ผลสำหรับฉัน ...
ScottF

มันทำงานได้อย่างมหัศจรรย์ใน Windows 10 ใช้สำหรับโครงการที่กำหนดเองทุกประเภทจาก Visual Studio Code
klewis

ฉันใช้การผสมผสานของคำตอบนี้และคำตอบที่ได้รับจาก @ worked 凡ซึ่งเหมาะกับฉัน
MikeyE

95

ฉันลองข้างต้นแล้วพวกเขาก็ทำงานได้ไม่ดี แนวทางที่ดีกว่ามีดังนี้จากที่นี่: https://gist.github.com/444295

# This is a template .gitignore file for git-managed WordPress projects.
#
# Fact: you don't want WordPress core files, or your server-specific
# configuration files etc., in your project's repository. You just don't.
#
# Solution: stick this file up your repository root (which it assumes is
# also the WordPress root directory) and add exceptions for any plugins,
# themes, and other directories that should be under version control.
#
# See the comments below for more info on how to add exceptions for your
# content. Or see git's documentation for more info on .gitignore files:
# http://kernel.org/pub/software/scm/git/docs/gitignore.html

# Ignore everything in the root except the "wp-content" directory.
/*
!.gitignore
!wp-content/

# Ignore everything in the "wp-content" directory, except the "plugins"
# and "themes" directories.
wp-content/*
!wp-content/plugins/
!wp-content/themes/

# Ignore everything in the "plugins" directory, except the plugins you
# specify (see the commented-out examples for hints on how to do this.)
wp-content/plugins/*
# !wp-content/plugins/my-single-file-plugin.php
# !wp-content/plugins/my-directory-plugin/

# Ignore everything in the "themes" directory, except the themes you
# specify (see the commented-out example for a hint on how to do this.)
wp-content/themes/*
# !wp-content/themes/my-theme/

1
@ dwenaus- ขอบคุณที่แบ่งปันสิ่งนี้ - ดูมีประโยชน์สำหรับ repos ที่รูทใน wordpress dir ที่เฉพาะเจาะจง แต่จะไม่ทำงานกับ repo ไซต์ wordpress หลายอันที่อยู่ข้างใต้ซึ่งเป็นสิ่งที่ฉันจะไป ..
Yarin

โครงสร้าง / รุ่นนี้มีประโยชน์มาก ฉันต้องการ repo ครั้งเดียวสำหรับการติดตั้ง Magento / WP ร่วมกันและด้วย. gitignore น้อยกว่า 30 บรรทัดโดยใช้เทคนิคนี้ฉันสามารถทำให้มันแคบลงเหลือเพียงชุดรูปแบบ Magento / skin และไฟล์ชุดรูปแบบ WP ขอบคุณ!
random_user_name

อย่าเพิ่งใช้การตั้งค่านี้ด้วยการปรับใช้อัตโนมัติเพราะผู้ใช้มือใหม่สามารถทำไฟล์นอกพื้นที่เว้า (เช่นหากลบไฟล์ทั้งหมดใน repo โดยไม่ตั้งใจและนั่นเป็นการติดตั้งอัตโนมัติมันจะยุ่งเหยิง) นอกเหนือจากนั้นมันใช้งานได้ดี
dwenaus

คุณเป็นผู้ชายคนนั้น! โดยเฉพาะถ้าเวอร์ชันของคุณคือ> = 2.1.4 Ref: git-scm.com/docs/gitignore/2.1.4
Haktan Suren

28

แก้ไขบรรทัดแรก

*

เปลี่ยนเป็น

/*

2
งานนี้สำหรับฉัน ไฟล์. gitignore ของฉันเป็นแบบนี้ / *!
.gitignore

12

ลองคำตอบเหล่านี้:

ทำให้. gitignore ละเว้นทุกสิ่งยกเว้นไฟล์บางไฟล์

# Ignore everything
*

# But not these files...
!.gitignore
!script.pl
!template.latex
# etc...

# ...even if they are in subdirectories
!*/

ฉันจะบอกให้ Git เพิกเฉยทุกอย่างได้อย่างไรยกเว้นไดเรกทอรีย่อย

สิ่งนี้จะไม่สนใจไฟล์รูทและไดเรกทอรีรูทจากนั้นให้ยกเลิกการลบไดเร็กทอรีรูทถัง:

/*
/*/
!/bin/

วิธีนี้คุณจะได้รับไดเรกทอรี bin ทั้งหมดรวมถึงไดเรกทอรีย่อยและไฟล์ของพวกเขา


@ ระคายเคือง - ขอบคุณไม่เห็นสิ่งเหล่านี้ - แต่ฉันมีปัญหาในการปรับใช้กับสถานการณ์ของฉัน ดูการแก้ไขของฉันด้านบน ...
Yarin

1
การเชื่อมโยงสองที่ผมโพสต์บอกว่าคุณจะต้องทั้งสองและ!*/wp-content/themes/ !*/wp-content/themes/*คุณลองชุดรูปแบบนั้นแล้วหรือยัง? นอกจากนี้คุณสามารถใช้!*/wp-content/themes/และในแต่ละไดเร็กทอรีธีมมีไฟล์. gitignore ของตัวเองด้วย!*
ทำให้ระคายเคือง

1
@ ระคายเคือง - ไม่มีรูปแบบที่ไม่ทำงานอย่างใดอย่างหนึ่งและต่อไปฉันไม่เห็นว่าจะแตกต่างจาก!*/wp-content/themes*
Yarin

9

หากคุณนำหน้ารูปแบบที่มีเครื่องหมายอัศเจรีย์ ( !) จะนำหน้ารูปแบบใด ๆ ที่ไม่รวมอยู่ในนั้น ดังนั้นคุณอาจเพิกเฉยต่อทุกสิ่งจากนั้นอนุญาตเฉพาะสิ่งที่คุณต้องการโดยใช้รูปแบบนี้


@ dappawit- ขอบคุณ - แนวคิดเหมาะสมแล้วและฉันได้ทำงานกับไฟล์ แต่ไม่ใช่สำหรับโฟลเดอร์ธีมของฉัน - ดูการแก้ไขของฉันด้านบน ...
Yarin

ฉันไม่ใช่ผู้เชี่ยวชาญเกี่ยวกับรูปแบบ glob แต่การอ่านหน้า. gitignore ฉันเชื่อว่านี่อาจใช้งานได้: !wordpress/[write out directories]/wp-content/themes/ผมเชื่อว่านี้อาจทำงาน: สังเกตเห็นว่าเครื่องหมายทับปิดและไม่มีเครื่องหมายดอกจันปิด โปรดทราบด้วยว่า*จะจับคู่เพียงระดับเดียวเท่านั้นไม่ใช่หลายไดเรกทอรี นี่คือหน้าคน: kernel.org/pub/software/scm/git/docs/gitignore.html
dappawit

ช่วยให้ฉันรู้ตัวว่าฉันจะต้องคัดค้านหลังจากกฎอื่น ๆ ขอบคุณ
ขวาน

6

ฉันต้องการละเว้นทุกสิ่ง แต่ไม่ใช่โฟลเดอร์เดียวที่มีไดเรกทอรีย่อย

สำหรับฉันมันใช้งานได้

# Ignore everything
/*

# Not these directories
!folder/

# Not these files
!.gitignore
!.env
!file.txt

5

สมมติว่าคุณมีโครงสร้างไดเรกทอรีดังนี้:

– sites
– -all
– – – -files
– – – – – -private
– – – – – – – -newspilot
– -default
– – – -files
– – – – – -private
– – – – – – – -newspilot

เมื่อคุณต้องการ อนุญาตไซต์ / ทั้งหมด / ไฟล์ / ส่วนตัว / นักข่าว /และไซต์ / ค่าเริ่มต้น / ไฟล์ / ส่วนตัว / นักข่าว /คุณอาจลองทำสิ่งนี้ในตอนแรก:

sites/*/files/*
!sites/*/files/private/newspilot

นี่มันผิด!สิ่งที่ยุ่งยากกับ gitignore คือคุณต้องอนุญาตให้รวมไดเรกทอรีหลัก ("ส่วนตัว")ก่อนที่คุณจะสามารถอนุญาตให้ไดเรกทอรีลูก ("ไพร่พล") รวมอยู่ในคอมมิชชัน

sites/*/files/*
!sites/*/files/private
sites/*/files/private/*
!sites/*/files/private/newspilot

http://www.christianengvall.se/gitignore-exclude-folder-but-include-a-subfolder/


"คุณต้องอนุญาตให้รวมไดเรกทอรีหลักก่อนจึงจะอนุญาตให้ไดเรกทอรีย่อย" - ขอขอบคุณสำหรับการชี้เรื่องนี้! เป็นปัญหาของฉันอย่างแม่นยำ
Jet Blue

4

คำตอบของ Yarin เหมาะกับฉันนี่เป็นเวอร์ชั่นของฉัน (ฉันไม่ต้องการ/wordpressไดเรกทอรีย่อย):

*

!.gitignore
!/wp-content/
!/wp-content/themes/
!/wp-content/themes/*
!/wp-content/themes/*/*
!/wp-content/themes/*/*/*
!/wp-content/themes/*/*/*/*
!/wp-content/themes/*/*/*/*/*

# I don't want to track this one, so it's included here, after the negated patterns. 
wp-content/themes/index.php

4

ฉันมักจะติดอยู่ที่ไหนสักแห่งในเรื่องนี้แม้จะกลับมาที่คำถามนี้หลายครั้ง ฉันคิดขั้นตอนอย่างละเอียดในการทำอย่างเป็นขั้นตอน:

ก่อนอื่นเพียงใช้git addเพื่อเพิ่มเนื้อหาจริง

มันจะแสดงไฟล์ที่เกี่ยวข้องที่เพิ่มเข้าไปในดัชนีขณะที่คนอื่น ๆ ยังไม่ได้ติดตาม สิ่งนี้ช่วยในการปรับโครงสร้างอย่างเป็น.gitignoreขั้นเป็นตอน

$ git add wp-content/themes/my-theme/*
$ git status

    Changes to be committed:
        new file:   wp-content/themes/my-theme/index.php
        new file:   wp-content/themes/my-theme/style.css

    Untracked files:
        wp-admin/
        wp-content/plugins/
        wp-content/themes/twentyeleven/
        wp-content/themes/twentytwelve/
        ...
        wp-includes/
        ...

เพิ่มDUMMY.TXTไฟล์ชั่วคราวในไดเรกทอรีของคุณ:

$ git status

    Changes to be committed:
        new file:   wp-content/themes/my-theme/index.php
        new file:   wp-content/themes/my-theme/style.css

    Untracked files:
        wp-admin/
        wp-content/plugins/
        wp-content/themes/twentyeleven/
        wp-content/themes/twentytwelve/
        ...
        wp-content/themes/my-theme/DUMMY.TXT  <<<
        ...
        wp-includes/
        ...

เป้าหมายของเราในตอนนี้คือการสร้างกฎเพื่อDUMMY.TXTให้เป็นสิ่งเดียวที่ยังคงปรากฏว่าไม่ได้ติดตามเมื่อเราเสร็จแล้ว

เริ่มเพิ่มกฎ:

.gitignore

/*

สิ่งแรกคือเพียงเพิกเฉยต่อทุกสิ่ง ไฟล์ที่ไม่ได้ติดตามจะหายไปทั้งหมดควรแสดงเฉพาะไฟล์ที่มีการจัดทำดัชนี:

$ git status

    Changes to be committed:
        new file:   wp-content/themes/my-theme/index.php
        new file:   wp-content/themes/my-theme/style.css

เพิ่ม dir แรกในเส้นทาง wp-content

/*
!/wp-content

ตอนนี้ไฟล์ที่ไม่ได้ติดตามจะปรากฏขึ้นอีกครั้ง แต่มีเพียงwp-contentเนื้อหาของ

$ git status

    Changes to be committed:
        new file:   wp-content/themes/my-theme/index.php
        new file:   wp-content/themes/my-theme/style.css

    Untracked files:
        wp-content/plugins/
        wp-content/themes/twentyeleven/
        wp-content/themes/twentytwelve/
        ..

ละเว้นทุกสิ่งใน dir แรก/wp-content/*และยกเลิกการเพิกเฉย!/wp-content/themes

/*
!/wp-content

/wp-content/*
!/wp-content/themes

ตอนนี้ไฟล์ที่ไม่ได้ติดตามจะถูก จำกัด ให้แคบลงเท่านั้น wp-content/themes

$ git status

    Changes to be committed:
        new file:   wp-content/themes/my-theme/index.php
        new file:   wp-content/themes/my-theme/style.css

    Untracked files:
        wp-content/themes/twentyeleven/
        wp-content/themes/twentytwelve/
        ..

ทำขั้นตอนนี้ซ้ำจนกระทั่งไฟล์จำลองนั้นเป็นไฟล์เดียวที่ยังคงแสดงว่าไม่ได้ติดตาม:

/*
!/wp-content

/wp-content/*
!/wp-content/themes

/wp-content/themes/*
!/wp-content/themes/my-theme

$ git status

    Changes to be committed:
        new file:   wp-content/themes/my-theme/index.php
        new file:   wp-content/themes/my-theme/style.css

    Untracked files:
        wp-content/themes/my-theme/DUMMY.TXT

3

สำหรับผู้ที่กำลังมองหาทางออกที่สะอาดกว่าโปรดลองดังต่อไปนี้

ตามที่ระบุไว้ในความคิดเห็นของคำตอบนี้คุณต้องใช้วิธีนี้ซ้ำ

ในตัวอย่างนี้คุณมีการติดตั้งที่เว็บไซต์./ที่คุณ.gitโฟลเดอร์และ.gitignoreไฟล์ตั้งอยู่และการตั้งค่าการติดตั้ง WordPress ./wordpressใน ในการเพิกเฉยทุกสิ่งภายใต้./wordpressไดเรกทอรีอย่างถูกต้องนอกเหนือจากไดเรกทอรีธีม ( wordpress/wp-content/themes/my-theme) คุณจะต้องเพิกเฉยซ้ำและอนุญาตให้แต่ละไดเรกทอรีจนถึงไดเรกทอรีที่คุณต้องการอนุญาต:

wordpress/*
wordpress/wp-content/*
wordpress/wp-content/themes/*
!wordpress/wp-content
!wordpress/wp-content/themes
!wordpress/wp-content/themes/my-theme

เหตุผลในการเพิกถอนด้วยสัญลักษณ์ตัวแทนและการอนุญาต (หรือไม่สนใจ 'นอกเหนือจาก') ไดเรกทอรีจะทำให้ Git ดูในไดเรกทอรีก่อนก่อนที่จะไม่สนใจทุกสิ่งภายใน จากนั้นเราบอกให้ Git เพิกเฉยต่อทุกสิ่งที่นอกเหนือจากไดเรกทอรีที่เราระบุ นี่คือไวยากรณ์เดียวกัน แต่ตามลำดับการดู Git:

wordpress/*                            # Ignore everything inside here
!wordpress/wp-content                  # Apart from this directory

wordpress/wp-content/*                 # Ignore everything inside here
!wordpress/wp-content/themes           # Apart from this directory

wordpress/wp-content/themes/*          # Ignore everything inside here
!wordpress/wp-content/themes/my-theme  # Apart from this directory

หวังว่านี่จะช่วยให้บางคนเข้าใจความต้องการวิธีการเวียนเกิดได้ดีขึ้น


3

สายไปงานเลี้ยง แต่นี่คือสิ่งที่ฉันใช้สำหรับความลึกที่ไม่รู้จัก (โซลูชันที่ยอมรับต้องมีความลึกที่รู้จัก)

/*
!.gitignore
!wp-content/
!*/

วิธีนี้ทุกอย่างภายใต้เนื้อหา wp จะไม่ถูกละเว้น


3

หลังจากมีความต้องการหลาย ๆ ครั้งในที่สุดฉันก็พบวิธีแก้ปัญหา [1]:

/*/
/*.*
!.git*
!/wordpress

คำอธิบายทีละบรรทัด:

  1. ละเว้นไดเรกทอรีทั้งหมดที่รูท
  2. ละเว้นไฟล์ทั้งหมดที่มีนามสกุลที่รูท
  3. อนุญาตให้.gitignoreตัวเอง (และอาจ.gitattributes)
  4. อนุญาตไดเรกทอรีที่ต้องการด้วยไดเรกทอรีย่อยทั้งหมด

[1] ข้อ จำกัด (ที่ฉันรู้):

  1. มันไม่ได้เพิกเฉยต่อไฟล์ที่ไม่มีนามสกุลที่รูท (และการเพิ่ม /*จะทำให้โครงร่างทั้งหมดแตก)
  2. ไดเรกทอรีที่คุณต้องการรวมไว้ในบรรทัดที่ 4 ( wordpressในกรณีนี้) ไม่สามารถมี.ชื่อ (เช่นwordpress.1จะไม่ทำงาน) ถ้ามันมี.ลบบรรทัดที่ 2 และหาวิธีอื่นในการแยกไฟล์ทั้งหมดที่รูท
  3. ผ่านการทดสอบบน Windows ด้วยเท่านั้น git version 2.17.1.windows.2

3

อีกทางออกที่ง่าย:

คุณต้องการละเว้นไฟล์ Wordpress ทั้งหมด แต่ไม่ใช่ชุดรูปแบบของคุณ (ตัวอย่าง)

. gitignoreเนื้อหาคือ:

# All wordpress + content of revert ignored directories
wordpress/*
wordpress/wp-content/*
wordpress/wp-content/themes/*

# Revert ignoring directories
!wordpress/
!wordpress/wp-content/
!wordpress/wp-content/themes/
!wordpress/wp-content/themes/my_theme

ในตัวอย่างนี้คุณสามารถลบwordpressหาก. gitignoreอยู่ในไดเรกทอรีรากของ wordpress

คุณสามารถทำสิ่งเดียวกันกับทุกโฟลเดอร์และเนื้อหาที่คุณต้องการ "ล้ำสมัย" เพื่อป้องกันโฟลเดอร์ / ไฟล์

สรุป:

ตรวจสอบให้แน่ใจว่าได้ยกเลิกการลงทะเบียนไดเรกทอรีทั้งหมดของเส้นทางที่คุณต้องการยกเลิกการลงทะเบียน

แต่

อย่าลืมเนื้อหาทั้งหมดของไดเรกทอรีที่ไม่ได้รับการจัดเก็บที่คุณต้องการละเว้น


2

คุณสามารถลองสิ่งนี้:

!**/themes/*

ที่ไหน :

  • ! : คัดค้านละเว้น (รวม)
  • **: แผนผังไดเรกทอรีใด ๆ (การเรียกซ้ำ) ดังนั้นคุณไม่จำเป็นต้องระบุเส้นทางโฟลเดอร์
  • ชุดรูปแบบ: โฟลเดอร์ของคุณที่จะรวม (สามารถเป็นอะไรก็ได้)
  • *: ไฟล์ใด ๆ ในโฟลเดอร์นั้นคุณสามารถรวมโฟลเดอร์ย่อยทั้งหมดด้วย ** และแทนที่จะรวมไฟล์ใด ๆ (*) คุณสามารถระบุ * .css, * .xy

2

นี่คือทางออกของฉันซึ่งจะทำการชำระเงิน wp-content

# Ignore everything except directories
*
!*/

# except everything in the child theme and its required plugin
!/themes/mytheme-child/**
!/plugins/my-plugin/**

# and this file
!.gitignore

และการทดสอบ:

git version 2.20.1 (Apple Git-117)
$ git check-ignore -v .foo foo foo/ themes/foo themes/foo/bar themes/mytheme-child \
themes/mytheme-child/foo plugins/foo plugins/my-plugin plugins/my-plugin/foo .gitignore
.gitignore:2:*  .foo
.gitignore:2:*  foo
.gitignore:2:*  foo/
.gitignore:2:*  themes/foo
.gitignore:2:*  themes/foo/bar
.gitignore:2:*  themes/mytheme-child
.gitignore:6:!/themes/mytheme-child/**  themes/mytheme-child/foo
.gitignore:2:*  plugins/foo
.gitignore:2:*  plugins/my-plugin
.gitignore:7:!/plugins/my-plugin/** plugins/my-plugin/foo
.gitignore:10:!.gitignore   .gitignore

ดังนั้นมันจึงเพิกเฉยต่อทุกสิ่งที่ฉันไม่ต้องการอย่างถูกต้องและไม่มีอะไรที่ฉันต้องการเก็บไว้

ปล่อยรหัส

Gitlab ได้รับการกำหนดค่าด้วยมิเรอร์ที่เก็บสำหรับสาขาที่ได้รับการป้องกันตามhttps://docs.gitlab.com/ee/workflow/repository_mirroring.html

เมื่อรหัสจะถูกผลักไปยังสาขาการป้องกันก็จะถูกสะท้อนไปที่การแสดงละครและการผลิตเซิร์ฟเวอร์ใน/opt/checkout/repo.git/repo เปลือย post-receiveเบ็ด (ใน/opt/checkout/repo.git/hooks/post-receive) ต่อไปนี้จะชำระเงินรหัสลงในไดเรกทอรีการทำงาน

#!/bin/bash

BRANCH=staging
GIT_DIR=/opt/checkout/repo.git
GIT_WORK_TREE=/opt/bitnami/apps/wordpress/htdocs/wp-content

# on push, checkout the code to the working tree
git checkout -f "${BRANCH}"

# ensure permissions are correct
sudo chown -R bitnami:daemon "${GIT_WORK_TREE}"
sudo chmod -R go-w "${GIT_WORK_TREE}"

สำหรับข้อมูลเพิ่มเติมดูที่https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps


1

นี่คือวิธีที่ฉันทำ:

# Ignore everything at root:
/*

# Except for directories:
!wordpress/(WordPress Site 1)/wp-content/themes/
!wordpress/(WordPress Site 1)/wp-content/themes/
!wordpress/(WordPress Site 1)/wp-content/themes/

# Except files:
!README

#Except files of type:
!*.txt

นี่คือสิ่งที่ได้ผลสำหรับฉัน อนุญาตให้คุณละเว้นทุกสิ่งยกเว้นไฟล์หรือโฟลเดอร์เฉพาะ

เซียร่า macOS


0

ฉันอยู่ในเรือลำเดียวกันที่พยายามจัดการเว็บไซต์ Wordpress จำนวนมากภายใต้ repo เดียว โครงสร้างไดเรกทอรีของฉันมีลักษณะเช่นนี้:

root (git repo)
(WordPress Site 1)/app/public/wp-content/themes
(WordPress Site 2)/app/public/wp-content/themes
(WordPress Site 3)/app/public/wp-content/themes

ฉันต้องการเพียงแค่ติดตามรายการภายในapp/publicโฟลเดอร์สำหรับแต่ละไซต์ ฉันลองตัวอย่างในหน้านี้รวมถึงคำแนะนำที่นี่และลองทำสิ่งนี้:

/(WordPress Site 1)/*
!(WordPress Site 1)/app
(WordPress Site 1)/app/*
!(WordPress Site 1)/app/public

ซึ่งใช้งานได้ แต่ฉันต้องละเว้นเส้นทางเดียวกันสำหรับแต่ละไซต์ที่ฉันพยายามหลีกเลี่ยง

จากนั้นฉันก็เปลี่ยนชื่อเว็บไซต์ด้วย*และนั่นก็เป็นเคล็ดลับสำหรับฉัน ดังนั้นนี่คือสิ่งที่ฉันใช้:

/*/*
!*/app
*/app/*
!*/app/public

สิ่งนี้จะไม่สนใจทุกสิ่งในโฟลเดอร์ของไซต์ในขณะที่จับทุกอย่างใน app/publicโฟลเดอร์สำหรับไซต์ใด ๆ ที่ฉันสร้างในรูท

โปรดทราบว่ามันจะไม่เพิกเฉยต่อไฟล์ในรากเพียงไดเรกทอรี :)

หวังว่านี่จะช่วยได้


0

ไฟล์นี้เป็นไฟล์เดียวที่ถูกละเว้นในกรณีส่วนใหญ่เนื่องจากคุณมี wp-config-sample.php ที่คุณสามารถแชร์กับผู้อื่นได้

/wp-config.php
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.