ນີ້ແມ່ນຄໍາສັ່ງ git-rerere ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
git-rerere - ໃຊ້ຄືນການແກ້ໄຂການລວມທີ່ຂັດແຍ້ງກັນ
ສະຫຼຸບສັງລວມ
ໄປ ເລົ່າຄືນ [ແຈ້ງ|ລືມ |diff|ຍັງເຫຼືອ|ສະຖານະພາບ|gc]
ລາຍລະອຽດ
ໃນຂະບວນການເຮັດວຽກທີ່ຈ້າງສາຂາຫົວຂໍ້ທີ່ມີອາຍຸຂ້ອນຂ້າງຍາວ, ບາງຄັ້ງນັກພັດທະນາ
ຈໍາເປັນຕ້ອງໄດ້ແກ້ໄຂຂໍ້ຂັດແຍ່ງດຽວກັນເລື້ອຍໆເລື້ອຍໆຈົນກ່ວາສາຂາຫົວຂໍ້ສໍາເລັດ
(ທັງລວມເຂົ້າກັບສາຂາ "ປ່ອຍ", ຫຼືສົ່ງອອກແລະການຮັບຮອງເອົາຕົ້ນສະບັບ).
ຄໍາສັ່ງນີ້ຊ່ວຍນັກພັດທະນາໃນຂະບວນການນີ້ໂດຍການບັນທຶກການຂັດກັນອັດຕະໂນມັດ
ຜົນໄດ້ຮັບແລະມືທີ່ສອດຄ້ອງກັນແກ້ໄຂຜົນໄດ້ຮັບກ່ຽວກັບການລວມຄູ່ມືເບື້ອງຕົ້ນ, ແລະການນໍາໃຊ້
ການແກ້ໄຂດ້ວຍມືທີ່ບັນທຶກໄວ້ໃນເມື່ອກ່ອນກັບຜົນໄດ້ຮັບ automerge ທີ່ສອດຄ້ອງກັນຂອງເຂົາເຈົ້າ.
ຫມາຍເຫດ
ທ່ານຈໍາເປັນຕ້ອງກໍານົດຕົວປ່ຽນແປງການຕັ້ງຄ່າ rerere.enabled ໃນຄໍາສັ່ງທີ່ຈະເຮັດໃຫ້ການນີ້
ຄໍາສັ່ງ.
ສາມາດ
ໂດຍປົກກະຕິ, ໄປ ເລົ່າຄືນ ແມ່ນດໍາເນີນການໂດຍບໍ່ມີການໂຕ້ຖຽງຫຼືການແຊກແຊງຂອງຜູ້ໃຊ້. ຢ່າງໃດກໍຕາມ, ມັນມີ
ຄໍາສັ່ງຈໍານວນຫນຶ່ງທີ່ອະນຸຍາດໃຫ້ມັນພົວພັນກັບສະຖານະການເຮັດວຽກຂອງມັນ.
ແຈ້ງ
ຣີເຊັດເມຕາເດຕາທີ່ໃຊ້ໂດຍ rerere ຖ້າການແກ້ໄຂການລວມຈະຖືກຍົກເລີກ. ໂທ ໄປ
am [--ຂ້າມ|--ເຊົາ] or ໄປ ປະຕິເສດ [--ຂ້າມ|--ເຊົາ] ອັດຕະໂນມັດຈະເອີ້ນນີ້
ຄໍາສັ່ງ.
ລືມ
ຣີເຊັດການແກ້ໄຂຂໍ້ຂັດແຍ່ງທີ່ rerere ໄດ້ບັນທຶກໄວ້ສໍາລັບຂໍ້ຂັດແຍ່ງໃນປະຈຸບັນໃນ
.
diff
ສະແດງຄວາມແຕກຕ່າງສໍາລັບສະຖານະປັດຈຸບັນຂອງຄວາມລະອຽດ. ມັນເປັນປະໂຫຍດສໍາລັບການຕິດຕາມສິ່ງທີ່
ມີການປ່ຽນແປງໃນຂະນະທີ່ຜູ້ໃຊ້ກໍາລັງແກ້ໄຂຂໍ້ຂັດແຍ່ງ. ການໂຕ້ຖຽງເພີ່ມເຕີມແມ່ນຜ່ານ
ໂດຍກົງກັບລະບົບ diff ຄໍາສັ່ງຕິດຕັ້ງຢູ່ໃນ PATH.
ສະຖານະພາບ
ພິມເສັ້ນທາງທີ່ມີຂໍ້ຂັດແຍ່ງເຊິ່ງການແກ້ໄຂການລວມເຂົ້າກັນຈະບັນທຶກ.
ຍັງເຫຼືອ
ພິມເສັ້ນທາງທີ່ມີຂໍ້ຂັດແຍ່ງທີ່ບໍ່ໄດ້ຮັບການແກ້ໄຂອັດຕະໂນມັດໂດຍ rerere. ນີ້ປະກອບມີ
ເສັ້ນທາງທີ່ການແກ້ໄຂບໍ່ສາມາດຕິດຕາມໄດ້ໂດຍ rerere, ເຊັ່ນ: ໂມດູນຍ່ອຍທີ່ຂັດແຍ້ງກັນ.
gc
Prune ບັນທຶກຂອງການປະກອບທີ່ຂັດແຍ່ງກັນທີ່ເກີດຂຶ້ນເປັນເວລາດົນນານກ່ອນຫນ້ານີ້. ໂດຍຄ່າເລີ່ມຕົ້ນ,
ຂໍ້ຂັດແຍ່ງທີ່ຍັງບໍ່ໄດ້ແກ້ໄຂທີ່ມີອາຍຸຫຼາຍກ່ວາ 15 ວັນແລະການແກ້ໄຂຂໍ້ຂັດແຍ່ງທີ່ມີອາຍຸຫຼາຍກ່ວາ 60 ວັນແມ່ນ
ຕັດອອກ. ຄ່າເລີ່ມຕົ້ນເຫຼົ່ານີ້ຖືກຄວບຄຸມຜ່ານ gc.rerereUnresolved ແລະ
gc.rerereແກ້ໄຂຕົວແປການຕັ້ງຄ່າຕາມລໍາດັບ.
ການສົນທະນາ
ເມື່ອສາຂາຫົວຂໍ້ຂອງທ່ານດັດແປງພື້ນທີ່ທັບຊ້ອນທີ່ສາຂາຫຼັກຂອງເຈົ້າ (ຫຼືທາງເທິງ)
ສໍາຜັດນັບຕັ້ງແຕ່ສາຂາຫົວຂໍ້ຂອງທ່ານ forked ຈາກມັນ, ທ່ານອາດຈະຕ້ອງການທົດສອບມັນກັບຫລ້າສຸດ
ຕົ້ນສະບັບ, ເຖິງແມ່ນວ່າກ່ອນທີ່ສາຂາຫົວຂໍ້ຂອງທ່ານພ້ອມທີ່ຈະຖືກຊຸກຍູ້ໃຫ້ສູງຂຶ້ນ:
o---*--o ຫົວຂໍ້
/
o---o---o---*---o---o ແມ່ບົດ
ສໍາລັບການທົດສອບດັ່ງກ່າວ, ທ່ານຈໍາເປັນຕ້ອງໄດ້ປະສົມປະສານຕົ້ນສະບັບແລະຫົວຂໍ້ somehow. ວິທີຫນຶ່ງທີ່ຈະເຮັດຄືການດຶງ
ແມ່ບົດເຂົ້າໄປໃນສາຂາຫົວຂໍ້:
$ git checkout ຫົວຂໍ້
$ git merge ແມ່ບົດ
o---*--o---+ ຫົວຂໍ້
/ /
o---o---o---*---o---o ແມ່ບົດ
The commits marked with * touch the same area in the same file ; ທ່ານຈໍາເປັນຕ້ອງໄດ້ແກ້ໄຂ
ຂໍ້ຂັດແຍ່ງໃນເວລາສ້າງຄໍາຫມັ້ນສັນຍາທີ່ມີເຄື່ອງຫມາຍ +. ຫຼັງຈາກນັ້ນ, ທ່ານສາມາດທົດສອບຜົນໄດ້ຮັບເພື່ອເຮັດໃຫ້
ໃຫ້ແນ່ໃຈວ່າວຽກງານທີ່ກໍາລັງດໍາເນີນຢູ່ຂອງເຈົ້າຍັງເຮັດວຽກກັບສິ່ງທີ່ຢູ່ໃນຕົ້ນສະບັບຫລ້າສຸດ.
ຫຼັງຈາກການທົດສອບນີ້ປະສົມປະສານ, ມີສອງວິທີທີ່ຈະສືບຕໍ່ວຽກງານຂອງທ່ານໃນຫົວຂໍ້. ງ່າຍທີ່ສຸດ
ແມ່ນການກໍ່ສ້າງຢູ່ເທິງສຸດຂອງການທົດສອບ merge commit +, ແລະໃນເວລາທີ່ການເຮັດວຽກຂອງທ່ານໃນສາຂາຫົວຂໍ້ແມ່ນ
ສຸດທ້າຍພ້ອມແລ້ວ, ດຶງສາຂາຫົວຂໍ້ເປັນແມ່ບົດ, ແລະ/ຫຼື ຂໍໃຫ້ຕົ້ນນ້ໍາດຶງຈາກ
ເຈົ້າ. ມາຮອດເວລານັ້ນ, ແນວໃດກໍ່ຕາມ, ນາຍບ້ານ ຫຼື ຕົ້ນນ້ຳອາດຈະກ້າວໜ້າຕັ້ງແຕ່ຍຸກ
test merge +, ໃນກໍລະນີທີ່ກໍານົດການກໍານົດສຸດທ້າຍຈະເປັນດັ່ງນີ້:
$ git checkout ຫົວຂໍ້
$ git merge ແມ່ບົດ
$ ... ເຮັດວຽກທັງສອງຫົວຂໍ້ແລະສາຂາຕົ້ນສະບັບ
$ git checkout ແມ່ບົດ
$ git merge ຫົວຂໍ້
o---*---o---+---o---o ຫົວຂໍ້
/ / \
o---o---o---*--o---o--o---o---+ ອາຈານ
ໃນເວລາທີ່ສາຂາຫົວຂໍ້ຂອງທ່ານມີອາຍຸຍືນ, ແນວໃດກໍ່ຕາມ, ສາຂາຫົວຂໍ້ຂອງທ່ານຈະສິ້ນສຸດເຖິງມີຫຼາຍ
ດັ່ງກ່າວ "Merge ຈາກຕົ້ນສະບັບ" ຄໍາຫມັ້ນສັນຍາກ່ຽວກັບມັນ, ເຊິ່ງບໍ່ຈໍາເປັນຈະ clutter ການພັດທະນາ
ປະຫວັດສາດ. ຜູ້ອ່ານບັນຊີລາຍຊື່ທາງໄປສະນີ Linux kernel ອາດຈະຈື່ໄດ້ວ່າ Linus ຈົ່ມກ່ຽວກັບ
ການທົດສອບເລື້ອຍໆເກີນໄປຈະຜະສົມຜະສານເມື່ອຜູ້ຮັກສາລະບົບຍ່ອຍຮ້ອງຂໍໃຫ້ດຶງອອກຈາກສາຂາເຕັມ
ຂອງ "ການລວມຕົວທີ່ບໍ່ມີປະໂຫຍດ".
ໃນຖານະເປັນທາງເລືອກ, ເພື່ອຮັກສາສາຂາຫົວຂໍ້ທີ່ສະອາດຂອງການຄວບຄຸມການທົດສອບ, ທ່ານສາມາດພັດໄປໄດ້
ການທົດສອບການລວມ, ແລະຮັກສາການສ້າງຢູ່ເທິງຂອງປາຍກ່ອນທີ່ຈະການທົດສອບລວມ:
$ git checkout ຫົວຂໍ້
$ git merge ແມ່ບົດ
$ git reset --hard HEAD^ ;# rewind the test merge
$ ... ເຮັດວຽກທັງສອງຫົວຂໍ້ແລະສາຂາຕົ້ນສະບັບ
$ git checkout ແມ່ບົດ
$ git merge ຫົວຂໍ້
o---*--o-------o---o ຫົວຂໍ້
/ \
o---o---o---*--o---o--o---o---+ ອາຈານ
ນີ້ຈະປ່ອຍໃຫ້ຄໍາຫມັ້ນສັນຍາການຜະສົມຜະສານພຽງແຕ່ຫນຶ່ງຄັ້ງໃນເວລາທີ່ສາຂາຫົວຂໍ້ຂອງເຈົ້າກຽມພ້ອມແລະຖືກລວມເຂົ້າກັນ
ເຂົ້າໄປໃນສາຂາແມ່ບົດ. ການລວມກັນນີ້ຈະຮຽກຮ້ອງໃຫ້ເຈົ້າແກ້ໄຂຂໍ້ຂັດແຍ່ງ, ແນະນໍາ
ໂດຍຄໍາຫມັ້ນສັນຍາທີ່ຫມາຍດ້ວຍ *. ຢ່າງໃດກໍຕາມ, ຂໍ້ຂັດແຍ່ງນີ້ມັກຈະເປັນຂໍ້ຂັດແຍ່ງດຽວກັນກັບທ່ານ
ໄດ້ຮັບການແກ້ໄຂໃນເວລາທີ່ທ່ານສ້າງການທົດສອບ merge ທ່ານ blew ໄປ. ໄປ ເລົ່າຄືນ ຊ່ວຍທ່ານແກ້ໄຂນີ້
ການຮວມຂໍ້ຂັດແຍ່ງຂັ້ນສຸດທ້າຍໂດຍໃຊ້ຂໍ້ມູນຈາກການແກ້ໄຂດ້ວຍມືກ່ອນໜ້າຂອງເຈົ້າ.
ແລ່ນໄດ້ ໄປ ເລົ່າຄືນ ຄໍາສັ່ງທັນທີຫຼັງຈາກທີ່ຂັດແຍ່ງກັນອັດຕະໂນມັດບັນທຶກການ
ໄຟລ໌ຕົ້ນໄມ້ທີ່ເຮັດວຽກຂັດກັນ, ມີເຄື່ອງໝາຍຂັດກັນປົກກະຕິ <<<<<<<, =======, ແລະ
>>>>>>> ໃນພວກເຂົາ. ຕໍ່ມາ, ຫຼັງຈາກທີ່ທ່ານກໍາລັງແກ້ໄຂຂໍ້ຂັດແຍ່ງ, ດໍາເນີນການ ໄປ ເລົ່າຄືນ
ອີກເທື່ອຫນຶ່ງຈະບັນທຶກສະຖານະການແກ້ໄຂຂອງໄຟລ໌ເຫຼົ່ານີ້. ສົມມຸດວ່າທ່ານໄດ້ເຮັດສິ່ງນີ້ໃນເວລາທີ່ທ່ານສ້າງ
ການທົດສອບລວມຂອງຕົ້ນສະບັບເຂົ້າໄປໃນສາຂາຫົວຂໍ້.
ໃນເວລາຕໍ່ໄປ, ຫຼັງຈາກເຫັນການຂັດກັນອັດຕະໂນມັດທີ່ຂັດກັນ, ແລ່ນ ໄປ ເລົ່າຄືນ ຈະປະຕິບັດເປັນ
ການລວມກັນສາມທາງລະຫວ່າງ automerge ທີ່ຂັດແຍ້ງກ່ອນຫນ້ານີ້, ການແກ້ໄຂຄູ່ມືກ່ອນຫນ້ານີ້,
ແລະ automerge ຂັດກັນໃນປັດຈຸບັນ. ຖ້າຫາກວ່າການລວມທັງສາມນີ້ແກ້ໄຂຢ່າງສະອາດ, ຜົນໄດ້ຮັບ
ຖືກຂຽນໄວ້ໃນໄຟລ໌ຕົ້ນໄມ້ທີ່ເຮັດວຽກຂອງທ່ານ, ດັ່ງນັ້ນທ່ານບໍ່ຈໍາເປັນຕ້ອງແກ້ໄຂມັນດ້ວຍຕົນເອງ. ຫມາຍເຫດ
ທີ່ ໄປ ເລົ່າຄືນ ປ່ອຍໃຫ້ໄຟລ໌ດັດສະນີຢູ່ຄົນດຽວ, ດັ່ງນັ້ນທ່ານຍັງຕ້ອງເຮັດ sanity ສຸດທ້າຍ
ກວດສອບກັບ git diff (ຫຼື git diff -c) ແລະ ໄປ ເພີ່ມ ເມື່ອເຈົ້າພໍໃຈ.
ເປັນມາດຕະການສະດວກ, ໄປ ລວມ ອັດຕະໂນມັດຮຽກຮ້ອງ ໄປ ເລົ່າຄືນ ເມື່ອອອກດ້ວຍ ກ
ລົ້ມເຫລວອັດຕະໂນມັດແລະ ໄປ ເລົ່າຄືນ ບັນທຶກການແກ້ໄຂມືໃນເວລາທີ່ມັນເປັນຂໍ້ຂັດແຍ່ງໃຫມ່, ຫຼື
ໃຊ້ການແກ້ໄຂດ້ວຍມືກ່ອນໜ້ານີ້ຄືນໃໝ່ເມື່ອມັນບໍ່ແມ່ນ. ໄປ ຄໍາຫມັ້ນສັນຍາ ຍັງຮຽກຮ້ອງ ໄປ ເລົ່າຄືນ ໃນເວລາທີ່
ຄໍາຫມັ້ນສັນຍາຜົນການລວມ. ນີ້ຫມາຍຄວາມວ່າທ່ານບໍ່ຈໍາເປັນຕ້ອງເຮັດຫຍັງພິເສດ
ຕົວທ່ານເອງ (ນອກຈາກການເປີດໃຊ້ງານ rerere.enabled config variable).
ໃນຕົວຢ່າງຂອງພວກເຮົາ, ເມື່ອທ່ານເຮັດການທົດສອບປະສົມປະສານ, ການແກ້ໄຂຄູ່ມືຈະຖືກບັນທຶກ, ແລະມັນຈະ
ຖືກ ນຳ ໃຊ້ຄືນ ໃໝ່ ເມື່ອທ່ານເຮັດການລວມຕົວຕົວຈິງຕໍ່ມາກັບສາຂາຕົ້ນສະບັບແລະຫົວຂໍ້ທີ່ຖືກປັບປຸງ, ເປັນ
ຕາບໃດທີ່ຄວາມລະອຽດທີ່ບັນທຶກໄວ້ແມ່ນຍັງໃຊ້ໄດ້.
ຂໍ້ມູນຂ່າວສານ ໄປ ເລົ່າຄືນ ບັນທຶກຍັງຖືກໃຊ້ໃນເວລາແລ່ນ ໄປ ປະຕິເສດ. ຫຼັງຈາກຟັນ
ຫ່າງໄກການທົດສອບການລວມແລະການພັດທະນາຢ່າງຕໍ່ເນື່ອງກ່ຽວກັບສາຂາຫົວຂໍ້:
o---*--o-------o---o ຫົວຂໍ້
/
o---o---o---*--o---o---o---o ອາຈານ
$ git rebase ຫົວຂໍ້ຕົ້ນສະບັບ
o---*--o-------o---o ຫົວຂໍ້
/
o---o---o---*--o---o---o---o ອາຈານ
ທ່ານສາມາດດໍາເນີນການ git rebase master topic, ເພື່ອເຮັດໃຫ້ຕົວທ່ານເອງທັນສະໄຫມກ່ອນທີ່ຫົວຂໍ້ຂອງທ່ານແມ່ນ
ພ້ອມທີ່ຈະຖືກສົ່ງຂຶ້ນນ້ໍາ. ນີ້ຈະສົ່ງຜົນໃຫ້ການຫຼຸດລົງກັບຄືນໄປສູ່ການລວມກັນສາມທາງ, ແລະມັນ
ຈະຂັດກັນແບບດຽວກັນກັບການທົດສອບທີ່ເຈົ້າໄດ້ແກ້ໄຂກ່ອນໜ້ານີ້. ໄປ ເລົ່າຄືນ ຈະຖືກດໍາເນີນການ
by ໄປ ປະຕິເສດ ເພື່ອຊ່ວຍໃຫ້ທ່ານແກ້ໄຂຂໍ້ຂັດແຍ່ງນີ້.
GIT
ສ່ວນຫນຶ່ງຂອງ ໄປ(1) ຊຸດ
ໃຊ້ git-rerere ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net