ในการบังคับให้จบบรรทัด LF สำหรับไฟล์ข้อความทั้งหมดคุณสามารถสร้าง.gitattributes
ไฟล์ในระดับบนสุดของที่เก็บของคุณด้วยบรรทัดต่อไปนี้ (เปลี่ยนตามที่ต้องการ):
# Ensure all C and PHP files use LF.
*.c eol=lf
*.php eol=lf
ซึ่งทำให้มั่นใจได้ว่าไฟล์ทั้งหมดที่ Git พิจารณาว่าเป็นไฟล์ข้อความมีLF
บรรทัดที่ลงท้ายด้วยบรรทัดมาตรฐาน ( ) ในพื้นที่เก็บข้อมูล (โดยปกติจะเป็นcore.eol
ตัวควบคุมการกำหนดค่าที่คุณต้องมีตามค่าเริ่มต้น)
ขึ้นอยู่กับการตั้งค่าแอตทริบิวต์ใหม่ไฟล์ข้อความใด ๆ ที่มี CRLF ควรถูกทำให้เป็นมาตรฐานโดย Git หากสิ่งนี้จะไม่เกิดขึ้นโดยอัตโนมัติคุณสามารถรีเฟรชพื้นที่เก็บข้อมูลด้วยตนเองหลังจากเปลี่ยนการสิ้นสุดบรรทัดดังนั้นคุณสามารถสแกนซ้ำและยอมรับไดเรกทอรีการทำงานได้ตามขั้นตอนต่อไปนี้ (กำหนดไดเรกทอรีการทำงานใหม่ทั้งหมด):
$ echo "* text=auto" >> .gitattributes
$ rm .git/index # Remove the index to force Git to
$ git reset # re-scan the working directory
$ git status # Show files that will be normalized
$ git add -u
$ git add .gitattributes
$ git commit -m "Introduce end-of-line normalization"
หรือตามเอกสาร GitHub :
git add . -u
git commit -m "Saving files before refreshing line endings"
git rm --cached -r . # Remove every file from Git's index.
git reset --hard # Rewrite the Git index to pick up all the new line endings.
git add . # Add all your changed files back, and prepare them for a commit.
git commit -m "Normalize all the line endings" # Commit the changes to your repository.
ดูเพิ่มเติม: โพสต์ @Charles เบลีย์
นอกจากนี้หากคุณต้องการยกเว้นไฟล์ใด ๆ ที่ไม่ถูกถือว่าเป็นข้อความให้ยกเลิกการตั้งค่าแอททริบิวข้อความของพวกเขาเช่น
manual.pdf -text
หรือทำเครื่องหมายว่าเป็นไบนารีอย่างชัดเจน:
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
หากต้องการดูไฟล์การปรับมาตรฐาน git ขั้นสูงเพิ่มเติมให้ตรวจสอบ.gitattributes
ที่Drupal core :
# Drupal git normalization
# @see https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html
# @see https://www.drupal.org/node/1542048
# Normally these settings would be done with macro attributes for improved
# readability and easier maintenance. However macros can only be defined at the
# repository root directory. Drupal avoids making any assumptions about where it
# is installed.
# Define text file attributes.
# - Treat them as text.
# - Ensure no CRLF line-endings, neither on checkout nor on checkin.
# - Detect whitespace errors.
# - Exposed by default in `git diff --color` on the CLI.
# - Validate with `git diff --check`.
# - Deny applying with `git apply --whitespace=error-all`.
# - Fix automatically with `git apply --whitespace=fix`.
*.config text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.css text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.dist text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.engine text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
*.html text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=html
*.inc text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
*.install text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
*.js text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.json text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.lock text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.map text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.md text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.module text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
*.php text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
*.po text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.profile text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
*.script text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.sh text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
*.sql text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.svg text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.theme text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
*.twig text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.txt text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.xml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.yml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
# Define binary file attributes.
# - Do not treat them as text.
# - Include binary diff in patches instead of "binary files differ."
*.eot -text diff
*.exe -text diff
*.gif -text diff
*.gz -text diff
*.ico -text diff
*.jpeg -text diff
*.jpg -text diff
*.otf -text diff
*.phar -text diff
*.png -text diff
*.svgz -text diff
*.ttf -text diff
*.woff -text diff
*.woff2 -text diff
ดูสิ่งนี้ด้วย: