ฉันมี repo ส่วนตัวบนเซิร์ฟเวอร์และ rebase / force-push เป็นประจำซึ่งทำให้จำเป็นต้องรีเซ็ตสาขาในเครื่องบนคอมพิวเตอร์เครื่องอื่นของฉันบ่อยๆ ฉันจึงสร้างนามแฝง "catchup" ซึ่งอนุญาตให้ทำสิ่งนี้กับสาขาปัจจุบัน ซึ่งแตกต่างจากคำตอบอื่น ๆ ไม่มีชื่อสาขา hardcoded ในนามแฝงนี้
ยึดมั่นในแน่น.
[alias]
catchup = "!f(){ echo -n \"reset \\033[0;33m$(git symbolic-ref -q --short HEAD)\\033[0m to \\033[0;33m$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD))\\033[0m? (Y/n) \"; read -r ans; if [ \"$ans\" = \"y\" -o \"$ans\" = \"Y\" -o -z \"$ans\" ]; then git reset --hard $(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)); else echo \"catchup aborted\"; fi }; f"
รูปแบบที่เหมาะสม (จะไม่ทำงานกับบรรทัดใหม่ใน. gitconfig) ซึ่งมีลักษณะดังนี้:
"
!f(){
echo -n \"reset \\033[0;33m$(git symbolic-ref -q --short HEAD)\\033[0m to \\033[0;33m$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD))\\033[0m? (Y/n) \";
read -r ans;
if [ \"$ans\" = \"y\" -o \"$ans\" = \"Y\" -o -z \"$ans\" ]; then
git reset --hard $(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD));
else
echo \"catchup aborted\";
fi
}; f
"
\\033[0;33mและ\\033[0mสำหรับการเน้นสาขาในปัจจุบันและต้นน้ำที่มีสี
$(git symbolic-ref -q --short HEAD) เป็นชื่อสาขาปัจจุบัน
$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)) คือต้นน้ำของสาขาปัจจุบัน
เนื่องจากการรีเซ็ตเป็นการโทรที่อาจเป็นอันตราย (โดยเฉพาะอย่างยิ่งเมื่อใช้ตัวเลือก - ฮาร์ดคุณจะสูญเสียการเปลี่ยนแปลงใด ๆ ที่ไม่ปราศจากข้อผูกมัด) ดังนั้นจึงเป็นการบอกก่อนว่าคุณกำลังจะทำอะไร ตัวอย่างเช่นหากคุณอยู่ในสาขาdev-container ที่มีรีโมทเรียกว่าqcpp / dev-containerและคุณป้อนgit catchupคุณจะได้รับแจ้ง:
รีเซ็ต dev-container เป็น qcpp / dev-container หรือไม่ (Y / N)
หากคุณพิมพ์ y หรือเพียงแค่กดปุ่มย้อนกลับก็จะทำการรีเซ็ต หากคุณป้อนสิ่งอื่นการรีเซ็ตจะไม่ถูกดำเนินการ
หากคุณต้องการที่จะปลอดภัยสุดและโปรแกรมป้องกันการสูญเสีย unstaged / เปลี่ยนแปลงปราศจากข้อผูกมัดคุณสามารถแมงดานามแฝงดังกล่าวข้างต้นต่อไปด้วยการตรวจสอบตามสำหรับ diff
คำว่าบังคับของคำเตือน: ถ้าคุณกำลังทำงานกับประชาชนคนอื่น ๆ ที่เก็บได้ตามการทำงานในและคุณต้องนามแฝงนี้คุณกำลังทำมันผิด™