GoGPT Best VPN GoSearch

OnWorks favicon

git-diff-index - ອອນໄລນ໌ຢູ່ໃນຄລາວ

ເປີດໃຊ້ git-diff-index ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີຜ່ານ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ນີ້ແມ່ນຄໍາສັ່ງ git-diff-index ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ໂຄງການ:

NAME


git-diff-index - ປຽບທຽບຕົ້ນໄມ້ກັບຕົ້ນໄມ້ທີ່ເຮັດວຽກຫຼືດັດສະນີ

ສະຫຼຸບສັງລວມ


ໄປ ດັດຊະນີຄວາມແຕກຕ່າງ [-m] [--cached] [ ] [ ...]

ລາຍລະອຽດ


ປຽບທຽບເນື້ອໃນແລະຮູບແບບຂອງ blobs ທີ່ພົບເຫັນຢູ່ໃນວັດຖຸຕົ້ນໄມ້ທີ່ມີທີ່ສອດຄ້ອງກັນ
ໄຟລ໌ທີ່ຕິດຕາມຢູ່ໃນຕົ້ນໄມ້ທີ່ເຮັດວຽກ, ຫຼືມີເສັ້ນທາງທີ່ສອດຄ້ອງກັນໃນດັດຊະນີ. ເມື່ອ​ໃດ​
ການໂຕ້ຖຽງແມ່ນມີຢູ່, ປຽບທຽບເສັ້ນທາງທີ່ກົງກັບຮູບແບບເຫຼົ່ານັ້ນເທົ່ານັ້ນ. ຖ້າບໍ່ດັ່ງນັ້ນທັງຫມົດ
ໄຟລ໌ທີ່ຕິດຕາມຖືກປຽບທຽບ.

OPTIONS


-p, -u, --patch
ສ້າງ patch (ເບິ່ງພາກກ່ຽວກັບການສ້າງ patches).

-s, --no-patch
ສະກັດກັ້ນຜົນຜະລິດທີ່ແຕກຕ່າງ. ເປັນປະໂຫຍດສໍາລັບຄໍາສັ່ງເຊັ່ນ git show ທີ່ສະແດງໃຫ້ເຫັນ patch ໂດຍ
ຄ່າເລີ່ມຕົ້ນ, ຫຼືເພື່ອຍົກເລີກຜົນກະທົບຂອງ --patch.

-U , --unified=
ສ້າງຄວາມແຕກຕ່າງກັບ ເສັ້ນຂອງບໍລິບົດແທນທີ່ຈະເປັນສາມປົກກະຕິ. ຄວາມຫມາຍ -p.

-- ດິບ
ສ້າງຄວາມແຕກຕ່າງໃນຮູບແບບດິບ. ນີ້ແມ່ນຄ່າເລີ່ມຕົ້ນ.

--patch-with-raw
ຄໍາສັບຄ້າຍຄື -p --raw.

--ໜ້ອຍທີ່ສຸດ
ໃຊ້ເວລາພິເສດເພື່ອໃຫ້ແນ່ໃຈວ່າຄວາມແຕກຕ່າງທີ່ເປັນໄປໄດ້ຫນ້ອຍທີ່ສຸດແມ່ນຜະລິດ.

-- ຄວາມອົດທົນ
ສ້າງຄວາມແຕກຕ່າງໂດຍໃຊ້ສູດການຄິດໄລ່ "ຄວາມອົດທົນ".

--Histogram
ສ້າງຄວາມແຕກຕ່າງໂດຍໃຊ້ວິທີ "histogram diff".

--diff-algorithm={ຄວາມອົດທົນ|ໜ້ອຍສຸດ|ຮີສໂຕແກຣມ|myers}
ເລືອກສູດການຄິດໄລ່ຄວາມແຕກຕ່າງ. variants ມີ​ດັ່ງ​ຕໍ່​ໄປ​ນີ້​:

ຄ່າເລີ່ມຕົ້ນ, myers
ສູດການຄິດໄລ່ຄວາມແຕກຕ່າງຂອງຄວາມໂລບມາກຂັ້ນພື້ນຖານ. ໃນປັດຈຸບັນ, ນີ້ແມ່ນຄ່າເລີ່ມຕົ້ນ.

ຫນ້ອຍ
ໃຊ້ເວລາພິເສດເພື່ອໃຫ້ແນ່ໃຈວ່າຄວາມແຕກຕ່າງທີ່ເປັນໄປໄດ້ຫນ້ອຍທີ່ສຸດແມ່ນຜະລິດ.

ຄວາມອົດທົນ
ໃຊ້ "ຄວາມອົດທົນທີ່ແຕກຕ່າງ" algorithm ເມື່ອສ້າງ patches.

histogram
ສູດການຄິດໄລ່ນີ້ຂະຫຍາຍ algorithm ຄວາມອົດທົນເພື່ອ "ສະຫນັບສະຫນູນການປະກົດຕົວຕ່ໍາ
ອົງປະກອບ".

ຕົວຢ່າງ, ຖ້າທ່ານຕັ້ງຄ່າຕົວແປ diff.algorithm ເປັນຄ່າທີ່ບໍ່ແມ່ນຄ່າເລີ່ມຕົ້ນ ແລະ
ຕ້ອງການໃຊ້ຄ່າເລີ່ມຕົ້ນ, ຈາກນັ້ນເຈົ້າຕ້ອງໃຊ້ --diff-algorithm=default option.

--stat[= [, [, ]]]
ສ້າງ diffstat. ໂດຍຄ່າເລີ່ມຕົ້ນ, ພື້ນທີ່ຫຼາຍເທົ່າທີ່ຈໍາເປັນຈະຖືກນໍາໃຊ້ສໍາລັບ
ສ່ວນຊື່ໄຟລ໌, ແລະສ່ວນທີ່ເຫຼືອສໍາລັບພາກສ່ວນກາຟ. ຄວາມກວ້າງສູງສຸດເປັນຄ່າເລີ່ມຕົ້ນເປັນເຄື່ອງໝາຍປາຍທາງ
width, ຫຼື 80 ຖັນຖ້າບໍ່ເຊື່ອມຕໍ່ກັບ terminal, ແລະສາມາດ overridden ໂດຍ .
ຄວາມກວ້າງຂອງພາກສ່ວນຊື່ໄຟລ໌ສາມາດຖືກຈໍາກັດໂດຍການໃຫ້ຄວາມກວ້າງອື່ນ
ຫຼັງຈາກເຄື່ອງໝາຍຈຸດ. ຄວາມກວ້າງຂອງພາກສ່ວນກາຟສາມາດຖືກຈໍາກັດໂດຍການນໍາໃຊ້
--stat-graph-width= (ມີຜົນຕໍ່ຄໍາສັ່ງທັງໝົດທີ່ສ້າງຕາຕະລາງສະຖິຕິ) ຫຼືໂດຍ
ການຕັ້ງຄ່າ diff.statGraphWidth= (ບໍ່ມີຜົນກະທົບ git format-patch). ໂດຍການໃຫ້ ກ
ຕົວກໍານົດການທີສາມ , ທ່ານສາມາດຈໍາກັດຜົນຜະລິດຄັ້ງທໍາອິດ ສາຍ, ປະຕິບັດຕາມ
by ... ຖ້າ​ຫາກ​ວ່າ​ມີ​ຫຼາຍ​.

ຕົວກໍານົດການເຫຼົ່ານີ້ຍັງສາມາດຖືກກໍານົດເປັນສ່ວນບຸກຄົນດ້ວຍ --stat-width= ,
--stat-name-width= ແລະ --stat-count= .

--numstat
ຄ້າຍ​ຄື --stat, ແຕ່​ສະ​ແດງ​ໃຫ້​ເຫັນ​ຈໍາ​ນວນ​ຂອງ​ການ​ເພີ່ມ​ແລະ​ການ​ລົບ​ເສັ້ນ​ໃນ​ຫມາຍ​ເຫດ​ທົດ​ສະ​ນິ​ຍົມ​ແລະ
ຊື່ເສັ້ນທາງທີ່ບໍ່ມີຕົວຫຍໍ້, ເພື່ອເຮັດໃຫ້ມັນເປັນມິດກັບເຄື່ອງຈັກ. ສໍາ​ລັບ​ໄຟລ​໌​ຖານ​ສອງ​,
ຜົນໄດ້ຮັບສອງ - ແທນທີ່ຈະເວົ້າວ່າ 0 0.

-- ສະຖິຕິສັ້ນ
ສົ່ງອອກພຽງແຕ່ແຖວສຸດທ້າຍຂອງຮູບແບບ --stat ທີ່ມີຈໍານວນການດັດແກ້ທັງຫມົດ
ໄຟລ໌, ເຊັ່ນດຽວກັນກັບຈໍານວນຂອງແຖວທີ່ເພີ່ມແລະລຶບ.

--dirstat[= ]
ສົ່ງອອກການແຈກຢາຍຂອງປະລິມານທີ່ສົມທຽບຂອງການປ່ຽນແປງສໍາລັບແຕ່ລະໄດເລກະທໍລີຍ່ອຍ. ໄດ້
ພຶດຕິກໍາຂອງ --dirstat ສາມາດປັບແຕ່ງໄດ້ໂດຍການສົ່ງມັນບັນຊີລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ
ຕົວກໍານົດການ. ຄ່າເລີ່ມຕົ້ນຖືກຄວບຄຸມໂດຍຕົວແປການຕັ້ງຄ່າ diff.dirstat
(ເບິ່ງ git-config(1)). ຕົວກໍານົດການດັ່ງຕໍ່ໄປນີ້ສາມາດໃຊ້ໄດ້:

ການປ່ຽນແປງ
ຄິດໄລ່ຕົວເລກ dirstat ໂດຍການນັບເສັ້ນທີ່ຖືກໂຍກຍ້າຍອອກຈາກ
ແຫຼ່ງ, ຫຼືເພີ່ມໃສ່ປາຍທາງ. ນີ້ບໍ່ສົນໃຈຈໍານວນລະຫັດບໍລິສຸດ
ການເຄື່ອນໄຫວພາຍໃນໄຟລ໌. ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ການຈັດແຖວໃຫມ່ໃນໄຟລ໌ບໍ່ແມ່ນ
ນັບເທົ່າກັບການປ່ຽນແປງອື່ນໆ. ນີ້ແມ່ນພຶດຕິກໍາເລີ່ມຕົ້ນເມື່ອບໍ່ມີພາລາມິເຕີ
ແມ່ນໃຫ້.

ສາຍ
ຄິດໄລ່ຕົວເລກ dirstat ໂດຍການເຮັດການວິເຄາະຄວາມແຕກຕ່າງຕາມເສັ້ນປົກກະຕິ, ແລະ
ສະ​ຫຼຸບ​ການ​ຍົກ​ເລີກ​ການ​ນັບ​ເສັ້ນ​ທີ່​ຖືກ​ລົບ​ອອກ / ເພີ່ມ​. (ສຳລັບໄຟລ໌ໄບນາຣີ, ໃຫ້ນັບ 64-byte chunks
ແທນທີ່ຈະ, ເນື່ອງຈາກວ່າໄຟລ໌ຖານສອງບໍ່ມີແນວຄວາມຄິດທໍາມະຊາດຂອງສາຍ). ນີ້ແມ່ນເພີ່ມເຕີມ
ພຶດຕິກໍາ -dirstat ລາຄາແພງກວ່າການປ່ຽນແປງພຶດຕິກໍາ, ແຕ່ມັນນັບ
ຈັດແຖວຄືນໃໝ່ພາຍໃນໄຟລ໌ເທົ່າກັບການປ່ຽນແປງອື່ນໆ. ຜົນໄດ້ຮັບຜົນໄດ້ຮັບແມ່ນ
ສອດຄ້ອງກັບສິ່ງທີ່ທ່ານໄດ້ຮັບຈາກທາງເລືອກອື່ນ --* ສະຖິຕິ.

ໄຟ
ຄິດໄລ່ຕົວເລກ dirstat ໂດຍການນັບຈໍານວນໄຟລ໌ທີ່ປ່ຽນແປງ. ແຕ່ລະຄົນມີການປ່ຽນແປງ
ໄຟລ໌ນັບເທົ່າທຽມກັນໃນການວິເຄາະ dirstat. ນີ້ແມ່ນລາຄາຖືກສຸດໃນຄອມພິວເຕີ້
--dirstat ພຶດຕິກໍາ, ເນື່ອງຈາກວ່າມັນບໍ່ຈໍາເປັນຕ້ອງເບິ່ງເນື້ອໃນໄຟລ໌ທັງຫມົດ.

ສົມບູນ
ນັບການປ່ຽນແປງໃນໄດເລກະທໍລີລູກສໍາລັບໄດເລກະທໍລີພໍ່ແມ່ເຊັ່ນກັນ. ໃຫ້ສັງເກດວ່າ
ໃນ​ເວ​ລາ​ທີ່​ການ​ນໍາ​ໃຊ້​ສະ​ສົມ​, ຜົນ​ລວມ​ຂອງ​ອັດ​ຕາ​ສ່ວນ​ລາຍ​ງານ​ອາດ​ຈະ​ເກີນ 100​%​. ໄດ້
ພຶດຕິກຳເລີ່ມຕົ້ນ (ບໍ່ສະສົມ) ສາມາດຖືກລະບຸດ້ວຍ noncumulative
ພາລາມິເຕີ.


ຕົວກໍານົດການຈໍານວນເຕັມກໍານົດອັດຕາສ່ວນຕັດອອກ (3% ໂດຍຄ່າເລີ່ມຕົ້ນ). ລາຍຊື່
ການປະກອບສ່ວນຫນ້ອຍກວ່າອັດຕາສ່ວນຂອງການປ່ຽນແປງນີ້ບໍ່ໄດ້ສະແດງຢູ່ໃນຜົນຜະລິດ.

ຕົວຢ່າງ: ຕໍ່ໄປນີ້ຈະນັບໄຟລ໌ທີ່ປ່ຽນແປງ, ໃນຂະນະທີ່ບໍ່ສົນໃຈໄດເລກະທໍລີທີ່ມີຫນ້ອຍລົງ
ຫຼາຍ​ກ​່​ວາ 10​% ຂອງ​ຈໍາ​ນວນ​ທັງ​ຫມົດ​ຂອງ​ໄຟລ​໌​ປ່ຽນ​ແປງ​, ແລະ​ການ​ສະ​ສົມ​ການ​ນັບ​ລະ​ບົບ​ຂອງ​ເດັກ​ນ້ອຍ​
ໃນໄດເລກະທໍລີຫຼັກ: --dirstat=files,10,cumulative.

-- ສະຫຼຸບ
ສົ່ງບົດສະຫຼຸບຫຍໍ້ຂອງຂໍ້ມູນສ່ວນຫົວທີ່ຂະຫຍາຍອອກເຊັ່ນ: ການສ້າງ, ການປ່ຽນຊື່
ແລະ​ການ​ປ່ຽນ​ແປງ​ຮູບ​ແບບ​.

--patch-with-stat
ຄໍາສັບຄ້າຍຄື -p --stat.

-z
ເມື່ອ --raw, --numstat, --name-only ຫຼື --name-status ໄດ້ຖືກມອບໃຫ້, ຢ່າມ້ຽນ.
pathnames ແລະໃຊ້ NULs ເປັນ output field terminators.

ຖ້າບໍ່ມີທາງເລືອກນີ້, ຜົນຜະລິດຊື່ເສັ້ນທາງແຕ່ລະຄົນຈະມີ TAB, LF, ວົງຢືມຄູ່, ແລະ
ຕົວອັກສອນ backslash ແທນທີ່ດ້ວຍ \t, \n, \", ແລະ \\, ຕາມລໍາດັບ, ແລະຊື່ເສັ້ນທາງ
ຈະຖືກຫຸ້ມຢູ່ໃນວົງຢືມສອງເທົ່າ ຖ້າມີການປ່ຽນແທນເຫຼົ່ານັ້ນເກີດຂຶ້ນ.

--ຊື່ເທົ່ານັ້ນ
ສະແດງພຽງແຕ່ຊື່ຂອງໄຟລ໌ທີ່ມີການປ່ຽນແປງ.

--ຊື່-ສະຖານະ
ສະແດງພຽງແຕ່ຊື່ແລະສະຖານະຂອງໄຟລ໌ທີ່ມີການປ່ຽນແປງ. ເບິ່ງລາຍລະອຽດຂອງ --diff-filter
ທາງເລືອກກ່ຽວກັບສິ່ງທີ່ຕົວອັກສອນສະຖານະພາບຫມາຍຄວາມວ່າ.

--ໂມດູນຍ່ອຍ[= ]
ລະບຸວ່າຄວາມແຕກຕ່າງໃນໂມດູນຍ່ອຍສະແດງໃຫ້ເຫັນແນວໃດ. ເມື່ອ --submodule ຫຼື --submodule=log
ແມ່ນໃຫ້, ໄດ້ log ຮູບແບບຖືກນໍາໃຊ້. ຮູບ​ແບບ​ນີ້​ລາຍ​ການ​ຄໍາ​ຫມັ້ນ​ສັນ​ຍາ​ໃນ​ລະ​ດັບ​ເຊັ່ນ​:​ git-
ໂມດູນຍ່ອຍ(1) ສະຫຼຸບ. ການລະເວັ້ນທາງເລືອກ --submodule ຫຼືການລະບຸ
--submodule=short, ໃຊ້ the ສັ້ນ ຮູບແບບ. ຮູບແບບນີ້ພຽງແຕ່ສະແດງໃຫ້ເຫັນຊື່ຂອງ
commits ໃນຕອນເລີ່ມຕົ້ນແລະໃນຕອນທ້າຍຂອງໄລຍະການ. ສາມາດປັບໄດ້ຜ່ານ diff.submodule
ຕົວແປການຕັ້ງຄ່າ.

--ສີ[= ]
ສະແດງຄວາມແຕກຕ່າງຂອງສີ. --color (ເຊັ່ນ: ບໍ່ມີ =) ແມ່ນຄືກັນກັບ --color=ສະເໝີ.
ສາມາດເປັນຫນຶ່ງໃນສະເຫມີ, ບໍ່ເຄີຍ, ຫຼືອັດຕະໂນມັດ.

--ບໍ່ມີສີ
ປິດຄວາມແຕກຕ່າງຂອງສີ. ມັນຄືກັນກັບ --color=never.

--word-diff[= ]
ສະແດງຄວາມແຕກຕ່າງຂອງຄໍາສັບ, ໂດຍໃຊ້ ເພື່ອກໍານົດຄໍາທີ່ມີການປ່ຽນແປງ. ໂດຍຄ່າເລີ່ມຕົ້ນ, ຄໍາສັບຕ່າງໆແມ່ນ
delimited by whitespace; ເບິ່ງ --word-diff-regex ຂ້າງລຸ່ມນີ້. ໄດ້ ເລີ່ມຕົ້ນເປັນ ທໍາມະດາ,
ແລະຕ້ອງເປັນຫນຶ່ງໃນ:

ສີ
ເນັ້ນໃສ່ຄໍາທີ່ປ່ຽນໂດຍໃຊ້ສີເທົ່ານັ້ນ. ໝາຍເຖິງ --color.

ທໍາມະດາ
ສະແດງຄຳສັບເປັນ [-removed-] ແລະ {+added+}. ບໍ່​ມີ​ຄວາມ​ພະ​ຍາ​ຍາມ​ທີ່​ຈະ​ຫນີ​
ຕົວຂັ້ນຖ້າພວກມັນປາກົດຢູ່ໃນວັດສະດຸປ້ອນ, ດັ່ງນັ້ນຜົນຜະລິດອາດຈະມີຄວາມມົວໝອງ.

porcelain
ໃຊ້ຮູບແບບທີ່ອີງໃສ່ເສັ້ນພິເສດທີ່ມີຈຸດປະສົງສໍາລັບການບໍລິໂພກສະຄິບ.
ການແລ່ນທີ່ເພີ່ມ/ເອົາອອກ/ບໍ່ປ່ຽນແປງແມ່ນພິມອອກໃນຮູບແບບຄວາມແຕກຕ່າງກັນປົກກະຕິ,
ເລີ່ມຕົ້ນດ້ວຍຕົວອັກສອນ +/-/` ` ໃນຕອນຕົ້ນຂອງແຖວແລະຂະຫຍາຍໄປ
ໃນຕອນທ້າຍຂອງເສັ້ນ. Newlines ໃນ input ແມ່ນສະແດງໂດຍ tilde ~ ຢູ່ໃນເສັ້ນ
ຂອງຕົນເອງ.

none
ປິດການໃຊ້ຄໍາ diff ອີກເທື່ອຫນຶ່ງ.

ໃຫ້ສັງເກດວ່າເຖິງວ່າຈະມີຊື່ຂອງໂຫມດທໍາອິດ, ສີຖືກນໍາໃຊ້ເພື່ອເນັ້ນໃສ່ການປ່ຽນແປງ
ພາກສ່ວນໃນທຸກໂໝດຖ້າເປີດໃຊ້.

--word-diff-regex=
ໃຊ້ ເພື່ອຕັດສິນໃຈວ່າຄໍາສັບແມ່ນຫຍັງ, ແທນທີ່ຈະພິຈາລະນາການແລ່ນຂອງຊ່ອງຫວ່າງທີ່ບໍ່ແມ່ນສີຂາວ
ເປັນ​ຄໍາ​ສັບ​ຕ່າງໆ​. ຍັງໝາຍເຖິງ --word-diff ເວັ້ນເສຍແຕ່ວ່າມັນຖືກເປີດໃຊ້ແລ້ວ.

ທຸກໆການແຂ່ງຂັນທີ່ບໍ່ຊ້ໍາກັນຂອງ ຖືກພິຈາລະນາເປັນຄໍາ. ທຸກຢ່າງລະຫວ່າງ
ການຈັບຄູ່ເຫຼົ່ານີ້ຖືກພິຈາລະນາເປັນຊ່ອງຫວ່າງ ແລະຖືກລະເລີຍ (!) ສໍາລັບຈຸດປະສົງຂອງການຊອກຫາ
ຄວາມແຕກຕ່າງ. ເຈົ້າອາດຈະຕ້ອງການຕື່ມໃສ່ |[^[:space:]] ໃສ່ກັບການສະແດງຜົນປົກກະຕິຂອງເຈົ້າເພື່ອເຮັດ
ໃຫ້ແນ່ໃຈວ່າມັນກົງກັບຕົວອັກສອນທີ່ບໍ່ແມ່ນຊ່ອງຂາວທັງໝົດ. ການຈັບຄູ່ທີ່ມີແຖວໃໝ່ແມ່ນ
ຕັດຢ່າງງຽບໆ(!) ຢູ່ແຖວໃໝ່.

ຕົວຢ່າງ, --word-diff-regex=. ຈະປະຕິບັດແຕ່ລະລັກສະນະເປັນຄໍາສັບແລະ,
ກົງກັນ, ສະແດງໃຫ້ເຫັນຄວາມແຕກຕ່າງໂດຍລັກສະນະ.

regex ຍັງສາມາດຖືກຕັ້ງຄ່າຜ່ານໄດເວີ diff ຫຼືຕົວເລືອກການຕັ້ງຄ່າ, ເບິ່ງ
gitattributes(1) ຫຼື git-config(1). ການໃຫ້ມັນ overrides ໄດເວີທີ່ແຕກຕ່າງກັນຢ່າງຈະແຈ້ງຫຼື
ການ​ຕັ້ງ​ຄ່າ​. Diff drivers override ການຕັ້ງຄ່າການຕັ້ງຄ່າ.

--color-words[= ]
ເທົ່າກັບ --word-diff=color plus (ຖ້າ regex ຖືກລະບຸ)
--word-diff-regex= .

--no-renames
ປິດການກວດສອບການປ່ຽນຊື່, ເຖິງແມ່ນວ່າໃນເວລາທີ່ໄຟລ໌ການຕັ້ງຄ່າໃຫ້ຄ່າເລີ່ມຕົ້ນທີ່ຈະເຮັດ
ດັ່ງນັ້ນ.

--ກວດ​ສອບ
ເຕືອນ ຖ້າ ຫາກ ວ່າ ການ ປ່ຽນ ແປງ ແນະ ນໍາ ໃຫ້ ມີ ຄວາມ ຜິດ ພາດ whitespace. ສິ່ງທີ່ຖືວ່າເປັນຂໍ້ຜິດພາດຂອງຊ່ອງຫວ່າງແມ່ນ
ຄວບຄຸມໂດຍການຕັ້ງຄ່າ core.whitespace. ໂດຍຄ່າເລີ່ມຕົ້ນ, ຕິດຕາມຊ່ອງຫວ່າງ
(ລວມທັງເສັ້ນທີ່ປະກອບດ້ວຍຊ່ອງຫວ່າງເທົ່ານັ້ນ) ແລະລັກສະນະຊ່ອງທີ່ເປັນ
ທັນທີຕິດຕາມດ້ວຍຕົວອັກສອນແຖບພາຍໃນຫຍໍ້ໜ້າເບື້ອງຕົ້ນຂອງແຖວ
ພິ​ຈາ​ລະ​ນາ​ຄວາມ​ຜິດ​ພາດ whitespace​. ອອກດ້ວຍສະຖານະທີ່ບໍ່ແມ່ນສູນ ຖ້າພົບບັນຫາ. ບໍ່ແມ່ນ
ເຂົ້າກັນໄດ້ກັບ --exit-code.

--ws-error-highlight=
ເນັ້ນໃສ່ຂໍ້ຜິດພາດໃນຊ່ອງຫວ່າງໃນແຖວທີ່ລະບຸໂດຍ ໃນ​ສີ​ທີ່​ລະ​ບຸ​ໄວ້​ໂດຍ​
color.diff.whitespace. ເປັນເຄື່ອງໝາຍຈຸດທີ່ແຍກອອກຈາກລາຍການເກົ່າ, ໃໝ່, ບໍລິບົດ. ເມື່ອ​ໃດ​
ທາງ​ເລືອກ​ນີ້​ບໍ່​ໄດ້​ຖືກ​ມອບ​ໃຫ້, ມີ​ແຕ່​ຄວາມ​ຜິດ​ພາດ​ຊ່ອງ​ຂາວ​ໃນ​ແຖວ​ໃໝ່​ທີ່​ຖືກ​ເນັ້ນ​ໃສ່. ຕົວຢ່າງ
--ws-error-highlight=new,old highlights whitespace errors on both deleted and added
ສາຍ. ທັງ​ຫມົດ​ສາ​ມາດ​ນໍາ​ໃຊ້​ເປັນ​ມື​ສັ້ນ​ສໍາ​ລັບ​ການ​ເກົ່າ​, ໃຫມ່​, ສະ​ພາບ​ການ​.

--ດັດຊະນີເຕັມ
ແທນທີ່ຈະເປັນມືທຳອິດຂອງຕົວລະຄອນ, ສະແດງຮູບເຕັມກ່ອນ ແລະຫຼັງຮູບ
ຊື່ວັດຖຸຢູ່ໃນເສັ້ນ "ດັດສະນີ" ເມື່ອສ້າງຜົນຜະລິດຮູບແບບ patch.

--binary
ນອກເຫນືອຈາກ --indexfull-index, output a binary diff ທີ່ສາມາດຖືກນໍາໃຊ້ກັບ git-apply.

--abbrev[= ]
ແທນທີ່ຈະສະແດງຊື່ວັດຖຸເລກຖານສິບຫົກຫົກສິບໄບເຕັມ 40-byte ໃນຮູບແບບທີ່ຕ່າງກັນຜົນອອກມາ.
ແລະ diff-tree header ເສັ້ນ, ສະແດງພຽງແຕ່ຄໍານໍາຫນ້າບາງສ່ວນ. ນີ້ແມ່ນເອກະລາດຂອງ
--full-index ທາງເລືອກຂ້າງເທິງ, ເຊິ່ງຄວບຄຸມຮູບແບບຜົນຜະລິດ diff-patch. ບໍ່ແມ່ນຄ່າເລີ່ມຕົ້ນ
ຈໍານວນຕົວເລກສາມາດຖືກກໍານົດດ້ວຍ --abbrev= .

-B[ ][/ ], --break-rewrites[=[ ][/ ]]
ແຍກການປ່ຽນແປງການຂຽນຄືນທີ່ສົມບູນເປັນຄູ່ຂອງການລຶບແລະສ້າງ. ນີ້ໃຫ້ບໍລິການສອງ
ຈຸດປະສົງ:

ມັນມີຜົນກະທົບຕໍ່ການປ່ຽນແປງທີ່ເທົ່າກັບການຂຽນຄືນທັງຫມົດຂອງໄຟລ໌ທີ່ບໍ່ແມ່ນຊຸດ
ຂອງການລຶບແລະການແຊກຊ້ອນເຂົ້າກັນກັບສອງສາມເສັ້ນທີ່ກົງກັນ
textually as the context, but as a single deleted of all olded ຕາມດ້ວຍ a
ການແຊກອັນດຽວຂອງທຸກສິ່ງທຸກຢ່າງໃຫມ່, ແລະຈໍານວນ m ຄວບຄຸມລັກສະນະນີ້ຂອງ -B
ທາງເລືອກ (ຄ່າເລີ່ມຕົ້ນເປັນ 60%). -B/70% ກໍານົດວ່າຫນ້ອຍກວ່າ 30% ຂອງຕົ້ນສະບັບຄວນ
ຍັງຄົງຢູ່ໃນຜົນໄດ້ຮັບສໍາລັບ Git ເພື່ອພິຈາລະນາວ່າມັນເປັນການຂຽນຄືນໃຫມ່ທັງຫມົດ (ie ຖ້າບໍ່ດັ່ງນັ້ນ
patch ຜົນໄດ້ຮັບຈະເປັນຊຸດຂອງການລຶບແລະການແຊກຊ້ອນເຂົ້າກັນກັບບໍລິບົດ
ສາຍ).

ເມື່ອໃຊ້ກັບ -M, ໄຟລ໌ທີ່ຂຽນຄືນໃຫມ່ທັງຫມົດຍັງຖືວ່າເປັນແຫຼ່ງຂອງ a
rename (ປົກກະຕິແລ້ວ -M ພຽງແຕ່ພິຈາລະນາໄຟລ໌ທີ່ຫາຍໄປເປັນແຫຼ່ງຂອງການປ່ຽນຊື່),
ແລະຕົວເລກ n ຄວບຄຸມລັກສະນະນີ້ຂອງຕົວເລືອກ -B (ຄ່າເລີ່ມຕົ້ນເປັນ 50%). -B20%
ລະບຸວ່າມີການປ່ຽນແປງດ້ວຍການເພີ່ມແລະການລຶບເມື່ອປຽບທຽບກັບ 20% ຫຼືຫຼາຍກວ່ານັ້ນ
ຂະ​ຫນາດ​ຂອງ​ໄຟລ​໌​ແມ່ນ​ມີ​ສິດ​ໄດ້​ຮັບ​ທີ່​ຈະ​ໄດ້​ຮັບ​ການ​ເກັບ​ຂຶ້ນ​ເປັນ​ແຫຼ່ງ​ທີ່​ເປັນ​ໄປ​ໄດ້​ຂອງ​ການ​ປ່ຽນ​ຊື່​ເປັນ​
ໄຟລ໌ອື່ນ.

-M[ ], --find-renames[= ]
ກວດພົບການປ່ຽນຊື່. ຖ້າ n ຖືກລະບຸ, ມັນເປັນເກນຢູ່ໃນດັດຊະນີຄວາມຄ້າຍຄືກັນ (ie
ຈໍາ​ນວນ​ຂອງ​ການ​ເພີ່ມ / ການ​ລົບ​ທຽບ​ກັບ​ຂະ​ຫນາດ​ຂອງ​ໄຟລ​໌​)​. ຕົວຢ່າງ, -M90% ຫມາຍຄວາມວ່າ
Git ຄວນພິຈາລະນາການລຶບ / ເພີ່ມຄູ່ທີ່ຈະປ່ຽນຊື່ຖ້າມີຫຼາຍກວ່າ 90% ຂອງໄຟລ໌
ບໍ່​ໄດ້​ມີ​ການ​ປ່ຽນ​ແປງ​. ໂດຍບໍ່ມີເຄື່ອງຫມາຍ %, ຕົວເລກຈະຖືກອ່ານເປັນສ່ວນຫນຶ່ງ, ດ້ວຍ a
ຈຸດທົດສະນິຍົມກ່ອນມັນ. Ie, -M5 ກາຍເປັນ 0.5, ແລະດັ່ງນັ້ນຈຶ່ງຄືກັນກັບ -M50%.
ເຊັ່ນດຽວກັນ, -M05 ແມ່ນຄືກັນກັບ -M5%. ເພື່ອຈຳກັດການກວດຫາການປ່ຽນຊື່ທີ່ແນ່ນອນ, ໃຫ້ໃຊ້ -M100%.
ດັດຊະນີຄວາມຄ້າຍຄືກັນໃນຕອນຕົ້ນແມ່ນ 50%.

-C[ ], --find-copies[= ]
ກວດ​ສອບ​ສໍາ​ເນົາ​ເຊັ່ນ​ດຽວ​ກັນ​ກັບ​ການ​ປ່ຽນ​ຊື່​. ເບິ່ງຕື່ມ --find-copies-harder. ຖ້າ n ຖືກລະບຸ, ມັນ
ມີ​ຄວາມ​ຫມາຍ​ດຽວ​ກັນ​ກັບ -M​ .

-- find-copies- harder
ສໍາລັບເຫດຜົນການປະຕິບັດ, ໂດຍຄ່າເລີ່ມຕົ້ນ, ທາງເລືອກ -C ຊອກຫາສໍາເນົາພຽງແຕ່ຖ້າໄຟລ໌ຕົ້ນສະບັບ
ຂອງສໍາເນົາໄດ້ຖືກດັດແກ້ໃນຊຸດການປ່ຽນແປງດຽວກັນ. ທຸງນີ້ເຮັດໃຫ້ຄໍາສັ່ງກວດກາ
ໄຟລ໌ທີ່ບໍ່ມີການດັດແກ້ເປັນຜູ້ສະຫມັກສໍາລັບແຫຼ່ງສໍາເນົາ. ນີ້ແມ່ນລາຄາແພງຫຼາຍ
ການດໍາເນີນງານສໍາລັບໂຄງການຂະຫນາດໃຫຍ່, ສະນັ້ນໃຊ້ມັນດ້ວຍຄວາມລະມັດລະວັງ. ໃຫ້ຫຼາຍກວ່າຫນຶ່ງທາງເລືອກ -C
ມີຜົນກະທົບດຽວກັນ.

-D, --irreversible-delete
ຍົກເລີກ preimage ສໍາລັບການລຶບ, ie ພິມພຽງແຕ່ header ແຕ່ບໍ່ແມ່ນຄວາມແຕກຕ່າງລະຫວ່າງ
preimage ແລະ /dev/null. patch ຜົນໄດ້ຮັບບໍ່ໄດ້ຫມາຍຄວາມວ່າຈະຖືກນໍາໃຊ້ກັບ patch ຫຼື
git ສະຫມັກ; ນີ້ແມ່ນພຽງແຕ່ສໍາລັບຜູ້ທີ່ຕ້ອງການພຽງແຕ່ສຸມໃສ່ການທົບທວນຄືນ
ຂໍ້ຄວາມຫຼັງຈາກການປ່ຽນແປງ. ນອກ​ຈາກ​ນັ້ນ​, ຜົນ​ຜະ​ລິດ​ແນ່​ນອນ​ວ່າ​ຂາດ​ຂໍ້​ມູນ​ພຽງ​ພໍ​ທີ່​ຈະ​
ນໍາໃຊ້ patch ດັ່ງກ່າວໃນທາງກັບກັນ, ເຖິງແມ່ນວ່າດ້ວຍຕົນເອງ, ເພາະສະນັ້ນຊື່ຂອງທາງເລືອກ.

ເມື່ອໃຊ້ຮ່ວມກັບ -B, ຍົກເວັ້ນ preimage ໃນສ່ວນການລຶບຂອງ a
ລຶບ/ສ້າງຄູ່.

-l
ຕົວເລືອກ -M ແລະ -C ຕ້ອງການເວລາປະມວນຜົນ O(n^2) ເຊິ່ງ n ແມ່ນຕົວເລກຂອງ
ເປົ້າໝາຍການປ່ຽນຊື່/ສຳເນົາທີ່ເປັນໄປໄດ້. ທາງ​ເລືອກ​ນີ້​ປ້ອງ​ກັນ​ການ​ກວດ​ສອບ​ການ​ປ່ຽນ​ຊື່ / ສໍາ​ເນົາ​ຈາກ​ການ​ແລ່ນ​
ຖ້າຈໍານວນເປົ້າຫມາຍການປ່ຽນຊື່ / ສໍາເນົາເກີນຈໍານວນທີ່ກໍານົດໄວ້.

--diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]
ເລືອກສະເພາະໄຟລ໌ທີ່ຖືກເພີ່ມ (A), ຄັດລອກ (C), ລົບ (D), ດັດແກ້ (M), ປ່ຽນຊື່
(R), ມີປະເພດຂອງເຂົາເຈົ້າ (ie ໄຟລ໌ປົກກະຕິ, symlink, submodule, ... ) ມີການປ່ຽນແປງ (T), ແມ່ນ
Unmerged (U), ແມ່ນ Unknown (X), ຫຼືໄດ້ມີການຈັບຄູ່ຂອງເຂົາເຈົ້າ Broken (B). ການປະສົມປະສານໃດໆ
ຂອງຕົວກອງ (ລວມທັງບໍ່ມີ) ສາມາດຖືກນໍາໃຊ້. ເມື່ອ * (ທັງໝົດ ຫຼືບໍ່ມີ) ຖືກເພີ່ມ
ຕໍ່ກັບການປະສົມປະສານ, ເສັ້ນທາງທັງໝົດຈະຖືກເລືອກ ຖ້າມີໄຟລ໌ໃດທີ່ກົງກັບອັນອື່ນ
ເງື່ອນໄຂໃນການປຽບທຽບ; ຖ້າບໍ່ມີໄຟລ໌ທີ່ກົງກັບເງື່ອນໄຂອື່ນໆ, ບໍ່ມີຫຍັງ
ຖືກຄັດເລືອກ.

-ສ
ຊອກຫາຄວາມແຕກຕ່າງທີ່ມີການປ່ຽນແປງຈໍານວນຂອງການປະກົດຕົວຂອງສາຍທີ່ລະບຸ
(ເຊັ່ນ: ການເພີ່ມ/ລຶບ) ໃນໄຟລ໌. ມີ​ຈຸດ​ປະ​ສົງ​ສໍາ​ລັບ​ການ​ນໍາ​ໃຊ້ scripter ໄດ້​.

ມັນເປັນປະໂຫຍດໃນເວລາທີ່ທ່ານກໍາລັງຊອກຫາບລັອກທີ່ແນ່ນອນຂອງລະຫັດ (ເຊັ່ນໂຄງສ້າງ), ແລະຕ້ອງການ
ເພື່ອ​ຈະ​ຮູ້​ຈັກ​ປະ​ຫວັດ​ສາດ​ຂອງ​ຕັນ​ນັ້ນ​ນັບ​ຕັ້ງ​ແຕ່​ມັນ​ເປັນ​ຄັ້ງ​ທໍາ​ອິດ​: ການ​ນໍາ​ໃຊ້​ຄຸນ​ນະ​ສົມ​ບັດ​
ເລື້ອຍໆເພື່ອໃຫ້ບລັອກທີ່ຫນ້າສົນໃຈໃນ preimage ກັບຄືນໄປບ່ອນ -S, ແລະສືບຕໍ່
ຈົນກ່ວາທ່ານໄດ້ຮັບສະບັບທໍາອິດຂອງຕັນ.

-ກ
ຊອກຫາຄວາມແຕກຕ່າງທີ່ຂໍ້ຄວາມ patch ມີເສັ້ນທີ່ເພີ່ມ / ເອົາອອກທີ່ກົງກັນ .

ເພື່ອສະແດງໃຫ້ເຫັນຄວາມແຕກຕ່າງລະຫວ່າງ -S --pickaxe-regex ແລະ -G , ພິ​ຈາ​ລະ​ນາ
ຄໍາຫມັ້ນສັນຍາທີ່ມີຄວາມແຕກຕ່າງຕໍ່ໄປນີ້ໃນໄຟລ໌ດຽວກັນ:

+ ກັບຄືນ !regexec(regexp, two->ptr, 1, ®match, 0);
...
- ຕີ = !regexec(regexp, mf2.ptr, 1, ®match, 0);

ໃນຂະນະທີ່ບັນທຶກ git -G"regexec\(regexp" ຈະສະແດງຄໍາຫມັ້ນສັນຍານີ້, git log -S"regexec\(regexp"
--pickaxe-regex ຈະບໍ່ (ເນື່ອງຈາກວ່າຈໍານວນຂອງການປະກົດຕົວຂອງ string ນັ້ນບໍ່ໄດ້
ປ່ຽນແປງ).

ເບິ່ງ ໝາກ ຂີ້ຫູດ ເຂົ້າໃນ gitdiffcore(7) ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.

--pickaxe-ທັງໝົດ
ເມື່ອ -S ຫຼື -G ພົບເຫັນການປ່ຽນແປງ, ສະແດງການປ່ຽນແປງທັງຫມົດໃນຊຸດການປ່ຽນແປງນັ້ນ, ບໍ່ພຽງແຕ່
ໄຟລ໌ທີ່ປະກອບດ້ວຍການປ່ຽນແປງໃນ .

--pickaxe-regex
ປິ່ນປົວພະຍາດ ມອບໃຫ້ -S ເປັນການຂະຫຍາຍ POSIX ປົກກະຕິເພື່ອໃຫ້ກົງກັນ.

-ອ
ຜົນຜະລິດ patch ໃນຄໍາສັ່ງທີ່ລະບຸໄວ້ໃນ , ເຊິ່ງມີເປືອກໂລກໜ່ວຍໜຶ່ງ
ຮູບ​ແບບ​ຕໍ່​ເສັ້ນ​. ອັນນີ້ overrides ຕົວແປການຕັ້ງຄ່າ diff.orderFile (ເບິ່ງ git-
config(1)). ເພື່ອຍົກເລີກ diff.orderFile, ໃຫ້ໃຊ້ -O/dev/null.

-R
ແລກປ່ຽນສອງວັດສະດຸປ້ອນ; ນັ້ນແມ່ນ, ສະແດງໃຫ້ເຫັນຄວາມແຕກຕ່າງຈາກ index ຫຼືໄຟລ໌ on-disk ກັບຕົ້ນໄມ້
ເນື້ອໃນ.

--ພີ່ນ້ອງ[= ]
ເມື່ອດໍາເນີນການຈາກໄດເລກະທໍລີຍ່ອຍຂອງໂຄງການ, ມັນສາມາດຖືກບອກໃຫ້ຍົກເວັ້ນການປ່ຽນແປງພາຍນອກ
ໄດເລກະທໍລີແລະສະແດງຊື່ເສັ້ນທາງທີ່ກ່ຽວຂ້ອງກັບມັນດ້ວຍທາງເລືອກນີ້. ໃນເວລາທີ່ທ່ານບໍ່ໄດ້ຢູ່ໃນ
ໄດເລກະທໍລີຍ່ອຍ (ຕົວຢ່າງ: ຢູ່ໃນບ່ອນເກັບມ້ຽນເປົ່າ), ທ່ານສາມາດຕັ້ງຊື່ໄດເລກະທໍລີຍ່ອຍທີ່ຈະເຮັດ
ຜົນ​ຜະ​ລິດ​ໂດຍ​ການ​ໃຫ້ a ເປັນການໂຕ້ຖຽງ.

-a, --text
ປະຕິບັດທຸກໄຟລ໌ເປັນຂໍ້ຄວາມ.

--ignore-space-at-eol
ບໍ່ສົນໃຈການປ່ຽນແປງໃນຊ່ອງຫວ່າງຢູ່ EOL.

-b, --ignore-space-change
ບໍ່ສົນໃຈການປ່ຽນແປງຈໍານວນຊ່ອງຫວ່າງ. ນີ້ລະເລີຍຊ່ອງຫວ່າງຢູ່ທ້າຍແຖວ, ແລະ
ພິ​ຈາ​ລະ​ນາ​ລໍາ​ດັບ​ອື່ນໆ​ທັງ​ຫມົດ​ຂອງ​ຫນຶ່ງ​ຫຼື​ຫຼາຍ​ຕົວ​ອັກ​ສອນ whitespace ຈະ​ເທົ່າ​ທຽມ​ກັນ​.

-w, --ignore-all-space
ບໍ່ສົນໃຈຊ່ອງຫວ່າງເມື່ອປຽບທຽບເສັ້ນ. ນີ້ບໍ່ສົນໃຈຄວາມແຕກຕ່າງເຖິງແມ່ນວ່າເສັ້ນຫນຶ່ງມີ
ຊ່ອງຫວ່າງທີ່ແຖວອື່ນບໍ່ມີ.

--ignore-blank-lines
ບໍ່ສົນໃຈການປ່ຽນແປງຂອງແຖວທັງໝົດແມ່ນຫວ່າງເປົ່າ.

--inter-hunk-context=
ສະ​ແດງ​ເນື້ອ​ໃນ​ລະ​ຫວ່າງ diff hunks​, ເຖິງ​ຈໍາ​ນວນ​ທີ່​ກໍາ​ນົດ​ໄວ້​ຂອງ​ເສັ້ນ​, ສະ​ນັ້ນ​
fusing hunks ທີ່ຢູ່ໃກ້ກັບກັນແລະກັນ.

-W, --function-context
ສະແດງຫນ້າທີ່ອ້ອມຂ້າງທັງຫມົດຂອງການປ່ຽນແປງ.

--exit-code
ເຮັດໃຫ້ໂຄງການອອກດ້ວຍລະຫັດທີ່ຄ້າຍຄືກັນກັບ diff(1). ນັ້ນແມ່ນ, ມັນອອກຈາກ 1 ຖ້າມີ
ແມ່ນຄວາມແຕກຕ່າງແລະ 0 ຫມາຍຄວາມວ່າບໍ່ມີຄວາມແຕກຕ່າງ.

--ງຽບ
ປິດ​ການ​ທໍາ​ງານ​ຜົນ​ຜະ​ລິດ​ທັງ​ຫມົດ​ຂອງ​ໂຄງ​ການ​. ຫມາຍເຖິງ --exit-code.

--ext-diff
ອະນຸຍາດໃຫ້ປະຕິບັດຕົວຊ່ວຍຄວາມແຕກຕ່າງພາຍນອກ. ຖ້າ​ຫາກ​ວ່າ​ທ່ານ​ກໍາ​ນົດ​ການ​ຂັບ​ລົດ​ຄວາມ​ແຕກ​ຕ່າງ​ພາຍ​ນອກ​ກັບ​
gitattributes(5), ທ່ານຈໍາເປັນຕ້ອງໃຊ້ທາງເລືອກນີ້ກັບ git-log(1) ແລະຫມູ່ເພື່ອນ.

--no-ext-diff
ບໍ່ອະນຸຍາດໄດເວີທີ່ແຕກຕ່າງພາຍນອກ.

--textconv, --no-textconv
ອະ​ນຸ​ຍາດ​ໃຫ້ (ຫຼື​ບໍ່​ອະ​ນຸ​ຍາດ​ໃຫ້​) ຕົວ​ກັ່ນ​ຕອງ​ການ​ປ່ຽນ​ແປງ​ຂໍ້​ຄວາມ​ພາຍ​ນອກ​ໄດ້​ຮັບ​ການ​ແລ່ນ​ໃນ​ເວ​ລາ​ທີ່​ການ​ປຽບ​ທຽບ​ຖານ​ສອງ​
ໄຟລ໌. ເບິ່ງ gitattributes(5) ສໍາລັບລາຍລະອຽດ. ເນື່ອງຈາກວ່າຕົວກອງ textconv ໂດຍປົກກະຕິແມ່ນ a
ການຫັນປ່ຽນທາງດຽວ, ຄວາມແຕກຕ່າງຜົນໄດ້ຮັບແມ່ນເຫມາະສົມສໍາລັບການບໍລິໂພກຂອງມະນຸດ, ແຕ່ບໍ່ສາມາດ
ນຳໃຊ້. ສໍາລັບເຫດຜົນນີ້, ຕົວກອງ textconv ຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນພຽງແຕ່ສໍາລັບ git-
diff(1) ແລະ git-log(1), ແຕ່ບໍ່ແມ່ນສໍາລັບ git-format-patch(1​) ຫຼື​ຄໍາ​ສັ່ງ​ປະ​ປາ​ທີ່​ແຕກ​ຕ່າງ​ກັນ​.

--ignore-submodules[= ]
ບໍ່ສົນໃຈການປ່ຽນແປງຕໍ່ໂມດູນຍ່ອຍໃນການຜະລິດທີ່ແຕກຕ່າງ. ສາມາດເປັນ "ບໍ່ມີ",
"untracked", "ເປື້ອນ" ຫຼື "ທັງຫມົດ", ເຊິ່ງເປັນຄ່າເລີ່ມຕົ້ນ. ການນໍາໃຊ້ "none" ຈະພິຈາລະນາ
ໂມດູນຍ່ອຍຖືກແກ້ໄຂເມື່ອມັນມີໄຟລ໌ທີ່ບໍ່ໄດ້ຕິດຕາມ ຫຼືຖືກແກ້ໄຂ ຫຼື HEAD ຂອງມັນ
ແຕກຕ່າງຈາກຄໍາຫມັ້ນສັນຍາທີ່ບັນທຶກໄວ້ໃນ superproject ແລະສາມາດຖືກນໍາໃຊ້ເພື່ອ override ໃດ
ການ​ຕັ້ງ​ຄ່າ​ຂອງ​ ບໍ່ສົນໃຈ option in git-config(1) ຫຼື gitmodules(5). ໃນເວລາທີ່ "untracked" ແມ່ນ
ໂມດູນຍ່ອຍທີ່ໃຊ້ແລ້ວບໍ່ໄດ້ຖືກພິຈາລະນາວ່າເປື້ອນເມື່ອພວກມັນມີພຽງແຕ່ເນື້ອຫາທີ່ບໍ່ໄດ້ຮັບການຕິດຕາມ (ແຕ່
ພວກມັນຍັງຖືກສະແກນຫາເນື້ອຫາດັດແກ້). ການນໍາໃຊ້ "ເປື້ອນ" ບໍ່ສົນໃຈການປ່ຽນແປງທັງຫມົດຕໍ່ກັບ
ເປັນໄມ້ຢືນຕົ້ນການເຮັດວຽກຂອງ submodules, ພຽງແຕ່ການປ່ຽນແປງ commits ເກັບຮັກສາໄວ້ໃນ superproject ແມ່ນ
ສະແດງໃຫ້ເຫັນ (ນີ້ແມ່ນພຶດຕິກໍາຈົນກ່ວາ 1.7.0). ການໃຊ້ "ທັງໝົດ" ເຊື່ອງການປ່ຽນແປງທັງໝົດ
ໂມດູນຍ່ອຍ.

--src-prefix=
ສະແດງຄຳນຳໜ້າແຫຼ່ງທີ່ມາແທນ "a/".

--dst-prefix=
ສະແດງຄຳນຳໜ້າປາຍທາງທີ່ໃຫ້ມາແທນ "b/".

--no-prefix
ຢ່າສະແດງແຫຼ່ງທີ່ມາ ຫຼືຄຳນຳໜ້າປາຍທາງ.

ສໍາລັບຄໍາອະທິບາຍລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບທາງເລືອກທົ່ວໄປເຫຼົ່ານີ້, ເບິ່ງເຊັ່ນກັນ gitdiffcore(7).


id ຂອງວັດຖຸຕົ້ນໄມ້ເພື່ອຄວາມແຕກຕ່າງກັບ.

--cached
ຢ່າພິຈາລະນາໄຟລ໌ເທິງແຜ່ນເລີຍ

-m
ໂດຍຄ່າເລີ່ມຕົ້ນ, ໄຟລ໌ທີ່ບັນທຶກໄວ້ໃນດັດຊະນີແຕ່ບໍ່ໄດ້ເຊັກເອົາອອກຈະຖືກລາຍງານວ່າຖືກລຶບ.
ທຸງນີ້ເຮັດໃຫ້ ໄປ ດັດຊະນີຄວາມແຕກຕ່າງ ບອກວ່າໄຟລ໌ທີ່ບໍ່ໄດ້ເຊັກເອົາທັງໝົດແມ່ນອັບເດດແລ້ວ.

RAW OUTPUT ຮູບແບບ


ຮູບແບບຜົນຜະລິດດິບຈາກ "git-diff-index", "git-diff-tree", "git-diff-files" ແລະ "git
diff --raw" ແມ່ນຄ້າຍຄືກັນຫຼາຍ.

ຄໍາສັ່ງເຫຼົ່ານີ້ທັງຫມົດປຽບທຽບສອງຊຸດຂອງສິ່ງຕ່າງໆ; ການ​ປຽບ​ທຽບ​ທີ່​ແຕກ​ຕ່າງ​ກັນ​:

git-diff-index
ປຽບທຽບ ແລະໄຟລ໌ໃນລະບົບໄຟລ໌.

git-diff-index --cached
ປຽບທຽບ ແລະດັດຊະນີ.

git-diff-tree [-r] [ ...]
ປຽບທຽບຕົ້ນໄມ້ທີ່ມີຊື່ໂດຍການໂຕ້ຖຽງທັງສອງ.

git-diff-files [ ...]
ປຽບທຽບດັດຊະນີແລະໄຟລ໌ໃນລະບົບໄຟລ໌.

ຄໍາສັ່ງ "git-diff-tree" ເລີ່ມຕົ້ນຜົນຜະລິດຂອງມັນໂດຍການພິມ hash ຂອງສິ່ງທີ່ເປັນ
ປຽບທຽບ. ຫຼັງຈາກນັ້ນ, ຄໍາສັ່ງທັງຫມົດພິມຫນຶ່ງເສັ້ນຜົນຜະລິດຕໍ່ໄຟລ໌ທີ່ມີການປ່ຽນແປງ.

ເສັ້ນຜົນຜະລິດຖືກຈັດຮູບແບບດ້ວຍວິທີນີ້:

ການແກ້ໄຂໃນສະຖານທີ່: 100644 100644 bcd1234... 0123456... M file0
copy-edit :100644 100644 abcd123... 1234567... C68 file1 file2
rename-edit :100644 100644 abcd123... 1234567... R86 file1 file3
ສ້າງ :000000 100644 0000000... 1234567... A file4
ລຶບ :100644 000000 1234567... 0000000... D file5
unmerged : 000000 000000 0000000... 0000000... U file6

ນັ້ນແມ່ນ, ຈາກຊ້າຍຫາຂວາ:

1. ຈໍ້າສອງເມັດ.

2. ໂຫມດສໍາລັບ "src"; 000000 ຖ້າ​ຫາກ​ວ່າ​ການ​ສ້າງ​ຫຼື unmerged​.

3. ຊ່ອງ.

4. ໂຫມດສໍາລັບ "dst"; 000000 ຖ້າ​ຫາກ​ວ່າ​ການ​ລົບ​ຫຼື​ບໍ່​ລວມ​.

5. ຊ່ອງ.

6. sha1 ສໍາລັບ "src"; 0{40} ຖ້າ​ຫາກ​ວ່າ​ການ​ສ້າງ​ຫຼື​ບໍ່​ລວມ​.

7. ຊ່ອງ.

8. sha1 ສໍາລັບ "dst"; 0{40} ຖ້າ​ຫາກ​ວ່າ​ການ​ສ້າງ, unmerged ຫຼື "ເບິ່ງ​ຕົ້ນ​ໄມ້​ທີ່​ເຮັດ​ວຽກ".

9. ຊ່ອງ.

10. ສະຖານະພາບ, ປະຕິບັດຕາມໂດຍທາງເລືອກ "ຄະແນນ" ຈໍານວນ.

11. ແຖບ ຫຼື NUL ເມື່ອ -z ທາງເລືອກແມ່ນຖືກນໍາໃຊ້.

12. ເສັ້ນທາງສໍາລັບ "src"

13. ແຖບ ຫຼື NUL ເມື່ອ -z ທາງເລືອກແມ່ນຖືກນໍາໃຊ້; ມີພຽງແຕ່ສໍາລັບ C ຫຼື R.

14. ເສັ້ນທາງສໍາລັບ "dst"; ມີພຽງແຕ່ສໍາລັບ C ຫຼື R.

15. LF ຫຼື NUL ເມື່ອ -z ທາງເລືອກແມ່ນຖືກນໍາໃຊ້, ເພື່ອຢຸດການບັນທຶກ.

ຕົວອັກສອນສະຖານະພາບທີ່ເປັນໄປໄດ້ແມ່ນ:

· A: ການເພີ່ມໄຟລ໌

· C: ສໍາເນົາໄຟລ໌ເຂົ້າໄປໃນອັນໃຫມ່

· D: ການລຶບໄຟລ໌

· M: ການດັດແກ້ເນື້ອຫາຫຼືຮູບແບບຂອງໄຟລ໌

· R: ການປ່ຽນຊື່ໄຟລ໌

· T: ການປ່ຽນແປງປະເພດຂອງໄຟລ໌

· U​: ໄຟລ​໌​ແມ່ນ unmerged (ທ່ານ​ຕ້ອງ​ເຮັດ​ສໍາ​ເລັດ​ການ​ລວມ​ກ່ອນ​ທີ່​ຈະ​ສາ​ມາດ​ເຮັດ​ໄດ້​)

· X: "ບໍ່ຮູ້ຈັກ" ປະເພດການປ່ຽນແປງ (ສ່ວນຫຼາຍອາດຈະເປັນແມງໄມ້, ກະລຸນາລາຍງານມັນ)

ຕົວອັກສອນສະຖານະ C ແລະ R ແມ່ນຕິດຕາມດ້ວຍຄະແນນສະເໝີ (ໝາຍເຖິງອັດຕາສ່ວນຂອງ
ຄວາມຄ້າຍຄືກັນລະຫວ່າງແຫຼ່ງແລະເປົ້າຫມາຍຂອງການເຄື່ອນຍ້າຍຫຼືສໍາເນົາ). ຕົວອັກສອນສະຖານະພາບ M ອາດຈະເປັນ
ຕິດຕາມດ້ວຍຄະແນນ (ສະແດງເຖິງອັດຕາສ່ວນຂອງຄວາມຄ້າຍຄືກັນ) ສໍາລັບການຂຽນຄືນໄຟລ໌.

ສະແດງໃຫ້ເຫັນເປັນ 1's ທັງຫມົດຖ້າໄຟລ໌ໃຫມ່ຢູ່ໃນລະບົບໄຟລ໌ແລະມັນອອກຈາກ sync ກັບ
ດັດຊະນີ.

ຕົວຢ່າງ:

:100644 100644 5be4a4...... 000000...... M file.c

ເມື່ອຕົວເລືອກ -z ບໍ່ໄດ້ໃຊ້, TAB, LF, ແລະຕົວອັກສອນ backslash ໃນຊື່ເສັ້ນທາງແມ່ນເປັນຕົວແທນ
ເປັນ \t, \n, ແລະ \\, ຕາມລໍາດັບ.

DIFF ຮູບແບບ FOR ຮວມ


"git-diff-tree", "git-diff-files" ແລະ "git-diff --raw" ສາມາດເອົາ. -c or --cc ທາງເລືອກທີ່ຈະ
ສ້າງຜົນຜະລິດທີ່ແຕກຕ່າງສໍາລັບ merge commits. ຜົນຜະລິດແຕກຕ່າງຈາກຮູບແບບທີ່ໄດ້ອະທິບາຍ
ຂ້າງເທິງດ້ວຍວິທີຕໍ່ໄປນີ້:

1. ມີຈໍ້າສອງເມັດສໍາລັບພໍ່ແມ່ແຕ່ລະຄົນ

2. ມີໂຫມດ "src" ແລະ "src" sha1 ຫຼາຍ

3. ສະຖານະພາບແມ່ນ concatenated ລັກສະນະສະຖານະພາບສໍາລັບພໍ່ແມ່ແຕ່ລະຄົນ

4. ບໍ່ມີທາງເລືອກ "ຄະແນນ" ຈໍານວນ

5. ເສັ້ນທາງດຽວ, ພຽງແຕ່ສໍາລັບ "dst"

ຕົວຢ່າງ:

::100644 100644 100644 fabadb8... cc95eb0... 4866510... MM describe.c

ໃຫ້ສັງເກດວ່າ ການອະນຸຍາດ diff ລາຍຊື່ພຽງແຕ່ໄຟລ໌ທີ່ຖືກດັດແກ້ຈາກພໍ່ແມ່ທັງຫມົດ.

ການຜະລິດ ບັດ ກັບ -P


ເມື່ອ "git-diff-index", "git-diff-tree", ຫຼື "git-diff-files" ຖືກແລ່ນດ້ວຍ -p ທາງເລືອກ, "git
ຄວາມແຕກຕ່າງ" ໂດຍບໍ່ມີການ -- ດິບ ທາງເລືອກ, ຫຼື "git log" ທີ່ມີທາງເລືອກ "-p", ພວກເຂົາບໍ່ໄດ້ຜະລິດ
ຜົນຜະລິດທີ່ໄດ້ອະທິບາຍຂ້າງເທິງ; ແທນທີ່ຈະພວກເຂົາຜະລິດໄຟລ໌ patch. ທ່ານສາມາດປັບແຕ່ງການສ້າງ
ຂອງ patches ດັ່ງກ່າວຜ່ານ GIT_EXTERNAL_DIFF ແລະຕົວແປສະພາບແວດລ້ອມ GIT_DIFF_OPTS.

ສິ່ງທີ່ທາງເລືອກ -p ຜະລິດແມ່ນແຕກຕ່າງກັນເລັກນ້ອຍຈາກຮູບແບບຄວາມແຕກຕ່າງແບບດັ້ງເດີມ:

1. ມັນນຳໜ້າດ້ວຍສ່ວນຫົວ "git diff" ທີ່ມີລັກສະນະດັ່ງນີ້:

diff --git a/file1 b/file2

ຊື່ໄຟລ໌ a/ ແລະ b/ ແມ່ນຄືກັນເວັ້ນເສຍແຕ່ວ່າມີການປ່ຽນຊື່/ສຳເນົາ. ໂດຍສະເພາະ, ເຖິງແມ່ນວ່າ
ສໍາລັບການສ້າງຫຼືການລຶບ, /dev/null ແມ່ນ ບໍ່ ໃຊ້ແທນ a/ ຫຼື b/
ຊື່ໄຟລ໌.

ເມື່ອການປ່ຽນຊື່ / ສໍາເນົາມີສ່ວນຮ່ວມ, file1 ແລະ file2 ສະແດງຊື່ຂອງໄຟລ໌ຕົ້ນສະບັບຂອງ
rename/copy ແລະຊື່ຂອງໄຟລ໌ທີ່ rename/copy ຜະລິດ, ຕາມລໍາດັບ.

2. ມັນຖືກຕິດຕາມດ້ວຍເສັ້ນສ່ວນຫົວທີ່ຂະຫຍາຍອອກໜຶ່ງ ຫຼືຫຼາຍກວ່ານັ້ນ:

ຮູບແບບເກົ່າ
ໂໝດໃໝ່
ຮູບແບບໄຟລ໌ທີ່ຖືກລົບ
ຮູບ​ແບບ​ໄຟລ​໌​ໃຫມ່​
ສຳເນົາຈາກ
ສຳເນົາໃສ່
ປ່ຽນຊື່ຈາກ
ປ່ຽນຊື່ເປັນ
ດັດຊະນີຄວາມຄ້າຍຄືກັນ
ດັດຊະນີຄວາມແຕກຕ່າງກັນ
ດັດຊະນີ ..

ຮູບແບບໄຟລ໌ຖືກພິມອອກເປັນຕົວເລກ 6 ຕົວເລກລວມທັງປະເພດໄຟລ໌ ແລະໄຟລ໌
bits ການ​ອະ​ນຸ​ຍາດ​.

ຊື່ເສັ້ນທາງໃນສ່ວນຫົວທີ່ຂະຫຍາຍບໍ່ລວມເອົາຄໍານໍາໜ້າ a/ ແລະ b/.

ດັດຊະນີຄວາມຄ້າຍຄືກັນແມ່ນອັດຕາສ່ວນຂອງເສັ້ນທີ່ບໍ່ປ່ຽນແປງ, ແລະດັດຊະນີຄວາມຄ້າຍຄືກັນ
ແມ່ນອັດຕາສ່ວນຂອງສາຍທີ່ມີການປ່ຽນແປງ. ມັນ​ເປັນ​ຈຳນວນ​ເຕັມ​ທີ່​ມົນ​ລົງ, ຖັດ​ມາ​ດ້ວຍ a
ເຊັນສ່ວນຮ້ອຍ. ມູນຄ່າດັດຊະນີຄວາມຄ້າຍຄືກັນຂອງ 100% ດັ່ງນັ້ນຈຶ່ງສະຫງວນໄວ້ສໍາລັບສອງໄຟລ໌ເທົ່າທຽມກັນ,
ໃນຂະນະທີ່ 100% dissimilarity ຫມາຍຄວາມວ່າບໍ່ມີສາຍຈາກໄຟລ໌ເກົ່າເຮັດໃຫ້ມັນເຂົ້າໄປໃນໃຫມ່
ຫນຶ່ງ.

ເສັ້ນດັດສະນີປະກອບມີການກວດສອບ SHA-1 ກ່ອນແລະຫຼັງການປ່ຽນແປງ. ໄດ້ ແມ່ນ
ລວມຖ້າຮູບແບບໄຟລ໌ບໍ່ປ່ຽນແປງ; ຖ້າບໍ່ດັ່ງນັ້ນ, ສາຍແຍກຕ່າງຫາກຊີ້ໃຫ້ເຫັນຄວາມເກົ່າ
ແລະ​ຮູບ​ແບບ​ໃຫມ່​.

3. TAB, LF, double quote ແລະ backslash ຕົວອັກສອນໃນ pathnames ແມ່ນສະແດງເປັນ \t, \n,
\" ແລະ \\, ຕາມລໍາດັບ, ຖ້າມີຄວາມຈໍາເປັນສໍາລັບການທົດແທນດັ່ງກ່າວ, ທັງຫມົດ
ຊື່ເສັ້ນທາງຖືກໃສ່ໃນວົງຢືມສອງເທົ່າ.

4. ທັງຫມົດໄຟລ໌ file1 ໃນຜົນຜະລິດຫມາຍເຖິງໄຟລ໌ກ່ອນທີ່ຈະຄໍາຫມັ້ນສັນຍາ, ແລະທັງຫມົດ file2
ໄຟລ໌ອ້າງອີງເຖິງໄຟລ໌ຫຼັງຈາກຄໍາຫມັ້ນສັນຍາ. ມັນບໍ່ຖືກຕ້ອງທີ່ຈະນໍາໃຊ້ການປ່ຽນແປງແຕ່ລະອັນ
ໄຟລ໌ຕາມລໍາດັບ. ສໍາລັບຕົວຢ່າງ, patch ນີ້ຈະແລກປ່ຽນ a ແລະ b:

diff --git a/ab/b
ປ່ຽນຊື່ຈາກ ກ
ປ່ຽນຊື່ເປັນ ຂ
diff --git a/bb/a
ປ່ຽນຊື່ຈາກ ຂ
ປ່ຽນຊື່ເປັນ ກ

ຮ່ວມ DIFF ຮູບແບບ


ຄຳສັ່ງທີ່ສ້າງຄວາມແຕກຕ່າງໃດໜຶ່ງສາມາດເອົາຕົວເລືອກ -c ຫຼື --cc ເພື່ອຜະລິດ a ການອະນຸຍາດ diff ໃນເວລາທີ່
ສະ​ແດງ​ໃຫ້​ເຫັນ​ການ​ລວມ​. ນີ້​ແມ່ນ​ຮູບ​ແບບ​ມາດ​ຕະ​ຖານ​ໃນ​ເວ​ລາ​ທີ່​ສະ​ແດງ​ໃຫ້​ເຫັນ​ການ​ລວມ​ເຂົ້າ​ກັບ​ git-diff(1) ຫຼື git-
ສະແດງໃຫ້ເຫັນ(1). ໃຫ້ສັງເກດວ່າທ່ານສາມາດໃຫ້ທາງເລືອກ -m ກັບຄໍາສັ່ງໃດໆເຫຼົ່ານີ້ເພື່ອບັງຄັບ
ການສ້າງຄວາມແຕກຕ່າງກັບພໍ່ແມ່ສ່ວນບຸກຄົນຂອງການປະສົມປະສານ.

A ການອະນຸຍາດ diff ຮູບ​ແບບ​ເບິ່ງ​ຄື​ນີ້​:

diff --combined describe.c
ດັດຊະນີ fabadb8,cc95eb0..4866510
--- a/describe.c
+++ b/describe.c
@@@ -98,20 -98,12 +98,20 @@@
ກັບຄືນ (a_date> b_date) ? -1 : (a_date == b_date) ? 0:1;
}

- static void describe (char *arg)
-static void describe(struct commit *cmit, int last_one)
++ static void describe(char *arg, int last_one)
{
+ unsigned char sha1[20];
+ ໂຄງສ້າງ commit *cmit;
struct commit_list *list;
static int initialized = 0;
struct commit_name *n;

+ ຖ້າ (get_sha1(arg, sha1) < 0)
+ ການ​ນໍາ​ໃຊ້ (describe_usage​)​;
+ cmit = lookup_commit_reference(sha1);
+ ຖ້າ (!cmit)
+ ການ​ນໍາ​ໃຊ້ (describe_usage​)​;
+
ຖ້າ (!initialized) {
initialized = 1;
for_each_ref(get_name);

1. ມັນຖືກນໍາຫນ້າດ້ວຍສ່ວນຫົວ "git diff", ເຊິ່ງເບິ່ງຄືວ່ານີ້ (ເມື່ອ -c ທາງເລືອກແມ່ນ
ໃຊ້):

diff --combined ໄຟລ໌

ຫຼືມັກອັນນີ້ (ເມື່ອ --cc ທາງ​ເລືອກ​ແມ່ນ​ການ​ນໍາ​ໃຊ້​)​:

diff --cc ໄຟລ໌

2. ມັນຖືກປະຕິບັດຕາມໂດຍຫນຶ່ງຫຼືຫຼາຍເສັ້ນ header ຂະຫຍາຍ (ຕົວຢ່າງນີ້ສະແດງໃຫ້ເຫັນ merge ກັບ
ສອງ​ພໍ່​ແມ່​)​:

ດັດຊະນີ , ..
ໂໝດ , ..
ຮູບ​ແບບ​ໄຟລ​໌​ໃຫມ່​
ຮູບແບບໄຟລ໌ທີ່ຖືກລົບ ,

ໂໝດ , .. ເສັ້ນປາກົດພຽງແຕ່ຖ້າຢ່າງຫນ້ອຍຫນຶ່ງຂອງ ແມ່ນ
ແຕກຕ່າງຈາກສ່ວນທີ່ເຫຼືອ. ສ່ວນຫົວຂະຫຍາຍດ້ວຍຂໍ້ມູນກ່ຽວກັບເນື້ອຫາທີ່ກວດພົບ
ການ​ເຄື່ອນ​ໄຫວ (ການ​ປ່ຽນ​ຊື່​ແລະ​ການ​ກວດ​ສອບ​ການ​ສໍາ​ເນົາ​) ໄດ້​ຖືກ​ອອກ​ແບບ​ເພື່ອ​ເຮັດ​ວຽກ​ຮ່ວມ​ກັບ​ຄວາມ​ແຕກ​ຕ່າງ​ຂອງ​ສອງ​
ແລະບໍ່ຖືກນໍາໃຊ້ໂດຍຮູບແບບຄວາມແຕກຕ່າງລວມ.

3. ມັນ​ແມ່ນ​ປະ​ຕິ​ບັດ​ຕາມ​ດ້ວຍ​ສອງ​ແຖວ​ຈາກ​ໄຟລ​໌ / ກັບ​ໄຟລ​໌ header​

--- a/file
+++ b/file

ຄ້າຍຄືກັນກັບຫົວສອງແຖວສຳລັບແບບດັ້ງເດີມ ເປັນເອກະພາບ diff format, /dev/null ຖືກໃຊ້ເພື່ອ
ສັນຍານທີ່ສ້າງຫຼືລຶບໄຟລ໌.

4. ຮູບ​ແບບ​ຫົວ​ຂໍ້ Chuk ຖືກ​ດັດ​ແກ້​ເພື່ອ​ປ້ອງ​ກັນ​ບໍ່​ໃຫ້​ປະ​ຊາ​ຊົນ​ຈາກ​ອຸ​ບັດ​ຕິ​ເຫດ​ໃຫ້​ອາ​ຫານ​ມັນ​
patch -p1. ຮູບ​ແບບ​ຄວາມ​ແຕກ​ຕ່າງ​ລວມ​ໄດ້​ຖືກ​ສ້າງ​ຕັ້ງ​ຂື້ນ​ສໍາ​ລັບ​ການ​ທົບ​ທວນ​ຄືນ​ການ​ປ່ຽນ​ແປງ​ການ​ຜະ​ສົມ​ຜະ​ສານ​, ແລະ​
ບໍ່ໄດ້ຫມາຍເຖິງການສະຫມັກ. ການປ່ຽນແປງແມ່ນຄ້າຍຄືກັນກັບການປ່ຽນແປງໃນການຂະຫຍາຍ ດັດຊະນີ
ຫົວ:

@@@ @@@

ມີ (ຈໍານວນພໍ່ແມ່ + 1) @ ຕົວອັກສອນຢູ່ໃນສ່ວນຫົວຂອງ chunk ສໍາລັບຄວາມແຕກຕ່າງລວມ
ຮູບແບບ.

ຕ່າງຈາກປະເພນີ ເປັນເອກະພາບ diff format, ເຊິ່ງສະແດງໃຫ້ເຫັນສອງໄຟລ໌ A ແລະ B ກັບອັນດຽວ
ຖັນທີ່ມີ - (ລົບ — ປາກົດຢູ່ໃນ A ແຕ່ເອົາອອກໃນ B), + (ບວກ — ຂາດຢູ່ໃນ A ແຕ່
ເພີ່ມໃສ່ B), ຫຼື " " (space — unchanged) prefix, ຮູບແບບນີ້ປຽບທຽບສອງໄຟລ໌ ຫຼືຫຼາຍກວ່ານັ້ນ
file1, file2,... ກັບໄຟລ໌ X, ແລະສະແດງໃຫ້ເຫັນວ່າ X ແຕກຕ່າງກັນແນວໃດຈາກແຕ່ລະ fileN. ຫນຶ່ງຖັນ
ສໍາລັບແຕ່ລະ fileN ແມ່ນ prepended ກັບເສັ້ນຜົນຜະລິດເພື່ອສັງເກດວ່າເສັ້ນຂອງ X ແຕກຕ່າງຈາກແນວໃດ
ມັນ.

A - ຕົວອັກສອນໃນຖັນ N ຫມາຍຄວາມວ່າເສັ້ນປາກົດຢູ່ໃນ fileN ແຕ່ມັນບໍ່ປາກົດ
ໃນຜົນໄດ້ຮັບ. A + ຕົວອັກສອນໃນຖັນ N ຫມາຍຄວາມວ່າເສັ້ນປາກົດຢູ່ໃນຜົນໄດ້ຮັບ,
ແລະ fileN ບໍ່ມີເສັ້ນນັ້ນ (ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ເສັ້ນໄດ້ຖືກເພີ່ມ, ຈາກຈຸດ
ທັດສະນະຂອງພໍ່ແມ່).

ໃນຜົນໄດ້ຮັບຕົວຢ່າງຂ້າງເທິງ, ລາຍເຊັນຂອງຫນ້າທີ່ໄດ້ຖືກປ່ຽນຈາກທັງສອງໄຟລ໌ (ເພາະສະນັ້ນສອງ
- ການຖອນອອກຈາກທັງ file1 ແລະ file2, ບວກ ++ ເພື່ອຫມາຍຄວາມວ່າຫນຶ່ງແຖວທີ່ຖືກເພີ່ມບໍ່ໄດ້
ປາກົດຢູ່ໃນ file1 ຫຼື file2). ນອກຈາກນີ້ອີກແປດສາຍແມ່ນຄືກັນຈາກ file1 ແຕ່ເຮັດ
ບໍ່ປາກົດຢູ່ໃນ file2 (ເພາະສະນັ້ນຄໍານໍາຫນ້າດ້ວຍ +).

ເມື່ອສະແດງໂດຍ git diff-tree -c, ມັນປຽບທຽບພໍ່ແມ່ຂອງຄໍາຫມັ້ນສັນຍາ merge ກັບ merge.
ຜົນໄດ້ຮັບ (ie file1..fileN ແມ່ນພໍ່ແມ່). ເມື່ອສະແດງໂດຍ git diff-files -c, ມັນປຽບທຽບ
ທັງສອງພໍ່ແມ່ທີ່ບໍ່ໄດ້ຮັບການແກ້ໄຂ merge ກັບໄຟລ໌ຕົ້ນໄມ້ທີ່ເຮັດວຽກ (ie file1 ແມ່ນຂັ້ນຕອນທີ 2 aka
"ສະບັບຂອງພວກເຮົາ", file2 ແມ່ນຂັ້ນຕອນທີ 3 aka "ສະບັບຂອງພວກເຂົາ").

ອື່ນໆ DIFF ຮູບແບບ


ທາງເລືອກ --summary ອະທິບາຍໄຟລ໌ທີ່ເພີ່ມໃຫມ່, ລຶບ, ປ່ຽນຊື່ແລະຄັດລອກໄຟລ໌. ສະຖິຕິ
ທາງເລືອກເພີ່ມ ຕ່າງກັນ(1) ເສັ້ນສະແດງຜົນອອກ. ທາງເລືອກເຫຼົ່ານີ້ສາມາດຖືກລວມເຂົ້າກັບອື່ນໆ
ທາງເລືອກ, ເຊັ່ນ -p, ແລະແມ່ນຫມາຍເຖິງການບໍລິໂພກຂອງມະນຸດ.

ເມື່ອສະແດງການປ່ຽນແປງທີ່ກ່ຽວຂ້ອງກັບການປ່ຽນຊື່ຫຼືສໍາເນົາ, --stat ຮູບແບບຜົນຜະລິດ
pathnames ຢ່າງຫນາແຫນ້ນໂດຍການລວມເອົາຄໍານໍາຫນ້າທົ່ວໄປແລະຄໍາຕໍ່ທ້າຍຂອງຊື່ເສັ້ນທາງ. ຕົວຢ່າງ, ກ
ການປ່ຽນແປງທີ່ຍ້າຍ arch / i386 / Makefile ເປັນ arch / x86 / Makefile ໃນຂະນະທີ່ດັດແກ້ 4 ແຖວຈະເປັນ
ສະ​ແດງ​ໃຫ້​ເຫັນ​ດັ່ງ​ນີ້​:

arch/{i386 => x86}/Makefile | 4 +--

ທາງເລືອກ --numstat ໃຫ້ ຕ່າງກັນ(1​) ຂໍ້​ມູນ​ແຕ່​ໄດ້​ຖືກ​ອອກ​ແບບ​ສໍາ​ລັບ​ເຄື່ອງ​ທີ່​ງ່າຍ​ຂຶ້ນ​
ການບໍລິໂພກ. ການປ້ອນຂໍ້ມູນໃນ --numstat output ເບິ່ງຄືວ່ານີ້:

1 2 README
3 1 arch/{i386 => x86}/Makefile

ນັ້ນແມ່ນ, ຈາກຊ້າຍຫາຂວາ:

1. ຈໍານວນຂອງສາຍທີ່ເພີ່ມ;

2. ແຖບ;

3. ຈໍານວນຂອງສາຍທີ່ຖືກລົບ;

4. ແຖບ;

5. ຊື່ເສັ້ນທາງ (ອາດຈະປ່ຽນຊື່/ສຳເນົາຂໍ້ມູນ);

6. ແຖວໃໝ່.

ເມື່ອ​ທາງ​ເລືອກ​ຜົນ​ຜະ​ລິດ -z ມີ​ຜົນ​ກະ​ທົບ​, ຜົນ​ຜະ​ລິດ​ແມ່ນ​ຮູບ​ແບບ​ນີ້​:

1 2 README NUL
3 1 NUL arch/i386/Makefile NUL arch/x86/Makefile NUL

ນັ້ນ​ແມ່ນ:

1. ຈໍານວນຂອງສາຍທີ່ເພີ່ມ;

2. ແຖບ;

3. ຈໍານວນຂອງສາຍທີ່ຖືກລົບ;

4. ແຖບ;

5. NUL (ມີຢູ່ພຽງແຕ່ຖ້າປ່ຽນຊື່/ສຳເນົາ);

6. ຊື່ເສັ້ນທາງໃນ preimage;

7. NUL (ມີຢູ່ພຽງແຕ່ຖ້າປ່ຽນຊື່/ສຳເນົາ);

8. ຊື່ເສັ້ນທາງໃນ postimage (ມີພຽງແຕ່ຖ້າປ່ຽນຊື່ / ຄັດລອກ);

9. ເປັນ NUL.

NUL ພິເສດກ່ອນເສັ້ນທາງ preimage ໃນກໍລະນີປ່ຽນຊື່ແມ່ນເພື່ອອະນຸຍາດໃຫ້ສະຄິບທີ່ອ່ານ
ຜົນຜະລິດທີ່ຈະບອກວ່າການບັນທຶກປະຈຸບັນທີ່ກໍາລັງອ່ານແມ່ນບັນທຶກເສັ້ນທາງດຽວຫຼືປ່ຽນຊື່ / ສໍາເນົາ
ບັນທຶກໂດຍບໍ່ມີການອ່ານລ່ວງຫນ້າ. ຫຼັງ​ຈາກ​ການ​ອ່ານ​ເພີ່ມ​ແລະ​ການ​ລົບ​ສາຍ​, ອ່ານ​ເຖິງ NUL​
ຈະເຮັດໃຫ້ຊື່ເສັ້ນທາງ, ແຕ່ຖ້ານັ້ນແມ່ນ NUL, ບັນທຶກຈະສະແດງສອງເສັ້ນທາງ.

ການປະຕິບັດງານ ຮູບແບບ


ທ່ານ​ສາ​ມາດ​ເລືອກ​ວ່າ​ທ່ານ​ຕ້ອງ​ການ​ທີ່​ຈະ​ໄວ້​ວາງ​ໃຈ​ໄຟລ​໌​ດັດ​ຊະ​ນີ​ທັງ​ຫມົດ (ໂດຍ​ການ​ນໍາ​ໃຊ້ --cached ທຸງ)
ຫຼືຂໍໃຫ້ເຫດຜົນຄວາມແຕກຕ່າງເພື່ອສະແດງໄຟລ໌ໃດໆທີ່ບໍ່ກົງກັບສະຖານະຂອງສະຖິຕິ
"ປ່ຽນແປງຢ່າງຕັ້ງໃຈ". ທັງສອງການປະຕິບັດງານເຫຼົ່ານີ້ແມ່ນມີປະໂຫຍດຫຼາຍແທ້ໆ.

CACHED MODE


If --cached ຖືກກໍານົດ, ມັນອະນຸຍາດໃຫ້ທ່ານຖາມວ່າ:

ສະແດງໃຫ້ຂ້ອຍເຫັນຄວາມແຕກຕ່າງລະຫວ່າງ HEAD ແລະດັດຊະນີປັດຈຸບັນ
ເນື້ອໃນ (ທີ່ຂ້ອຍຈະຂຽນໂດຍໃຊ້ 'git write-tree')

ຕົວຢ່າງ, ໃຫ້ເວົ້າວ່າທ່ານໄດ້ເຮັດວຽກຢູ່ໃນໄດເລກະທໍລີທີ່ເຮັດວຽກຂອງທ່ານ, ປັບປຸງບາງໄຟລ໌
ໃນດັດຊະນີແລະພ້ອມທີ່ຈະຫມັ້ນສັນຍາ. ທ່ານຕ້ອງການເບິ່ງແນ່ນອນ ແມ່ນ​ຫຍັງ ເຈົ້າຈະໄປ
ສັນຍາ, ໂດຍບໍ່ຕ້ອງຂຽນວັດຖຸຕົ້ນໄມ້ໃຫມ່ແລະປຽບທຽບມັນແບບນັ້ນ, ແລະເຮັດແນວນັ້ນ,
ເຈົ້າພຽງແຕ່ເຮັດ

git diff-index --cached HEAD

ຕົວຢ່າງ: ສົມມຸດວ່າຂ້ອຍໄດ້ປ່ຽນຊື່ commit.c ເປັນ git-commit.c, ແລະຂ້ອຍໄດ້ເຮັດການປັບປຸງດັດສະນີ.
ເພື່ອເຮັດໃຫ້ມັນມີປະສິດທິພາບໃນເອກະສານດັດສະນີ. git diff-files ຈະບໍ່ສະແດງຫຍັງເລີຍ,
ເນື່ອງຈາກໄຟລ໌ດັດສະນີກົງກັບໄດເລກະທໍລີທີ່ເຮັດວຽກຂອງຂ້ອຍ. ແຕ່ເຮັດ ກ ໄປ ດັດຊະນີຄວາມແຕກຕ່າງ ບໍ່:

torvalds@ppc970:~/git> git diff-index --cached HEAD
-100644 blob 4161aecc6700a2eb579e842af0b7f22b98443f74 commit.c
+100644 blob 4161aecc6700a2eb579e842af0b7f22b98443f74 git-commit.c

ທ່ານສາມາດເບິ່ງໄດ້ຢ່າງງ່າຍດາຍວ່າຂ້າງເທິງນີ້ແມ່ນການປ່ຽນຊື່.

ໃນຄວາມເປັນຈິງ, git diff-index --cached ຄວນ ສະເຫມີເທົ່າກັບການດໍາເນີນການຕົວຈິງ
ໄປ ຕົ້ນໄມ້ຂຽນ ແລະການປຽບທຽບນັ້ນ. ຍົກເວັ້ນອັນນີ້ແມ່ນຫຼາຍ nicer ສໍາລັບກໍລະນີທີ່ທ່ານ
ພຽງແຕ່ຕ້ອງການກວດເບິ່ງວ່າທ່ານຢູ່ໃສ.

ດັ່ງນັ້ນການເຮັດ git diff-index --cached ໂດຍພື້ນຖານແລ້ວເປັນປະໂຫຍດຫຼາຍໃນເວລາທີ່ທ່ານຖາມຕົວເອງ
"ສິ່ງທີ່ຂ້ອຍໄດ້ຫມາຍໄວ້ແລ້ວສໍາລັບການຫມັ້ນສັນຍາ, ແລະສິ່ງທີ່ແຕກຕ່າງກັນກັບອະດີດ
ຕົ້ນໄມ້".

ບໍ່ໄດ້ຢູ່ໃນແຄດ MODE


ໂຫມດ "ບໍ່ຢູ່ໃນຖານຄວາມຈໍາ" ໃຊ້ວິທີການທີ່ແຕກຕ່າງກັນ, ແລະມີທ່າແຮງທີ່ເປັນປະໂຫຍດກວ່າ
ສອງໃນສິ່ງທີ່ມັນບໍ່ສາມາດໄດ້ຮັບການ emulated ກັບ a ໄປ ຕົ້ນໄມ້ຂຽນ + ໄປ ຕົ້ນໄມ້ທີ່ແຕກຕ່າງທີ່ຢູ່ ດັ່ງນັ້ນ
ນັ້ນແມ່ນໂໝດເລີ່ມຕົ້ນ. ເວີຊັ່ນທີ່ບໍ່ມີແຄດຕັ້ງຄຳຖາມ:

ສະແດງໃຫ້ຂ້ອຍເຫັນຄວາມແຕກຕ່າງລະຫວ່າງ HEAD ແລະເຄື່ອງທີ່ເຊັກເອົາໃນປັດຈຸບັນ
tree - index contents _and_ ໄຟລ໌ທີ່ບໍ່ທັນສະໄໝ

ເຊິ່ງແນ່ນອນວ່າເປັນຄໍາຖາມທີ່ເປັນປະໂຫຍດຫຼາຍ, ນັບຕັ້ງແຕ່ນັ້ນບອກທ່ານວ່າທ່ານແມ່ນຫຍັງ ສາມາດເຮັດໄດ້ ຄໍາຫມັ້ນສັນຍາ.
ອີກເທື່ອຫນຶ່ງ, ຜົນຜະລິດກົງກັບ ໄປ ຕົ້ນໄມ້ທີ່ແຕກຕ່າງ -r ຜົນຜະລິດເປັນ tee, ແຕ່ມີການບິດ.

ຂໍ້ບິດແມ່ນວ່າຖ້າບາງໄຟລ໌ບໍ່ກົງກັບດັດຊະນີ, ພວກເຮົາບໍ່ມີບ່ອນເກັບຂໍ້ມູນສຳຮອງ
ສິ່ງສໍາລັບມັນ, ແລະພວກເຮົາໃຊ້ magic "all-zero" sha1 ເພື່ອສະແດງໃຫ້ເຫັນວ່າ. ສະນັ້ນໃຫ້ເວົ້າວ່າທ່ານ
ໄດ້ແກ້ໄຂ kernel/sched.c, ແຕ່ບໍ່ໄດ້ເຮັດຕົວຈິງ a ໄປ update-index ກ່ຽວ​ກັບ​ມັນ​ຍັງ -
ບໍ່ມີ "ວັດຖຸ" ທີ່ກ່ຽວຂ້ອງກັບລັດໃຫມ່, ແລະທ່ານໄດ້ຮັບ:

torvalds@ppc970:~/v2.6/linux> git diff-index --abbrev HEAD
:100644 100664 7476bb... 000000... kernel/sched.c

ie, ມັນສະແດງໃຫ້ເຫັນວ່າຕົ້ນໄມ້ມີການປ່ຽນແປງ, ແລະ kernel/sched.c ມີບໍ່ທັນສະໄຫມ.
ແລະອາດມີສິ່ງໃໝ່ໆ. All-zero sha1 ຫມາຍຄວາມວ່າເພື່ອໃຫ້ໄດ້ຄວາມແຕກຕ່າງທີ່ແທ້ຈິງ, ທ່ານຈໍາເປັນຕ້ອງ
ເບິ່ງວັດຖຸໃນໄດເລກະທໍລີທີ່ເຮັດວຽກໂດຍກົງແທນທີ່ຈະເຮັດວັດຖຸຕໍ່ວັດຖຸ
ຄວາມແຕກຕ່າງ.

ຫມາຍ​ເຫດ​
ເຊັ່ນດຽວກັນກັບຄໍາສັ່ງອື່ນໆຂອງປະເພດນີ້, ໄປ ດັດຊະນີຄວາມແຕກຕ່າງ ຕົວຈິງແລ້ວບໍ່ໄດ້ເບິ່ງຢູ່ໃນ
ເນື້ອໃນຂອງໄຟລ໌ທັງຫມົດ. ດັ່ງນັ້ນບາງທີ kernel/sched.c ບໍ່ໄດ້ປ່ຽນແປງຕົວຈິງ, ແລະມັນແມ່ນ
ພຽງແຕ່ວ່າທ່ານແຕະມັນ. ໃນກໍລະນີໃດກໍ່ຕາມ, ມັນເປັນບັນທຶກທີ່ທ່ານຕ້ອງການ ໄປ
update-index ມັນເພື່ອເຮັດໃຫ້ດັດຊະນີຢູ່ໃນ sync.

ຫມາຍ​ເຫດ​
ທ່ານ​ສາ​ມາດ​ມີ​ການ​ປະ​ສົມ​ຂອງ​ໄຟລ​໌​ສະ​ແດງ​ໃຫ້​ເຫັນ​ເປັນ "ໄດ້​ຮັບ​ການ​ປັບ​ປຸງ​" ແລະ "ຍັງ​ເປື້ອນ​ຢູ່​ໃນ​
ໄດເລກະທໍລີທີ່ເຮັດວຽກ" ຮ່ວມກັນ. ທ່ານສາມາດບອກໄດ້ສະເຫມີວ່າໄຟລ໌ໃດຢູ່ໃນສະຖານະໃດ,
ນັບຕັ້ງແຕ່ "ໄດ້ຖືກປັບປຸງ" ສະແດງໃຫ້ເຫັນ sha1 ທີ່ຖືກຕ້ອງ, ແລະ "ບໍ່ສອດຄ່ອງກັບ
index" ພວກມັນຈະມີ sha1 ທັງໝົດພິເສດສະເໝີ.

GIT


ສ່ວນຫນຶ່ງຂອງ ໄປ(1) ຊຸດ

ໃຊ້ git-diff-index ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net


ເຊີບເວີ ແລະສະຖານີເຮັດວຽກຟຣີ

ດາວໂຫຼດແອັບ Windows ແລະ Linux

Linux ຄຳ ສັ່ງ

Ad




×
ການ​ໂຄ​ສະ​ນາ
?ຊື້ເຄື່ອງ, ຈອງ, ຫຼືຊື້ທີ່ນີ້ — ບໍ່ມີຄ່າໃຊ້ຈ່າຍ, ຊ່ວຍໃຫ້ການບໍລິການຟຣີ.