ນີ້ແມ່ນຄໍາສັ່ງ git-rev-parse ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
git-rev-parse - ເອົາອອກ ແລະຕົວກໍານົດການນວດ
ສະຫຼຸບສັງລວມ
ໄປ rev-parse [ -- ທາງເລືອກ] ...
ລາຍລະອຽດ
ຄໍາສັ່ງຂອງ Git porcelainish ຈໍານວນຫຼາຍໃຊ້ເວລາປະສົມຂອງທຸງ (ເຊັ່ນພາລາມິເຕີທີ່ເລີ່ມຕົ້ນດ້ວຍ a
dash -) ແລະຕົວກໍານົດການຫມາຍຄວາມວ່າສໍາລັບພື້ນຖານ ໄປ rev-ບັນຊີລາຍຊື່ ຄໍາສັ່ງທີ່ພວກເຂົາໃຊ້ພາຍໃນ
ແລະທຸງແລະພາລາມິເຕີສໍາລັບຄໍາສັ່ງອື່ນໆທີ່ພວກເຂົາໃຊ້ລຸ່ມນ້ໍາ ໄປ rev-ບັນຊີລາຍຊື່. ນີ້
ຄໍາສັ່ງຖືກນໍາໃຊ້ເພື່ອຈໍາແນກລະຫວ່າງພວກເຂົາ.
OPTIONS
ການດໍາເນີນງານ Modes
ແຕ່ລະທາງເລືອກເຫຼົ່ານີ້ຕ້ອງປາກົດຢູ່ໃນແຖວຄໍາສັ່ງທໍາອິດ.
--parseopt
ການນໍາໃຊ້ ໄປ rev-parse ໃນຮູບແບບການແຍກທາງເລືອກ (ເບິ່ງພາກ PARSOPT ຂ້າງລຸ່ມນີ້).
--sq-quote
ການນໍາໃຊ້ ໄປ rev-parse ໃນຮູບແບບການອ້າງອີງ shell (ເບິ່ງ SQ-QUOTE ພາກລຸ່ມນີ້). ກົງກັນຂ້າມກັບ
ຕົວເລືອກ --sq ຂ້າງລຸ່ມນີ້, ຮູບແບບນີ້ເຮັດພຽງແຕ່ການອ້າງອີງ. ບໍ່ມີຫຍັງເຮັດເພື່ອສັ່ງ
input
ທາງເລືອກໃນການ ສໍາລັບການ --parseopt
--keep-dashdash
ມີຄວາມຫມາຍພຽງແຕ່ໃນ --parseopt mode. ບອກຕົວວິເຄາະທາງເລືອກເພື່ອສະທ້ອນອອກມາຄັ້ງທໍາອິດ --
ໄດ້ພົບແທນທີ່ຈະຂ້າມມັນ.
--stop-at-non-option
ມີຄວາມຫມາຍພຽງແຕ່ໃນ --parseopt mode. ອະນຸຍາດໃຫ້ຕົວວິເຄາະທາງເລືອກຢຸດຢູ່ທີ່ທໍາອິດ
ການໂຕ້ຖຽງທີ່ບໍ່ແມ່ນທາງເລືອກ. ນີ້ສາມາດຖືກນໍາໃຊ້ເພື່ອວິເຄາະຄໍາສັ່ງຍ່ອຍທີ່ເອົາທາງເລືອກ
ຕົວເອງ
--ຕິດຍາວ
ມີຄວາມຫມາຍພຽງແຕ່ໃນ --parseopt mode. ຜົນຜະລິດທາງເລືອກໃນຮູບແບບຍາວຂອງພວກເຂົາຖ້າ
ມີຢູ່, ແລະມີການໂຕ້ຖຽງຂອງພວກເຂົາຕິດຢູ່.
ທາງເລືອກໃນການ ສໍາລັບການ ການກັ່ນຕອງ
--revs-ເທົ່ານັ້ນ
ບໍ່ໃຫ້ອອກທຸງແລະຕົວກໍານົດການບໍ່ໄດ້ຫມາຍຄວາມວ່າສໍາລັບ ໄປ rev-ບັນຊີລາຍຊື່ ຄໍາສັ່ງ.
--no-revs
ຫ້າມສົ່ງທຸງ ແລະພາລາມິເຕີທີ່ໝາຍເຖິງ ໄປ rev-ບັນຊີລາຍຊື່ ຄໍາສັ່ງ.
--ທຸງ
ຢ່າສົ່ງຄ່າພາລາມິເຕີທີ່ບໍ່ແມ່ນທຸງ.
--ບໍ່ມີທຸງ
ຢ່າສົ່ງຄ່າພາລາມິເຕີທຸງ.
ທາງເລືອກໃນການ ສໍາລັບການ ຜົນຜະລິດ
--ຄ່າເລີ່ມຕົ້ນ
ຖ້າບໍ່ມີຕົວກໍານົດການໃຫ້ໂດຍຜູ້ໃຊ້, ໃຊ້ ແທນ.
-- ຄໍານໍາຫນ້າ
ປະຕິບັດຕົວຄືກັບວ່າ ໄປ rev-parse ໄດ້ຖືກຮຽກຮ້ອງຈາກ ໄດເລກະທໍລີຍ່ອຍຂອງການເຮັດວຽກ
ຕົ້ນໄມ້. ຊື່ໄຟລ໌ທີ່ກ່ຽວຂ້ອງຖືກແກ້ໄຂຄືກັບວ່າພວກມັນຖືກນໍາຫນ້າໂດຍ ແລະຈະເປັນ
ພິມໃນຮູບແບບນັ້ນ.
ນີ້ສາມາດຖືກນໍາໃຊ້ເພື່ອປ່ຽນ arguments ເປັນຄໍາສັ່ງດໍາເນີນການໃນ subdirectory ເພື່ອໃຫ້ເຂົາເຈົ້າ
ຍັງສາມາດຖືກນໍາໃຊ້ຫຼັງຈາກຍ້າຍໄປຫາລະດັບສູງສຸດຂອງ repository. ຍົກຕົວຢ່າງ:
prefix=$(git rev-parse --show-prefix)
cd "$(git rev-parse --show-toplevel)"
eval "ຕັ້ງ -- $(git rev-parse --sq --prefix "$prefix" "$@")"
--ກວດສອບ
ກວດສອບວ່າຕົວກໍານົດການທີ່ແນ່ນອນແມ່ນໄດ້ສະຫນອງໃຫ້, ແລະວ່າມັນສາມາດປ່ຽນເປັນວັດຖຸດິບ
20-byte SHA-1 ທີ່ສາມາດໃຊ້ເພື່ອເຂົ້າເຖິງຖານຂໍ້ມູນວັດຖຸ. ຖ້າເປັນດັ່ງນັ້ນ, ປ່ອຍມັນໄປທີ່
ຜົນຜະລິດມາດຕະຖານ; ຖ້າບໍ່ດັ່ງນັ້ນ, ຄວາມຜິດພາດອອກ.
ຖ້າທ່ານຕ້ອງການໃຫ້ແນ່ໃຈວ່າຜົນໄດ້ຮັບທີ່ແທ້ຈິງຕັ້ງຊື່ວັດຖຸໃນວັດຖຸຂອງທ່ານ
ຖານຂໍ້ມູນແລະ / ຫຼືສາມາດນໍາໃຊ້ເປັນປະເພດສະເພາະຂອງວັດຖຸທີ່ທ່ານຕ້ອງການ, ທ່ານສາມາດເພີ່ມໄດ້
^{type} ການປອກເປືອກຕົວປະຕິບັດການໄປຫາພາລາມິເຕີ. ຕົວຢ່າງ, git rev-parse "$VAR^{commit}"
ຈະໃຫ້ແນ່ໃຈວ່າ $VAR ຕັ້ງຊື່ວັດຖຸທີ່ມີຢູ່ແລ້ວທີ່ເປັນ commit-ish (ເຊັ່ນ: commit, ຫຼື
ແທັກຄຳອະທິບາຍປະກອບທີ່ຊີ້ໃສ່ຄຳໝັ້ນສັນຍາ). ເພື່ອໃຫ້ແນ່ໃຈວ່າ $VAR ຕັ້ງຊື່ທີ່ມີຢູ່ແລ້ວ
ວັດຖຸປະເພດໃດກໍໄດ້, git rev-parse "$VAR^{object}" ສາມາດໃຊ້ໄດ້.
-q, --ງຽບ
ມີຄວາມໝາຍໃນໂໝດ --verify ເທົ່ານັ້ນ. ຢ່າອອກຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດຖ້າການໂຕ້ຖຽງທໍາອິດ
ບໍ່ແມ່ນຊື່ວັດຖຸທີ່ຖືກຕ້ອງ; ແທນທີ່ຈະອອກດ້ວຍສະຖານະທີ່ບໍ່ແມ່ນສູນຢ່າງງຽບໆ. SHA-1s ສໍາລັບ
ຊື່ວັດຖຸທີ່ຖືກຕ້ອງຖືກພິມເພື່ອ stdout ສົບຜົນສໍາເລັດ.
-- sq
ປົກກະຕິແລ້ວຜົນຜະລິດແມ່ນເຮັດຫນຶ່ງເສັ້ນຕໍ່ທຸງແລະພາລາມິເຕີ. ທາງເລືອກນີ້ເຮັດໃຫ້ຜົນຜະລິດ a
ເສັ້ນດຽວ, ອ້າງອີງຢ່າງຖືກຕ້ອງສໍາລັບການບໍລິໂພກໂດຍແກະ. ເປັນປະໂຫຍດໃນເວລາທີ່ທ່ານຄາດຫວັງຂອງທ່ານ
ພາລາມິເຕີທີ່ຈະບັນຈຸຊ່ອງຫວ່າງແລະແຖວໃຫມ່ (ເຊັ່ນ: ເມື່ອໃຊ້ pickaxe -S ກັບ ໄປ
ຄວາມແຕກຕ່າງ-*). ກົງກັນຂ້າມກັບທາງເລືອກ --sq-quote, ການປ້ອນຄໍາສັ່ງຍັງຖືກຕີຄວາມ
ເປັນປົກກະຕິ.
--ບໍ່
ເມື່ອສະແດງຊື່ວັດຖຸ, ໃຫ້ໃສ່ຄຳນຳໜ້າດ້ວຍ ^ ແລະເສັ້ນດ່າງ ^ ຄໍານໍາຫນ້າຈາກຊື່ວັດຖຸ
ທີ່ມີແລ້ວ.
--abbrev-ref[=(ເຄັ່ງຄັດ|ວ່າງ)]
ຊື່ສັ້ນທີ່ບໍ່ຊັດເຈນຂອງຊື່ວັດຖຸ. ທາງເລືອກ core.warnAmbiguousRefs ແມ່ນ
ໃຊ້ເພື່ອເລືອກຮູບແບບການຫຍໍ້ທີ່ເຄັ່ງຄັດ.
--short, --short=ຕົວເລກ
ແທນທີ່ຈະອອກຄ່າ SHA-1 ອັນເຕັມທີ່ຂອງຊື່ວັດຖຸພະຍາຍາມທີ່ຈະຫຍໍ້ໃຫ້ເຂົາເຈົ້າເປັນ
ຊື່ສະເພາະທີ່ສັ້ນກວ່າ. ເມື່ອບໍ່ລະບຸຄວາມຍາວ 7 ຖືກນໍາໃຊ້. ຄວາມຍາວຕໍ່າສຸດແມ່ນ 4.
--ສັນຍະລັກ
ປົກກະຕິແລ້ວຊື່ວັດຖຸແມ່ນຜົນຜະລິດໃນຮູບແບບ SHA-1 (ເປັນໄປໄດ້ ^ ຄໍານໍາຫນ້າ); ນີ້
ທາງເລືອກເຮັດໃຫ້ເຂົາເຈົ້າຜະລິດຕະພັນໃນຮູບແບບເປັນໃກ້ກັບການປ້ອນຂໍ້ມູນຕົ້ນສະບັບເທົ່າທີ່ເປັນໄປໄດ້.
--symbolic-ຊື່ເຕັມ
ນີ້ແມ່ນຄ້າຍຄືກັນກັບ --symbolic, ແຕ່ມັນຍົກເວັ້ນການປ້ອນຂໍ້ມູນທີ່ບໍ່ແມ່ນ refs (ເຊັ່ນສາຂາຫຼື
ຊື່ແທັກ; ຫຼືຫຼາຍກວ່ານັ້ນ disambiguating "heads/master" ຢ່າງຊັດເຈນແບບຟອມ, ໃນເວລາທີ່ທ່ານຕ້ອງການ
ຕັ້ງຊື່ສາຂາ "ແມ່ບົດ" ເມື່ອມີປ້າຍຊື່ "ແມ່ບົດ" ແຕ່ຫນ້າເສຍດາຍ), ແລະສະແດງ
ພວກມັນເປັນການປ່ຽນຊື່ເຕັມ (ເຊັ່ນ: "refs/heads/master").
ທາງເລືອກໃນການ ສໍາລັບການ ຈຸດປະສົງ
--ທັງໝົດ
ສະແດງການອ້າງອີງທັງໝົດທີ່ພົບໃນ refs/.
--ສາຂາ[=ແບບ], --tags[=ແບບ], --remotes[=ແບບ]
ສະແດງທຸກສາຂາ, ແທັກ, ຫຼືສາຂາການຕິດຕາມໄລຍະໄກ, ຕາມລໍາດັບ (ເຊັ່ນ: ອ້າງອີງທີ່ພົບເຫັນ
ໃນ refs/heads, refs/tags, ຫຼື refs/remotes, ຕາມລໍາດັບ).
ຖ້າໃຫ້ຮູບແບບໃດໜຶ່ງ, ມີພຽງແຕ່ການອ້າງອີງທີ່ກົງກັບ shell glob ທີ່ໃຫ້ມາເທົ່ານັ້ນຈະສະແດງ. ຖ້າ
ຮູບແບບບໍ່ມີລັກສະນະ globbing (?, *, ຫຼື [), ມັນໄດ້ຖືກປ່ຽນເປັນຄໍານໍາຫນ້າ
ຈັບຄູ່ໂດຍການຕໍ່ທ້າຍ /*.
--glob=ຮູບແບບ
ສະແດງການອ້າງອີງທັງໝົດທີ່ກົງກັບຮູບແບບຂອງຮູບໄຂ່ຫຼັງຂອງເປືອກຫອຍ. ຖ້າຮູບແບບບໍ່ເລີ່ມຕົ້ນ
ດ້ວຍ refs/, ອັນນີ້ຈະຖືກນຳໜ້າໂດຍອັດຕະໂນມັດ. ຖ້າຮູບແບບບໍ່ມີ a
ຕົວອັກສອນ globbing (?, *, ຫຼື [), ມັນຖືກປ່ຽນເປັນຄໍານໍາຫນ້າໂດຍການຕໍ່ທ້າຍ /*.
--ຍົກເວັ້ນ=
ບໍ່ລວມເອົາການອ້າງອີງທີ່ກົງກັນ ວ່າຕໍ່ໄປ --all, --branches, --tags,
--remotes, ຫຼື --glob ຈະພິຈາລະນາຖ້າບໍ່ດັ່ງນັ້ນ. ການຄ້າງຫ້ອງຂອງທາງເລືອກນີ້ສະສົມ
ຮູບແບບການຍົກເວັ້ນຕໍ່ກັບ --all, --branches, --tags, --remotes, or --glob
ທາງເລືອກ (ທາງເລືອກອື່ນຫຼືການໂຕ້ຖຽງບໍ່ລຶບລ້າງຮູບແບບສະສົມ).
ຮູບແບບທີ່ໃຫ້ມາບໍ່ຄວນເລີ່ມຕົ້ນດ້ວຍ refs/heads, refs/tags, ຫຼື refs/remotes ເມື່ອ
ໃຊ້ກັບ --branches, --tags, ຫຼື --remotes, ຕາມລໍາດັບ, ແລະພວກເຂົາຕ້ອງເລີ່ມຕົ້ນດ້ວຍ
refs/ ເມື່ອນຳໃຊ້ກັບ --glob ຫຼື --all. ຖ້າຫາກວ່າຕິດຕາມ /* ມີຈຸດປະສົງ, ມັນຕ້ອງໄດ້ຮັບການມອບໃຫ້
ຢ່າງຈະແຈ້ງ.
--disambiguate=
ສະແດງທຸກວັດຖຸທີ່ມີຊື່ເລີ່ມຕົ້ນດ້ວຍຄໍານໍາໜ້າທີ່ໃຫ້ໄວ້. ໄດ້ ຕ້ອງຢູ່ທີ່
ຢ່າງໜ້ອຍ 4 ຕົວເລກເລກຖານສິບຫົກທີ່ມີຄວາມຍາວເພື່ອຫຼີກເວັ້ນການສະແດງແຕ່ລະວັດຖຸໃນ
repository ໂດຍຄວາມຜິດພາດ.
ທາງເລືອກໃນການ ສໍາລັບການ ໄຟ
--local-env-vars
ບອກຕົວແປສະພາບແວດລ້ອມ GIT_* ທີ່ຢູ່ໃນບ່ອນເກັບມ້ຽນ (ເຊັ່ນ: GIT_DIR ຫຼື
GIT_WORK_TREE, ແຕ່ບໍ່ແມ່ນ GIT_EDITOR). ມີພຽງແຕ່ຊື່ຂອງຕົວແປທີ່ຖືກລະບຸໄວ້, ບໍ່ແມ່ນ
ມູນຄ່າຂອງພວກເຂົາ, ເຖິງແມ່ນວ່າພວກເຂົາຖືກກໍານົດ.
--git-dir
ສະແດງ $GIT_DIR ຖ້າຖືກກໍານົດ. ຖ້າບໍ່ດັ່ງນັ້ນສະແດງເສັ້ນທາງໄປຫາໄດເລກະທໍລີ .git. ເສັ້ນທາງ
ສະແດງໃຫ້ເຫັນ, ເມື່ອພີ່ນ້ອງ, ແມ່ນກ່ຽວຂ້ອງກັບໄດເລກະທໍລີທີ່ເຮັດວຽກໃນປະຈຸບັນ.
ຖ້າ $GIT_DIR ບໍ່ໄດ້ຖືກກໍານົດແລະໄດເລກະທໍລີປະຈຸບັນບໍ່ຖືກກວດພົບວ່ານອນຢູ່ໃນ Git
repository ຫຼື work tree ພິມຂໍ້ຄວາມໄປຫາ stderr ແລະອອກດ້ວຍສະຖານະ nonzero.
--git-common-dir
ສະແດງ $GIT_COMMON_DIR ຖ້າຖືກກໍານົດ, ອື່ນ $GIT_DIR.
--is-inside-git-dir
ເມື່ອໄດເລກະທໍລີທີ່ເຮັດວຽກຢູ່ຂ້າງລຸ່ມຂອງໄດເລກະທໍລີ repository ພິມ "ຄວາມຈິງ",
ຖ້າບໍ່ດັ່ງນັ້ນ "ບໍ່ຖືກຕ້ອງ".
--is-inside-work-tree
ເມື່ອໄດເລກະທໍລີທີ່ເຮັດວຽກໃນປະຈຸບັນຢູ່ໃນຕົ້ນໄມ້ບ່ອນເຮັດວຽກຂອງການພິມ repository
"ຄວາມຈິງ", ຖ້າບໍ່ດັ່ງນັ້ນ "ບໍ່ຖືກຕ້ອງ".
--is-bare-repository
ໃນເວລາທີ່ repository ແມ່ນເປົ່າພິມ "ຄວາມຈິງ", ຖ້າບໍ່ດັ່ງນັ້ນ "false".
--resolve-git-dir
ກວດເບິ່ງວ່າ ແມ່ນບ່ອນເກັບມ້ຽນທີ່ຖືກຕ້ອງຫຼື gitfile ທີ່ຊີ້ໃຫ້ເຫັນເຖິງບ່ອນເກັບມ້ຽນທີ່ຖືກຕ້ອງ,
ແລະພິມສະຖານທີ່ຂອງ repository ໄດ້. ຖ້າ ແມ່ນ gitfile ຫຼັງຈາກນັ້ນການແກ້ໄຂ
ເສັ້ນທາງໄປຫາບ່ອນເກັບມ້ຽນທີ່ແທ້ຈິງແມ່ນພິມອອກ.
--git-path
ແກ້ໄຂ "$GIT_DIR/ " ແລະໃຊ້ຕົວແປການຍົກຍ້າຍເສັ້ນທາງອື່ນໆເຊັ່ນ:
$GIT_OBJECT_DIRECTORY, $GIT_INDEX_FILE... ເຂົ້າບັນຊີ. ຕົວຢ່າງ, ຖ້າ
$GIT_OBJECT_DIRECTORY ຖືກຕັ້ງເປັນ /foo/bar ຈາກນັ້ນ "git rev-parse --git-path objects/abc"
ກັບຄືນ /foo/bar/abc.
--show-cdup
ເມື່ອຄໍາສັ່ງຖືກເອີ້ນຈາກ subdirectory, ສະແດງເສັ້ນທາງຂອງລະດັບສູງສຸດ
ໄດເລກະທໍລີທີ່ກ່ຽວຂ້ອງກັບໄດເລກະທໍລີປະຈຸບັນ (ໂດຍປົກກະຕິເປັນລໍາດັບຂອງ "../", ຫຼືເປັນ
string ເປົ່າ).
--show-prefix
ເມື່ອຄໍາສັ່ງຖືກເອີ້ນຈາກ subdirectory, ສະແດງເສັ້ນທາງຂອງປະຈຸບັນ
ໄດເລກະທໍລີທີ່ກ່ຽວຂ້ອງກັບໄດເລກະທໍລີລະດັບສູງສຸດ.
--show-toplevel
ສະແດງເສັ້ນທາງຢ່າງແທ້ຈິງຂອງໄດເລກະທໍລີລະດັບສູງສຸດ.
--shared-index-path
ສະແດງເສັ້ນທາງໄປຫາໄຟລ໌ດັດຊະນີທີ່ແບ່ງປັນໃນຮູບແບບດັດຊະນີແບ່ງປັນ, ຫຼືຫວ່າງເປົ່າຖ້າຫາກວ່າບໍ່ຢູ່ໃນ
ຮູບແບບການແບ່ງປັນດັດສະນີ.
ອື່ນ ໆ ທາງເລືອກໃນການ
--since=datestring, --after=datestring
parse the date string, and output the corresponding --max-age= parameter for ໄປ
rev-ບັນຊີລາຍຊື່.
--until=datestring, --before=datestring
parse the date string, and output the corresponding --min-age= parameter for ໄປ
rev-ບັນຊີລາຍຊື່.
...
ທຸງ ແລະຕົວກໍານົດການທີ່ຈະວິເຄາະ.
ລະບຸ ຄຳ ຕິຊົມ
ຕົວກໍານົດການດັດແກ້ ໂດຍປົກກະຕິ, ແຕ່ບໍ່ຈໍາເປັນ, ຕັ້ງຊື່ວັດຖຸ commit. ມັນໃຊ້
ອັນໃດເອີ້ນວ່າ ຂະຫຍາຍ SHA-1 syntax. ນີ້ແມ່ນວິທີຕ່າງໆໃນການສະກົດຊື່ວັດຖຸ. ໄດ້
ລາຍຊື່ທີ່ຢູ່ໃກ້ໃນຕອນທ້າຍຂອງບັນຊີລາຍຊື່ນີ້ຊື່ຕົ້ນໄມ້ແລະ blobs ທີ່ມີຢູ່ໃນຄໍາຫມັ້ນສັນຍາ.
, ຕົວຢ່າງ dae86e1950b1277e545cee180551750029cfe735, dae86e
ຊື່ເຕັມຂອງວັດຖຸ SHA-1 (ສະຕຣິງເລກຖານສິບຫົກ 40-byte), ຫຼືສະຕຣິງຍ່ອຍຊັ້ນນໍາທີ່
ເປັນເອກະລັກພາຍໃນ repository. ຕົວຢ່າງ dae86e1950b1277e545cee180551750029cfe735 ແລະ
dae86e ທັງສອງຕັ້ງຊື່ວັດຖຸ commit ດຽວກັນຖ້າບໍ່ມີວັດຖຸອື່ນໃນ repository ຂອງທ່ານ
ຊື່ວັດຖຸເລີ່ມຕົ້ນດ້ວຍ dae86e.
, ຕົວຢ່າງ v1.7.4.2-679-g3bee7fb
ຜົນຜະລິດຈາກ git describe; ເຊັ່ນ: ແທັກທີ່ໃກ້ຄຽງທີ່ສຸດ, ເລືອກຕາມດ້ວຍ dash ແລະ a
ຈໍານວນຄໍາຫມັ້ນສັນຍາ, ຕິດຕາມດ້ວຍ dash, a g, ແລະຊື່ວັດຖຸຫຍໍ້ໆ.
, ຕົວຢ່າງ ຕົ້ນສະບັບ, ຫົວຫນ້າ / ອາຈານ, refs/heads/master
ຊື່ອ້າງອີງທີ່ເປັນສັນຍາລັກ. ຕົວຢ່າງ ຕົ້ນສະບັບ ໂດຍປົກກະຕິຫມາຍເຖິງວັດຖຸທີ່ອ້າງອີງໂດຍ
refs/heads/master. ຖ້າເຈົ້າມີທັງສອງ ຫົວຫນ້າ / ອາຈານ ແລະ tags/ແມ່ບົດ, ເຈົ້າສາມາດ
ເວົ້າຢ່າງຈະແຈ້ງ ຫົວຫນ້າ / ອາຈານ ເພື່ອບອກ Git ເຈົ້າຫມາຍຄວາມວ່າອັນໃດ. ເມື່ອບໍ່ຊັດເຈນ, ກ
ແມ່ນ disambiguated ໂດຍການແຂ່ງຂັນຄັ້ງທໍາອິດໃນກົດລະບຽບດັ່ງຕໍ່ໄປນີ້:
1 If $GIT_DIR/ ມີຢູ່, ນັ້ນແມ່ນສິ່ງທີ່ທ່ານຫມາຍຄວາມວ່າ (ນີ້ມັກຈະເປັນປະໂຫຍດເທົ່ານັ້ນ
ສໍາລັບການ HEAD, FETCH_HEAD, ORIG_HEAD, MERGE_HEAD ແລະ CHERRY_PICK_HEAD);
2. ຖ້າບໍ່ດັ່ງນັ້ນ, ອ້າງອີງ/ ຖ້າມັນມີຢູ່;
3. ຖ້າບໍ່ດັ່ງນັ້ນ, ອ້າງອີງ/ແທັກ/ ຖ້າມັນມີຢູ່;
4. ຖ້າບໍ່ດັ່ງນັ້ນ, ອ້າງອີງ/ຫົວ/ ຖ້າມັນມີຢູ່;
5. ຖ້າບໍ່ດັ່ງນັ້ນ, ອ້າງອີງ/ໄລຍະໄກ/ ຖ້າມັນມີຢູ່;
6. ຖ້າບໍ່ດັ່ງນັ້ນ, ອ້າງອີງ/ໄລຍະໄກ/ /ຫົວ ຖ້າມັນມີຢູ່.
HEAD ຊື່ຄໍາຫມັ້ນສັນຍາທີ່ທ່ານອີງໃສ່ການປ່ຽນແປງໃນຕົ້ນໄມ້ທີ່ເຮັດວຽກ.
FETCH_HEAD ບັນທຶກສາຂາທີ່ທ່ານໄດ້ຮັບຈາກ repository ຫ່າງໄກສອກຫຼີກທີ່ມີຂອງທ່ານ
ຄໍາຮ້ອງຂໍການດຶງຂໍ້ມູນ git ສຸດທ້າຍ. ORIG_HEAD ຖືກສ້າງຂື້ນໂດຍຄໍາສັ່ງທີ່ຍ້າຍຂອງທ່ານ HEAD
ໃນວິທີການ drastic, ເພື່ອບັນທຶກຕໍາແຫນ່ງຂອງ HEAD ກ່ອນທີ່ຈະດໍາເນີນການຂອງເຂົາເຈົ້າ, ດັ່ງນັ້ນ
ທີ່ທ່ານໄດ້ຢ່າງງ່າຍດາຍສາມາດປ່ຽນປາຍຂອງສາຂາກັບຄືນໄປບ່ອນຂອງລັດກ່ອນທີ່ທ່ານຈະແລ່ນ
ໃຫ້ເຂົາເຈົ້າ. MERGE_HEAD ບັນທຶກຄໍາຫມັ້ນສັນຍາທີ່ທ່ານກໍາລັງລວມເຂົ້າໃນສາຂາຂອງທ່ານ
ເມື່ອທ່ານດໍາເນີນການ git merge. CHERRY_PICK_HEAD ບັນທຶກຄໍາຫມັ້ນສັນຍາທີ່ທ່ານເປັນ
cherry- picking ໃນເວລາທີ່ທ່ານແລ່ນ git cherry-pick.
ໃຫ້ສັງເກດວ່າໃດໆຂອງ ອ້າງອີງ/* ກໍລະນີຂ້າງເທິງອາດຈະມາຈາກ $GIT_DIR/ອ້າງອີງ
ໄດເລກະທໍລີຫຼືຈາກ $GIT_DIR/packed-refs ໄຟລ໌. ໃນຂະນະທີ່ການເຂົ້າລະຫັດຊື່ອ້າງອີງແມ່ນ
ບໍ່ໄດ້ລະບຸ, UTF-8 ແມ່ນຕ້ອງການຍ້ອນວ່າການປຸງແຕ່ງຜົນຜະລິດບາງຢ່າງອາດຈະສົມມຸດຊື່ອ້າງອີງໃນ
UTF-8.
@
@ ຄົນດຽວແມ່ນທາງລັດສໍາລັບ HEAD.
@{ }, ຕົວຢ່າງ master@{ມື້ວານນີ້}, HEAD@{5 ນາທີ ກ່ອນໜ້ານີ້}
ອ້າງອີງຕາມດ້ວຍຄຳຕໍ່ທ້າຍ @ ໂດຍມີສະເພາະວັນທີທີ່ປິດດ້ວຍຄູ່ເຊືອກຜູກ
(ຕົວຢ່າງ {ມື້ວານນີ້}, {1 ເດືອນ 2 ອາທິດ 3 ວັນ 1 ຊົ່ວໂມງ 1 ຄັ້ງທີສອງ ກ່ອນໜ້ານີ້} or {1979-02-26
18:30:00}) ກໍານົດມູນຄ່າຂອງການອ້າງອີງຢູ່ໃນຈຸດກ່ອນເວລາ. ຄໍາຕໍ່ທ້າຍນີ້ອາດຈະ
ພຽງແຕ່ຖືກນໍາໃຊ້ທັນທີຫຼັງຈາກຊື່ ref ແລະ ref ຕ້ອງມີບັນທຶກທີ່ມີຢູ່ແລ້ວ
($GIT_DIR/ບັນທຶກ/). ໃຫ້ສັງເກດວ່ານີ້ຊອກຫາສະຖານະຂອງເຈົ້າ ທ້ອງຖິ່ນ ອ້າງອີງທີ່ໃຫ້
ເວລາ; ຕົວຢ່າງ: ສິ່ງທີ່ຢູ່ໃນທ້ອງຖິ່ນຂອງເຈົ້າ ຕົ້ນສະບັບ ສາຂາໃນອາທິດທີ່ຜ່ານມາ. ຖ້າທ່ານຕ້ອງການເບິ່ງ
ຄໍາຫມັ້ນສັນຍາທີ່ເຮັດໃນຊ່ວງເວລາທີ່ແນ່ນອນ, ເບິ່ງ -- ນັບຕັ້ງແຕ່ ແລະ -- ຈົນກ່ວາ.
@{ }, ຕົວຢ່າງ master@{1}
ອ້າງອີງຕາມດ້ວຍຄຳຕໍ່ທ້າຍ @ ໂດຍມີຂໍ້ກໍາຫນົດຕາມລໍາດັບທີ່ປິດຢູ່ໃນຄູ່ເຊືອກຜູກ
(ຕົວຢ່າງ {1}, {15}) ລະບຸຄ່າ n-th ກ່ອນຂອງເອກະສານອ້າງອີງນັ້ນ. ຍົກຕົວຢ່າງ master@{1}
ແມ່ນມູນຄ່າກ່ອນຫນ້າຂອງທັນທີ ຕົ້ນສະບັບ ໃນຂະນະທີ່ master@{5} ແມ່ນມູນຄ່າກ່ອນໜ້າທີ 5 ຂອງ
ຕົ້ນສະບັບ. ຄຳຕໍ່ທ້າຍນີ້ອາດຈະຖືກໃຊ້ທັນທີຫຼັງຈາກຊື່ອ້າງອີງ ແລະຄຳອ້າງອີງຕ້ອງ
ມີບັນທຶກທີ່ມີຢູ່ແລ້ວ ($GIT_DIR/ບັນທຶກ/).
@{ }, ຕົວຢ່າງ @{1}
ທ່ານສາມາດນໍາໃຊ້ໄດ້ @ ກໍ່ສ້າງດ້ວຍສ່ວນ ref ເປົ່າເພື່ອເຂົ້າໄປທີ່ reflog ຂອງ
ສາຂາປະຈຸບັນ. ຕົວຢ່າງ, ຖ້າທ່ານຢູ່ໃນສາຂາ blah ຫຼັງຈາກນັ້ນ @{1} ຫມາຍຄວາມວ່າຄືກັນກັບ
blabla@{1}.
@{- }, ຕົວຢ່າງ @{-1}
ການກໍ່ສ້າງ @{- } ຫມາຍຄວາມວ່າ th ສາຂາ / ຄໍາຫມັ້ນສັນຍາ checked ອອກກ່ອນທີ່ຈະປະຈຸບັນ
ຫນຶ່ງ.
@{upstream}, ຕົວຢ່າງ master@{upstream}, @{u}
ສ່ວນທີ່ເຫຼືອ @{upstream} ກັບຊື່ສາຂາ (ຮູບແບບສັ້ນ @{u}) refersາຍເຖິງ
ສາຂາທີ່ສາຂາລະບຸໄວ້ໂດຍຊື່ສາຂາຖືກກໍານົດໃຫ້ສ້າງຢູ່ເທິງຂອງ (configured
ກັບສາຂາ. .ໄລຍະໄກ ແລະສາຂາ. .merge). ຊື່ສາຂາທີ່ຂາດຫາຍໄປເປັນຄ່າເລີ່ມຕົ້ນຂອງ
ປະຈຸບັນ.
@{ຍູ້}, ຕົວຢ່າງ master@{push}, @{ຍູ້}
ສ່ວນທີ່ເຫຼືອ @{ຍູ້} ລາຍງານສາຂາ "ບ່ອນທີ່ພວກເຮົາຈະຍູ້ໄປ" ຖ້າ git push ຖືກແລ່ນ
ໃນຂະນະທີ່ຊື່ສາຂາຖືກກວດສອບ (ຫຼືປະຈຸບັນ HEAD ຖ້າບໍ່ລະບຸຊື່ສາຂາ).
ເນື່ອງຈາກຈຸດຫມາຍປາຍທາງຊຸກຍູ້ຂອງພວກເຮົາແມ່ນຢູ່ໃນບ່ອນເກັບມ້ຽນຫ່າງໄກສອກຫຼີກ, ແນ່ນອນ, ພວກເຮົາລາຍງານທ້ອງຖິ່ນ
ສາຂາການຕິດຕາມທີ່ກົງກັບສາຂານັ້ນ (ເຊັ່ນ, ບາງສິ່ງບາງຢ່າງໃນ ອ້າງອີງ/ໄລຍະໄກ/).
ນີ້ແມ່ນຕົວຢ່າງເພື່ອເຮັດໃຫ້ມັນຊັດເຈນຂຶ້ນ:
$ git config push.default ໃນປັດຈຸບັນ
$ git config remote.pushdefault myfork
$ git checkout -b mybranch origin/master
$ git rev-parse --symbolic-full-name @{upstream}
refs/remotes/origin/master
$ git rev-parse --symbolic-full-name @{push}
refs/remotes/myfork/mybranch
ໃຫ້ສັງເກດໃນຕົວຢ່າງທີ່ພວກເຮົາກໍານົດຂັ້ນຕອນການເຮັດວຽກສາມຫຼ່ຽມ, ບ່ອນທີ່ພວກເຮົາດຶງຈາກຫນຶ່ງ
ສະຖານທີ່ແລະຍູ້ໄປຫາບ່ອນອື່ນ. ໃນຂະບວນການເຮັດວຽກທີ່ບໍ່ແມ່ນຮູບສາມລ່ຽມ, @{ຍູ້} ແມ່ນຄືກັນກັບ
@{upstream}, ແລະບໍ່ຈໍາເປັນຕ້ອງມີມັນ.
^, ຕົວຢ່າງ ຫົວ^, v1.5.1^0
ຄຳຕໍ່ທ້າຍ ^ ກັບພາລາມິເຕີການດັດແກ້ຫມາຍຄວາມວ່າພໍ່ແມ່ທໍາອິດຂອງຈຸດປະສົງທີ່ຫມັ້ນສັນຍານັ້ນ. ^
ຫມາຍຄວາມວ່າ ພໍ່ແມ່ (ie ^ ເທົ່າກັບ ^1). ຕາມກົດລະບຽບພິເສດ,
^0 ຫມາຍຄວາມວ່າຄໍາຫມັ້ນສັນຍາຕົວມັນເອງແລະຖືກນໍາໃຊ້ໃນເວລາທີ່ ແມ່ນຊື່ວັດຖຸຂອງແທັກ
ວັດຖຸທີ່ໝາຍເຖິງວັດຖຸທີ່ກະທຳ.
~, ຕົວຢ່າງ ແມ່ບົດ~3
ຄຳຕໍ່ທ້າຍ ~ ກັບຕົວກໍານົດການດັດແກ້ຫມາຍຄວາມວ່າວັດຖຸຄໍາຫມັ້ນສັນຍາທີ່ເປັນ ທ
ບັນພະບຸລຸດລຸ້ນຂອງວັດຖຸທີ່ຕັ້ງຊື່, ປະຕິບັດຕາມພຽງແຕ່ພໍ່ແມ່ທໍາອິດ. ຄື
~3 ເທົ່າກັບ ^^^ ເຊິ່ງທຽບເທົ່າກັບ ^1^1^1. ເບິ່ງຂ້າງລຸ່ມນີ້ສໍາລັບການ
ຮູບພາບການນໍາໃຊ້ຮູບແບບນີ້.
^{ }, ຕົວຢ່າງ v0.99.8^{commit}
ຄຳຕໍ່ທ້າຍ ^ ຕິດຕາມດ້ວຍຊື່ປະເພດວັດຖຸທີ່ຕິດຢູ່ໃນຄູ່ brace ຫມາຍຄວາມວ່າ dereference
ຈຸດ ປະ ສົງ ຢູ່ recursively ຈົນກ່ວາວັດຖຸຂອງປະເພດ ຖືກພົບເຫັນຫຼືວັດຖຸ
ບໍ່ສາມາດອ້າງອິງໄດ້ອີກຕໍ່ໄປ (ໃນກໍລະນີນີ້, barf). ຕົວຢ່າງ, ຖ້າ ເປັນ
ຄໍາຫມັ້ນສັນຍາ, ^{commit} ອະທິບາຍວັດຖຸທີ່ສອດຄ້ອງກັນ. ເຊັ່ນດຽວກັນ, ຖ້າ
ເປັນຕົ້ນໄມ້, ^{ຕົ້ນໄມ້} ອະທິບາຍວັດຖຸຕົ້ນໄມ້ທີ່ສອດຄ້ອງກັນ. ^0 is
ມືສັ້ນສໍາລັບ ^{commit}.
rev^{object} ສາມາດຖືກນໍາໃຊ້ເພື່ອໃຫ້ແນ່ໃຈວ່າ ປ ຕັ້ງຊື່ວັດຖຸທີ່ມີຢູ່, ໂດຍບໍ່ມີການ
ຕ້ອງການ ປ ເປັນໂຄດຄໍາສັ່ງ, ແລະໂດຍບໍ່ມີການ deferencing ປ; ເນື່ອງຈາກວ່າແທັກແມ່ນແລ້ວ
ວັດຖຸ, ມັນບໍ່ຈໍາເປັນຕ້ອງ dereferenced ເຖິງແມ່ນວ່າຫນຶ່ງຄັ້ງເພື່ອໄປຫາວັດຖຸ.
rev^{tag} ສາມາດຖືກນໍາໃຊ້ເພື່ອຮັບປະກັນວ່າ ປ ລະບຸວັດຖຸແທັກທີ່ມີຢູ່ແລ້ວ.
^{}, ຕົວຢ່າງ v0.99.8^{}
ຄຳຕໍ່ທ້າຍ ^ ຕິດຕາມດ້ວຍຄູ່ brace ຫວ່າງເປົ່າຫມາຍຄວາມວ່າວັດຖຸສາມາດເປັນແທັກ, ແລະ
dereference tag recursively ຈົນກ່ວາຈະພົບເຫັນວັດຖຸທີ່ບໍ່ແມ່ນແທັກ.
^{/ }, ຕົວຢ່າງ HEAD^{/{/ແກ້ໄຂ nasty ບັກ}
ຄຳຕໍ່ທ້າຍ ^ ຕໍ່ກັບພາລາມິເຕີການດັດແກ້, ຕິດຕາມດ້ວຍຄູ່ brace ທີ່ມີຂໍ້ຄວາມນໍາພາ
ໂດຍ slash ເປັນ, ແມ່ນຄືກັນກັບ :/ ແກ້ໄຂ nasty bug syntax ຂ້າງລຸ່ມນີ້ຍົກເວັ້ນວ່າມັນສົ່ງຄືນ
ຄໍາຫມັ້ນສັນຍາການຈັບຄູ່ທີ່ນ້ອຍທີ່ສຸດແມ່ນສາມາດບັນລຸໄດ້ຈາກ ກ່ອນທີ່ຈະ ^.
:/, ຕົວຢ່າງ :/ ແກ້ໄຂ nasty bug
ຈໍ້າສອງເມັດ, ຕາມດ້ວຍເຄື່ອງໝາຍຂີດ, ຕາມດ້ວຍຂໍ້ຄວາມ, ຕັ້ງຊື່ຄຳໝັ້ນສັນຍາທີ່ຂໍ້ຄວາມທີ່ເຮັດ
ກົງກັບການສະແດງຜົນປົກກະຕິທີ່ລະບຸໄວ້. ຊື່ນີ້ສົ່ງຄືນການຈັບຄູ່ທີ່ນ້ອຍທີ່ສຸດ
ຄໍາຫມັ້ນສັນຍາທີ່ສາມາດບັນລຸໄດ້ຈາກການອ້າງອີງໃດໆ. ຖ້າຂໍ້ຄວາມສັນຍາເລີ່ມຕົ້ນດ້ວຍ a ! ທ່ານ
ຕ້ອງເຮັດຊ້ຳ; ລໍາດັບພິເສດ :/!, ປະຕິບັດຕາມໂດຍບາງສິ່ງບາງຢ່າງອື່ນກ່ວາ !, ເປັນ
ສະຫງວນໄວ້ໃນປັດຈຸບັນ. ການສະແດງຜົນປົກກະຕິສາມາດກົງກັບພາກສ່ວນໃດນຶ່ງຂອງຂໍ້ຄວາມສັນຍາ. ເຖິງ
ຈັບຄູ່ຂໍ້ຄວາມເລີ່ມຕົ້ນດ້ວຍ string, ຫນຶ່ງສາມາດໃຊ້ eg :/^ ຟູ.
:, ຕົວຢ່າງ ຫົວ: ອ່ານ, :README, ແມ່ບົດ:./README
ຄຳຕໍ່ທ້າຍ : ຕິດຕາມດ້ວຍເສັ້ນທາງທີ່ຕັ້ງຊື່ blob ຫຼືຕົ້ນໄມ້ຢູ່ໃນເສັ້ນທາງທີ່ລະບຸໄວ້ໃນ tree-ish
ວັດຖຸທີ່ຕັ້ງຊື່ໂດຍພາກສ່ວນກ່ອນຈໍ້າສອງເມັດ. :ເສັ້ນທາງ (ມີສ່ວນຫວ່າງກ່ອນ
colon) ເປັນກໍລະນີພິເສດຂອງ syntax ທີ່ອະທິບາຍຕໍ່ໄປ: ເນື້ອຫາທີ່ບັນທຶກໄວ້ໃນດັດຊະນີ
ຢູ່ໃນເສັ້ນທາງທີ່ໄດ້ຮັບ. ເສັ້ນທາງເລີ່ມຕົ້ນດ້ວຍ ./ or ../ ແມ່ນກ່ຽວຂ້ອງກັບການເຮັດວຽກໃນປະຈຸບັນ
ໄດເລກະທໍລີ. ເສັ້ນທາງທີ່ມອບໃຫ້ຈະຖືກປ່ຽນເປັນພີ່ນ້ອງກັບຮາກຂອງຕົ້ນໄມ້ທີ່ເຮັດວຽກ
ໄດເລກະທໍລີ. ນີ້ແມ່ນເປັນປະໂຫຍດທີ່ສຸດທີ່ຈະແກ້ໄຂ blob ຫຼືຕົ້ນໄມ້ຈາກຄໍາຫມັ້ນສັນຍາຫຼືຕົ້ນໄມ້ທີ່
ມີໂຄງສ້າງຕົ້ນໄມ້ດຽວກັນກັບຕົ້ນໄມ້ທີ່ເຮັດວຽກ.
: :, ຕົວຢ່າງ :0:ອ່ານ, :README
ຈໍ້າສອງເມັດ, ເລືອກຕາມດ້ວຍເລກຂັ້ນ (0 ຫາ 3) ແລະ ຈໍ້າເມັດ, ຕາມດ້ວຍ a
ເສັ້ນທາງ, ຕັ້ງຊື່ວັດຖຸ blob ໃນດັດຊະນີຢູ່ໃນເສັ້ນທາງທີ່ໃຫ້. ໝາຍເລກຂັ້ນຕອນທີ່ຂາດຫາຍໄປ (ແລະ
ຈໍ້າສອງເມັດທີ່ຕິດຕາມມັນ) ຕັ້ງຊື່ຂັ້ນຕອນ 0 ເຂົ້າ. ໃນລະຫວ່າງການລວມ, ຂັ້ນຕອນທີ 1 ແມ່ນ
ບັນພະບຸລຸດທົ່ວໄປ, ຂັ້ນຕອນທີ 2 ແມ່ນຮຸ່ນຂອງສາຂາເປົ້າຫມາຍ (ໂດຍປົກກະຕິໃນປະຈຸບັນ
ສາຂາ), ແລະຂັ້ນຕອນທີ 3 ແມ່ນສະບັບຈາກສາຂາທີ່ກໍາລັງຖືກລວມເຂົ້າກັນ.
ນີ້ແມ່ນຕົວຢ່າງ, ໂດຍ Jon Loeliger. ທັງສອງ commit nodes B ແລະ C ແມ່ນພໍ່ແມ່ຂອງຄໍາຫມັ້ນສັນຍາ
node A. Parent commits ຖືກຈັດຮຽງຈາກຊ້າຍຫາຂວາ.
GHIJ
\ / \ /
DEF
\ | / \
\ | / |
\|/ |
ກ່ອນຄ. ສ
\ /
\ /
A
A = = A^0
B = A^ = A^1 = A~1
C = A^2 = A^2
D = A^^ = A^1^1 = A~2
E = B^2 = A^^2
F = B^3 = A^^3
G = A^^^ = A^1^1^1 = A~3
H = D^2 = B^^2 = A^^^2 = A~2^2
I = F^ = B^3^ = A^^3^
J = F^2 = B^3^2 = A^^3^2
ລະບຸ ຫາຍາກ
ຄໍາສັ່ງປະຫວັດສາດ traversing ເຊັ່ນ git log ດໍາເນີນການກ່ຽວກັບຊຸດຂອງ commits, ບໍ່ພຽງແຕ່ຫນຶ່ງດຽວ
ຄໍາຫມັ້ນສັນຍາ. ຕໍ່ກັບຄໍາສັ່ງເຫຼົ່ານີ້, ການລະບຸການດັດແກ້ດຽວກັບ notation ອະທິບາຍຢູ່ໃນ
ພາກສ່ວນທີ່ຜ່ານມາຫມາຍເຖິງຊຸດຂອງຄໍາຫມັ້ນສັນຍາທີ່ສາມາດບັນລຸໄດ້ຈາກຄໍາຫມັ້ນສັນຍານັ້ນ, ປະຕິບັດຕາມຄໍາຫມັ້ນສັນຍາ
ລະບົບຕ່ອງໂສ້ບັນພະບຸລຸດ.
ເພື່ອຍົກເວັ້ນຄໍາຫມັ້ນສັນຍາທີ່ສາມາດບັນລຸໄດ້ຈາກຄໍາຫມັ້ນສັນຍາ, ຄໍານໍາຫນ້າ ^ ຫມາຍເຫດຖືກນໍາໃຊ້. ຕົວຢ່າງ ^r1 r2 ວິທີການ
ຄໍາຫມັ້ນສັນຍາສາມາດບັນລຸໄດ້ຈາກ r2 ແຕ່ຍົກເວັ້ນສິ່ງທີ່ສາມາດເຂົ້າຫາໄດ້ຈາກ r1.
ການປະຕິບັດຊຸດນີ້ປະກົດຂຶ້ນເລື້ອຍໆວ່າມີ shorthand ສໍາລັບມັນ. ໃນເວລາທີ່ທ່ານມີສອງ
ສັນຍາ r1 ແລະ r2 (ຊື່ຕາມໄວຍະກອນທີ່ອະທິບາຍໄວ້ໃນບົດວິຈານສະເພາະຂ້າງເທິງ),
ທ່ານສາມາດຮ້ອງຂໍໃຫ້ຄໍາຫມັ້ນສັນຍາທີ່ສາມາດບັນລຸໄດ້ຈາກ r2 ຍົກເວັ້ນສິ່ງທີ່ສາມາດບັນລຸໄດ້
r1 ໂດຍ ^r1 r2 ແລະມັນສາມາດຂຽນເປັນ r1..r2.
ຫມາຍເຫດທີ່ຄ້າຍຄືກັນ r1...r2 ເອີ້ນວ່າຄວາມແຕກຕ່າງ symmetric ຂອງ r1 ແລະ r2 ແລະຖືກກໍານົດເປັນ
r1 r2 --ບໍ່ $(git ລວມຖານ --ທັງໝົດ r1 r2). ມັນແມ່ນຊຸດຂອງຄໍາຫມັ້ນສັນຍາທີ່ສາມາດບັນລຸໄດ້
ຈາກຫນຶ່ງໃນ r1 or r2 ແຕ່ບໍ່ແມ່ນມາຈາກທັງສອງ.
ໃນສອງ shorthands ເຫຼົ່ານີ້, ທ່ານສາມາດຍົກເລີກຫນຶ່ງທ້າຍແລະປ່ອຍໃຫ້ມັນເປັນຄ່າເລີ່ມຕົ້ນຂອງ HEAD. ຍົກຕົວຢ່າງ,
ຕົ້ນກໍາເນີດ.. ແມ່ນສັ້ນ ສຳ ລັບ ທີ່ມາ..HEAD ແລະຖາມວ່າ, “ຂ້ອຍໄດ້ເຮັດຫຍັງນັບຕັ້ງແຕ່ຂ້າພະເຈົ້າໄດ້ forked ຈາກ
ສາຂາຕົ້ນກໍາເນີດ?” ເຊັ່ນດຽວກັນ, ..ຕົ້ນກໍາເນີດ ແມ່ນສັ້ນ ສຳ ລັບ HEAD..ຕົ້ນກຳເນີດ ແລະຖາມວ່າ: “ໄດ້ຫຍັງ
ຕົ້ນກໍາເນີດມາຕັ້ງແຕ່ຂ້ອຍແຍກອອກຈາກພວກມັນບໍ?” ໃຫ້ສັງເກດວ່າ .. ຈະຫມາຍຄວາມວ່າ ຫົວ..ຫົວ ເຊິ່ງແມ່ນຫວ່າງເປົ່າ
ໄລຍະທີ່ທັງເຂົ້າເຖິງໄດ້ ແລະບໍ່ສາມາດເຂົ້າຫາໄດ້ຈາກ HEAD.
ນາມສະກຸນອື່ນອີກສອງອັນສຳລັບການຕັ້ງຊື່ຊຸດທີ່ສ້າງຂຶ້ນໂດຍຄຳໝັ້ນສັນຍາ ແລະ ພໍ່ແມ່ຂອງມັນແມ່ນຄຳໝັ້ນສັນຍາ.
ມີຢູ່. ໄດ້ r1^@ notation ຫມາຍ ຄວາມ ວ່າ ພໍ່ ແມ່ ທັງ ຫມົດ ຂອງ r1. r1^! ປະກອບມີຄໍາຫມັ້ນສັນຍາ r1 ແຕ່ຍົກເວັ້ນທັງໝົດ
ຂອງພໍ່ແມ່ຂອງຕົນ.
ເພື່ອສະຫຼຸບ:
ລວມເອົາຄໍາຫມັ້ນສັນຍາທີ່ສາມາດບັນລຸໄດ້ຈາກ (ເຊັ່ນ: ບັນພະບຸລຸດຂອງ) .
^
ຍົກເວັ້ນຄໍາຫມັ້ນສັນຍາທີ່ສາມາດບັນລຸໄດ້ຈາກ (ເຊັ່ນ: ບັນພະບຸລຸດຂອງ) .
..
ລວມເອົາຄໍາຫມັ້ນສັນຍາທີ່ສາມາດບັນລຸໄດ້ຈາກ ແຕ່ຍົກເວັ້ນຜູ້ທີ່ສາມາດບັນລຸໄດ້
ຈາກ . ເມື່ອໃດ ຫຼື ຖືກລະເວັ້ນ, ມັນຕັ້ງໄວ້ໃນຕອນຕົ້ນ HEAD.
...
ລວມເອົາຄໍາຫມັ້ນສັນຍາທີ່ສາມາດບັນລຸໄດ້ຈາກທັງສອງ ຫຼື ແຕ່ຍົກເວັ້ນສິ່ງນັ້ນ
ແມ່ນສາມາດບັນລຸໄດ້ຈາກທັງສອງ. ເມື່ອໃດ ຫຼື ຖືກລະເວັ້ນ, ມັນຕັ້ງໄວ້ໃນຕອນຕົ້ນ HEAD.
^@, ຕົວຢ່າງ ຫົວ^@
ຄຳຕໍ່ທ້າຍ ^ ປະຕິບັດຕາມດ້ວຍເຄື່ອງຫມາຍແມ່ນຄືກັນກັບລາຍຊື່ພໍ່ແມ່ທັງຫມົດຂອງ
(ຫມາຍຄວາມວ່າ, ປະກອບມີສິ່ງທີ່ສາມາດບັນລຸໄດ້ຈາກພໍ່ແມ່, ແຕ່ບໍ່ແມ່ນຄໍາຫມັ້ນສັນຍາຂອງມັນເອງ).
^!, ຕົວຢ່າງ ຫົວ^!
ຄຳຕໍ່ທ້າຍ ^ ປະຕິບັດຕາມດ້ວຍເຄື່ອງຫມາຍ exclamation ແມ່ນຄືກັນກັບການໃຫ້ຄໍາຫມັ້ນສັນຍາ ແລະຫຼັງຈາກນັ້ນ
ພໍ່ແມ່ທັງໝົດຂອງມັນນຳໜ້າດ້ວຍ ^ ເພື່ອຍົກເວັ້ນພວກເຂົາ (ແລະບັນພະບຸລຸດຂອງພວກເຂົາ).
ນີ້ແມ່ນຕົວຢ່າງຈຳນວນໜຶ່ງ:
DGHD
DFGHIJDF
^GDHD
^DBEIJFB
B..CC
B...CGHDEBC
^DBCEIJFBC
CIJFC
C^@ IJF
C^! ຄ
F^! DGHDF
parSEOPT
ໃນ --parseopt mode, ໄປ rev-parse ຊ່ວຍໃຫ້ທາງເລືອກໃນການນວດເພື່ອນໍາເອົາສະຄິບຂອງແກະ
ສິ່ງອໍານວຍຄວາມສະດວກດຽວກັນ C buildins ມີ. ມັນເຮັດວຽກເປັນ normalizer ທາງເລືອກ (eg splits ດຽວ
ສະຫຼັບຄ່າລວມ), ຄ້າຍຄື getopt(1) ເຮັດ.
ມັນໃຊ້ເວລາໃນມາດຕະຖານການປ້ອນຂໍ້ມູນສະເພາະຂອງທາງເລືອກໃນການແຍກແລະເຂົ້າໃຈ,
ແລະ echoes ກ່ຽວກັບຜົນຜະລິດມາດຕະຖານ string ທີ່ເຫມາະສົມສໍາລັບ sh(1) eval ເພື່ອທົດແທນການ
ການໂຕ້ຖຽງກັບຄົນປົກກະຕິ. ໃນກໍລະນີຂອງຄວາມຜິດພາດ, ມັນ outputs ການນໍາໃຊ້ກ່ຽວກັບຄວາມຜິດພາດມາດຕະຖານ
stream, ແລະອອກດ້ວຍລະຫັດ 129.
ຫມາຍເຫດ: ໃຫ້ແນ່ໃຈວ່າທ່ານອ້າງເຖິງຜົນໄດ້ຮັບໃນເວລາທີ່ຜ່ານມັນໄປຫາ eval. ເບິ່ງຂ້າງລຸ່ມນີ້ສໍາລັບຕົວຢ່າງ.
ການປ້ອນຂໍ້ມູນ ຮູບແບບ
ໄປ rev-parse --parseopt ຮູບແບບການປ້ອນຂໍ້ມູນແມ່ນອີງໃສ່ຂໍ້ຄວາມເຕັມ. ມັນມີສອງພາກສ່ວນ, ແຍກອອກໂດຍ
ເສັ້ນທີ່ປະກອບດ້ວຍພຽງແຕ່ --. ເສັ້ນກ່ອນຕົວແຍກ (ຄວນຈະເປັນຫນຶ່ງຫຼືຫຼາຍກວ່ານັ້ນ) ແມ່ນ
ໃຊ້ສໍາລັບການນໍາໃຊ້. ສາຍຫຼັງຈາກຕົວແຍກອະທິບາຍທາງເລືອກ.
ແຕ່ລະແຖວຂອງຕົວເລືອກມີຮູບແບບນີ້:
* ? SP+ ຊ່ວຍ LF
ຮູບແບບຂອງມັນແມ່ນຕົວອັກສອນທາງເລືອກສັ້ນ, ຫຼັງຈາກນັ້ນຊື່ທາງເລືອກຍາວທີ່ແຍກອອກໂດຍ a
ເຄື່ອງໝາຍຈຸດ. ທັງສອງພາກສ່ວນແມ່ນບໍ່ຈໍາເປັນ, ເຖິງແມ່ນວ່າຢ່າງຫນ້ອຍຫນຶ່ງແມ່ນມີຄວາມຈໍາເປັນ. ອາດຈະບໍ່ມີ
ໃດໆຂອງ ຕົວອັກສອນ. h,help, dry-run ແລະ f ແມ່ນຕົວຢ່າງທີ່ຖືກຕ້ອງ
.
ແມ່ນຂອງ *, =, ? ຫຼື !.
·ໃຊ້ = ຖ້າທາງເລືອກໃຊ້ເວລາການໂຕ້ຖຽງ.
· ໃຊ້ ? ເພື່ອຫມາຍຄວາມວ່າທາງເລືອກໃຊ້ເວລາການໂຕ້ຖຽງທາງເລືອກ. ທ່ານອາດຈະຕ້ອງການ
ໃຊ້ໂໝດ --stuck-long ເພື່ອໃຫ້ສາມາດແຍກວິເຄາະການໂຕ້ແຍ້ງທາງເລືອກໄດ້ຢ່າງບໍ່ຊັດເຈນ.
· ການນໍາໃຊ້ * ເພື່ອຫມາຍຄວາມວ່າທາງເລືອກນີ້ບໍ່ຄວນຈະຖືກລະບຸໄວ້ໃນການນໍາໃຊ້ທີ່ສ້າງສໍາລັບການ
-h ການໂຕ້ຖຽງ. ມັນສະແດງສໍາລັບ --help-all ຕາມທີ່ບັນທຶກໄວ້ໃນ gitcli(7).
· ໃຊ້ ! ເພື່ອບໍ່ໃຫ້ທາງເລືອກຍາວລົບທີ່ສອດຄ້ອງກັນສາມາດໃຊ້ໄດ້.
, ຖ້າລະບຸ, ຖືກນໍາໃຊ້ເປັນຊື່ຂອງ argument ໃນຜົນໄດ້ຮັບການຊ່ວຍເຫຼືອ, ສໍາລັບ
ທາງເລືອກທີ່ເອົາການໂຕ້ຖຽງ. ຖືກຢຸດໂດຍຊ່ອງຫວ່າງທໍາອິດ. ມັນແມ່ນ
ປະເພນີທີ່ຈະໃຊ້ dash ເພື່ອແຍກຄໍາສັບຕ່າງໆໃນຄໍາແນະນໍາການໂຕ້ຖຽງຫຼາຍຄໍາ.
ສ່ວນທີ່ເຫຼືອຂອງເສັ້ນ, ຫຼັງຈາກລອກເອົາຊ່ອງຫວ່າງ, ຖືກນໍາໃຊ້ເປັນການຊ່ວຍເຫຼືອທີ່ກ່ຽວຂ້ອງກັບ
ທາງເລືອກ.
ເສັ້ນຫວ່າງຖືກລະເລີຍ, ແລະເສັ້ນທີ່ບໍ່ກົງກັບຂໍ້ກໍານົດນີ້ຖືກນໍາໃຊ້ເປັນທາງເລືອກ
ສ່ວນຫົວກຸ່ມ (ເລີ່ມເສັ້ນດ້ວຍຊ່ອງຫວ່າງເພື່ອສ້າງເສັ້ນດັ່ງກ່າວຕາມຈຸດປະສົງ).
ຍົກຕົວຢ່າງ
OPTS_SPEC="\
ບາງຄໍາສັ່ງ [ທາງເລືອກ] ...
some-command ບໍ່ foo ແລະ bar!
--
h, ຊ່ວຍສະແດງໃຫ້ເຫັນການຊ່ວຍເຫຼືອ
foo ບາງທາງເລືອກ nifty --foo
bar = ບາງທາງເລືອກເຢັນ --bar ທີ່ມີການໂຕ້ຖຽງ
baz=arg ທາງເລືອກທີ່ເຢັນອີກອັນ --baz ທີ່ມີຊື່ argument
qux?path qux ອາດຈະໃຊ້ argument ເສັ້ນທາງ ແຕ່ມີຄວາມໝາຍຂອງມັນເອງ
ສ່ວນຫົວກຸ່ມທາງເລືອກ
ຄ? ທາງເລືອກ C ດ້ວຍການໂຕ້ຖຽງທາງເລືອກ"
eval "$(echo "$OPTS_SPEC" | git rev-parse --parseopt -- "$@" || echo exit $?)"
ການນໍາໃຊ້ ຂໍ້ຄວາມ
ເມື່ອ "$@" ແມ່ນ -h ຫຼື --help ໃນຕົວຢ່າງຂ້າງເທິງ, ຂໍ້ຄວາມການນໍາໃຊ້ຕໍ່ໄປນີ້ຈະຖືກສະແດງ:
ການນໍາໃຊ້: ບາງຄໍາສັ່ງ [ທາງເລືອກ] ...
some-command ບໍ່ foo ແລະ bar!
-h, --help ສະແດງການຊ່ວຍເຫຼືອ
--foo ບາງທາງເລືອກທີ່ດີ --foo
--bar ... ບາງທາງເລືອກທີ່ເຢັນ --bar ທີ່ມີການໂຕ້ຖຽງ
--baz ທາງເລືອກທີ່ເຢັນອີກອັນຫນຶ່ງ --baz ທີ່ມີການໂຕ້ຖຽງທີ່ມີຊື່
--qux[= ] qux ອາດຈະໃຊ້ເວລາການໂຕ້ຖຽງເສັ້ນທາງແຕ່ມີຄວາມຫມາຍໂດຍຕົວມັນເອງ
ສ່ວນຫົວກຸ່ມທາງເລືອກ
-C[...] option C ດ້ວຍການໂຕ້ຖຽງທາງເລືອກ
SQ-QUOTE
ໃນຮູບແບບ --sq-quote, ໄປ rev-parse echoes ສຸດຜົນຜະລິດມາດຕະຖານເສັ້ນດຽວທີ່ເຫມາະສົມສໍາລັບການ
sh(1) eval. ເສັ້ນນີ້ແມ່ນເຮັດໂດຍການເຮັດໃຫ້ການໂຕ້ຖຽງປົກກະຕິຕໍ່ໄປນີ້ --sq-quote. ບໍ່ມີຫຍັງ
ນອກເຫນືອຈາກການອ້າງເຖິງການໂຕ້ຖຽງແມ່ນເຮັດແລ້ວ.
ຖ້າທ່ານຕ້ອງການການປ້ອນຄໍາສັ່ງໃຫ້ຍັງຖືກຕີຄວາມເປັນປົກກະຕິໂດຍ ໄປ rev-parse ກ່ອນທີ່ຈະໄດ້
ຜົນຜະລິດແມ່ນ shell quoted, ເບິ່ງທາງເລືອກ --sq.
ຍົກຕົວຢ່າງ
$ cat >your-git-script.sh <<\EOF
#!/ ຖັງ / sh
args=$(git rev-parse --sq-quote "$@") # quote arguments ທີ່ຜູ້ໃຊ້ສະໜອງໃຫ້
command="git frotz -n24 $args" # ແລະໃຊ້ມັນພາຍໃນເຄື່ອງຫັດຖະກໍາ
# ຄໍາສັ່ງ
eval "$ ຄໍາສັ່ງ"
EOF
$sh your-git-script.sh "a b'c"
ຕົວຢ່າງ
·ພິມຊື່ວັດຖຸຂອງສັນຍາປະຈຸບັນ:
$ git rev-parse --verify HEAD
· ພິມຊື່ວັດຖຸທີ່ເຮັດຈາກການແກ້ໄຂໃນຕົວແປ $REV shell:
$ git rev-parse --verify $REV^{commit}
ນີ້ຈະເກີດຄວາມຜິດພາດຫາກ $REV ຫວ່າງເປົ່າ ຫຼືບໍ່ແມ່ນການແກ້ໄຂທີ່ຖືກຕ້ອງ.
·ຄ້າຍຄືກັນກັບຂ້າງເທິງ:
$ git rev-parse --default master --verify $REV
ແຕ່ຖ້າ $REV ຫວ່າງເປົ່າ, commit object name from master ຈະຖືກພິມ.
GIT
ສ່ວນຫນຶ່ງຂອງ ໄປ(1) ຊຸດ
ໃຊ້ git-rev-parse ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net