ນີ້ແມ່ນຄໍາສັ່ງ 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