นี่คือคำสั่ง git-push ที่สามารถเรียกใช้ในผู้ให้บริการโฮสติ้งฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
git-push - อัปเดตการอ้างอิงระยะไกลพร้อมกับอ็อบเจกต์ที่เกี่ยวข้อง
เรื่องย่อ
คอมไพล์ ดัน [--ทั้งหมด | --กระจก | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack= ]
[--repo= ] [-f | --บังคับ] [--พรุน] [-v | --verbose]
[-u | --set-ต้นน้ำ]
[--[no-]ลงนาม|--ลงชื่อ=(จริง|เท็จ|หากถูกถาม)]
[--บังคับ-กับ-เช่า[= [: ]]]
[--ไม่-ตรวจสอบ] [ [ ...]]
DESCRIPTION
อัปเดตการอ้างอิงระยะไกลโดยใช้การอ้างอิงในเครื่อง ในขณะที่ส่งวัตถุที่จำเป็นเพื่อทำให้ .สมบูรณ์
ให้ผู้อ้างอิง
คุณสามารถทำให้สิ่งที่น่าสนใจเกิดขึ้นกับที่เก็บได้ทุกครั้งที่คุณกดเข้าไป โดย
การตั้งค่า ตะขอ ที่นั่น. ดูเอกสารประกอบสำหรับ git รับแพ็ค(1)
เมื่อบรรทัดคำสั่งไม่ได้ระบุตำแหน่งที่จะกดด้วย การโต้แย้ง,
branch.*.remote configuration สำหรับสาขาปัจจุบันจะถูกพิจารณาเพื่อกำหนดตำแหน่งที่จะ
ดัน. หากไม่มีการกำหนดค่า จะมีค่าเริ่มต้นเป็น ที่มา.
เมื่อบรรทัดคำสั่งไม่ได้ระบุสิ่งที่จะกดด้วย ... อาร์กิวเมนต์หรือ --all,
--mirror, --tags ตัวเลือก คำสั่งค้นหาค่าเริ่มต้น โดยการให้คำปรึกษา
การกำหนดค่า remote.*.push และหากไม่พบ ให้ใช้การกำหนดค่า push.default เป็น
ตัดสินใจว่าจะผลักอะไร (ดู git-config.php(1) สำหรับความหมายของ push.default)
เมื่อทั้งบรรทัดคำสั่งหรือการกำหนดค่าไม่ได้ระบุสิ่งที่จะพุช ค่าดีฟอลต์
ใช้พฤติกรรมซึ่งสอดคล้องกับค่าง่าย ๆ สำหรับ push.default: ปัจจุบัน
สาขาถูกผลักไปที่สาขาต้นน้ำที่สอดคล้องกัน แต่เพื่อเป็นมาตรการด้านความปลอดภัย การกด
จะถูกยกเลิกหากสาขาต้นน้ำไม่มีชื่อเดียวกับสาขาในเครื่อง
OPTIONS
ที่เก็บ "ระยะไกล" ที่เป็นปลายทางของการดำเนินการพุช พารามิเตอร์นี้สามารถเป็น
URL (ดูหัวข้อ GIT URLS ด้านล่าง) หรือชื่อรีโมต (ดูหัวข้อ
รีโมทด้านล่าง)
...
ระบุปลายทางที่จะอัปเดตด้วยวัตถุต้นทางใด รูปแบบของ a
พารามิเตอร์เป็นทางเลือกบวก + ตามด้วยวัตถุต้นทาง ,
ตามด้วยเครื่องหมายทวิภาค : ตามด้วย ref . ปลายทาง .
NS มักจะเป็นชื่อสาขาที่คุณอยากจะกด แต่ก็จะเป็นอะไรก็ได้
"นิพจน์ SHA-1" โดยพลการ เช่น master~4 หรือ HEAD (ดู gitrevisions(พ.ศ. 7)).
NS บอกว่าผู้อ้างอิงคนใดทางฝั่งระยะไกลได้รับการอัปเดตด้วยการกดนี้ โดยพลการ
ไม่สามารถใช้นิพจน์ได้ที่นี่ ต้องระบุชื่อผู้อ้างอิงจริง ถ้า git push
[ ] ไม่มีเลย อาร์กิวเมนต์ถูกตั้งค่าให้อัปเดตผู้อ้างอิงบางส่วนที่
ปลายทางด้วย ด้วยรีโมท .push ตัวแปรการกำหนดค่า :
ส่วนหนึ่งสามารถละเว้นได้—การผลักดันดังกล่าวจะอัปเดตการอ้างอิงนั้น ปกติจะอัปเดตโดยไม่ต้อง
ใด ๆ บนบรรทัดคำสั่ง มิฉะนั้นหายไป : หมายถึงการปรับปรุงเหมือนกัน
อ้างเป็น .
วัตถุที่อ้างอิงโดย ใช้ในการอัพเดท อ้างอิงบนรีโมท
ด้านข้าง. โดยค่าเริ่มต้น จะอนุญาตก็ต่อเมื่อ ไม่ใช่แท็ก (มีคำอธิบายประกอบหรือ
น้ำหนักเบา) แล้วต่อเมื่อสามารถกรอไปข้างหน้าได้เท่านั้น . โดยมีตัวเลือก
นำ + คุณสามารถบอกให้ Git อัปเดต อ้างอิงแม้ว่าจะไม่ได้รับอนุญาตโดย
ค่าเริ่มต้น (เช่น ไม่ใช่การกรอไปข้างหน้า) สิ่งนี้ไม่ได้ ไม่ พยายามรวมตัว เข้าไปข้างใน
. ดูตัวอย่างด้านล่างสำหรับรายละเอียด
แท็ก หมายถึง เหมือนกับ refs/tags/ :refs/tags/ .
ดันว่าง อนุญาตให้คุณลบ อ้างอิงจากที่เก็บระยะไกล
refspec พิเศษ : (หรือ +: เพื่ออนุญาตการอัพเดทแบบไม่กรอไปข้างหน้า) สั่งให้ Git กด
สาขาที่ "ตรงกัน" : สำหรับทุกสาขาที่มีอยู่บนฝั่งโลคัลฝั่งระยะไกล
จะได้รับการอัปเดตหากมีสาขาที่มีชื่อเดียวกันอยู่แล้วบนฝั่งรีโมต
--ทั้งหมด
ดันทุกสาขา (เช่น refs ภายใต้ refs/heads/); ไม่สามารถใช้ร่วมกับผู้อื่นได้ .
--พรุน
ลบสาขาระยะไกลที่ไม่มีสาขาในเครื่อง ตัวอย่างเช่นรีโมท
สาขา tmp จะถูกลบออกหากไม่มีสาขาในพื้นที่ที่มีชื่อเดียวกัน
มากกว่า. สิ่งนี้ยังเคารพ refspecs เช่น git push --prune remote
refs/heads/*:refs/tmp/* จะทำให้แน่ใจว่ารีโมท refs/tmp/foo จะถูกลบออกหาก
ไม่มี refs/heads/foo
--กระจก
แทนที่จะตั้งชื่อผู้อ้างอิงแต่ละคนเพื่อผลักดัน ให้ระบุว่าผู้อ้างอิงทั้งหมดอยู่ภายใต้ผู้อ้างอิง/ (ซึ่ง
รวมถึงแต่ไม่จำกัดเพียง refs/heads/, refs/remotes/ และ refs/tags/) จะถูกมิเรอร์
ไปยังที่เก็บระยะไกล ผู้อ้างอิงในพื้นที่ที่สร้างขึ้นใหม่จะถูกผลักไปที่ปลายทางระยะไกล
การอ้างอิงที่อัพเดตในเครื่องจะถูกบังคับให้อัปเดตที่ปลายทางระยะไกล และการอ้างอิงที่ถูกลบจะเป็น
ถอดออกจากปลายรีโมท นี่เป็นค่าเริ่มต้นหากตัวเลือกการกำหนดค่า
ระยะไกล. .mirror ถูกตั้งค่า
-n, --ดรายรัน
ทำทุกอย่างยกเว้นส่งการอัปเดตจริงๆ
--พอร์ซเลน
สร้างเอาต์พุตที่เครื่องอ่านได้ บรรทัดสถานะเอาต์พุตสำหรับผู้อ้างอิงแต่ละคนจะเป็น
แยกแท็บแล้วส่งไปที่ stdout แทน stderr ชื่อสัญลักษณ์เต็มของ
จะมีการให้ผู้อ้างอิง
--ลบ
การอ้างอิงที่แสดงรายการทั้งหมดจะถูกลบออกจากที่เก็บระยะไกล นี้เหมือนกับคำนำหน้า
ผู้อ้างอิงทั้งหมดที่มีเครื่องหมายทวิภาค
--แท็ก
การอ้างอิงทั้งหมดภายใต้ refs/tags จะถูกผลัก นอกเหนือจาก refspecs ที่ระบุไว้อย่างชัดเจนใน
บรรทัดคำสั่ง.
--ติดตาม-แท็ก
ผลักผู้อ้างอิงทั้งหมดที่จะผลักโดยไม่มีตัวเลือกนี้และยังกดที่มีคำอธิบายประกอบ
แท็กใน refs/tags ที่หายไปจากรีโมตแต่ชี้ไปที่ commit-ish that
สามารถเข้าถึงได้จากผู้ตัดสินที่ถูกผลัก นอกจากนี้ยังสามารถระบุได้ด้วย
ตัวแปรการกำหนดค่า push.followTags. สำหรับข้อมูลเพิ่มเติมโปรดดู push.followTags in
git-config.php(1)
--[no-]ลงนาม --sign=(true|false|if-asked)
GPG ลงนามในคำขอพุชเพื่ออัปเดตผู้อ้างอิงฝ่ายรับเพื่อให้เป็น
ตรวจสอบโดยตะขอและ/หรือเข้าสู่ระบบ หากเป็นเท็จหรือ --no-signed จะไม่มีการลงนามใดๆ
พยายาม หากเป็น true หรือ --signed การพุชจะล้มเหลวหากเซิร์ฟเวอร์ไม่รองรับ
ลงนามผลักดัน หากตั้งค่าเป็น if-asked ให้ลงชื่อเข้าใช้หากเซิร์ฟเวอร์รองรับการลงชื่อเท่านั้น
ดัน การพุชจะล้มเหลวด้วยหากการโทรไปยัง gpg --sign จริงล้มเหลว ดู คอมไพล์-
รับแพ็ค(1) สำหรับรายละเอียดเกี่ยวกับการสิ้นสุดการรับ
--[ไม่-]อะตอม
ใช้ธุรกรรมปรมาณูทางฝั่งระยะไกล หากมี ไม่ว่าผู้ตัดสินทั้งหมดจะเป็น
อัปเดต หรือเกิดข้อผิดพลาด ไม่มีการอัพเดตผู้อ้างอิง หากเซิร์ฟเวอร์ไม่รองรับ atomic
ดันดันจะล้มเหลว
--receive-pack= , --exec=
เส้นทางสู่ git รับแพ็ค โปรแกรมที่ปลายรีโมท บางครั้งมีประโยชน์เมื่อกด
ไปยังที่เก็บระยะไกลบน ssh และคุณไม่มีโปรแกรมในไดเร็กทอรีบน
ค่าเริ่มต้น $PATH
--[ไม่-]บังคับ-กับ-เช่า --บังคับ-กับ-เช่า= ,
--force-with-lease= :
โดยปกติ "git push" ปฏิเสธที่จะอัปเดตการอ้างอิงระยะไกลที่ไม่ใช่บรรพบุรุษของ
ผู้อ้างอิงในพื้นที่เคยเขียนทับมัน
ตัวเลือกนี้จะแทนที่ข้อจำกัดนี้หากค่าปัจจุบันของการอ้างอิงระยะไกลคือ
มูลค่าที่คาดหวัง "git push" ล้มเหลวเป็นอย่างอื่น
ลองนึกภาพว่าคุณต้องรีเบสสิ่งที่คุณได้เผยแพร่ไปแล้ว คุณจะต้อง
ข้ามกฎ "ต้องกรอไปข้างหน้า" เพื่อแทนที่ประวัติคุณเดิม
ตีพิมพ์พร้อมกับประวัติการดัดแปลง ถ้าคนอื่นสร้างทับต้นฉบับของคุณ
ประวัติขณะที่ท่านกำลังปรับฐาน ปลายกิ่งที่รีโมทอาจก้าวหน้าด้วย
ความมุ่งมั่นของเธอและการผลักดันอย่างสุ่มสี่สุ่มห้าด้วย --force จะทำให้งานของเธอสูญเสียไป
ตัวเลือกนี้ช่วยให้คุณบอกว่าคุณคาดหวังประวัติที่คุณกำลังอัปเดตคือสิ่งที่คุณ
สร้างใหม่และต้องการแทนที่ หากผู้อ้างอิงระยะไกลยังคงชี้ไปที่คอมมิตคุณ
ระบุ คุณสามารถมั่นใจได้ว่าไม่มีใครทำอะไรกับผู้อ้างอิง มันเป็นเหมือน
ทำการ "เช่า" กับผู้อ้างอิงโดยไม่ล็อคอย่างชัดเจนและผู้อ้างอิงระยะไกลคือ
ปรับปรุงเฉพาะในกรณีที่ "สัญญาเช่า" ยังคงถูกต้อง
--force-with-lease คนเดียวโดยไม่ระบุรายละเอียดจะปกป้องผู้อ้างอิงระยะไกลทั้งหมด
ที่กำลังจะได้รับการอัปเดตโดยกำหนดให้ค่าปัจจุบันเท่ากับค่า
สาขาการติดตามระยะไกลที่เรามีสำหรับพวกเขา
--force-with-lease= โดยไม่ระบุมูลค่าที่คาดหวังจะปกป้อง
ชื่อผู้อ้างอิง (คนเดียว) หากจะอัปเดตโดยกำหนดให้ค่าปัจจุบันเป็น
เช่นเดียวกับสาขาการติดตามระยะไกลที่เรามีให้
--force-with-lease= : จะปกป้องผู้อ้างอิงที่มีชื่อ (คนเดียว) ถ้าเป็น
กำลังจะได้รับการอัปเดตโดยกำหนดให้ค่าปัจจุบันเท่ากับค่าที่ระบุ
ค่า (ซึ่งอนุญาตให้แตกต่างจากสาขาการติดตามระยะไกลเรา
มีชื่อผู้อ้างอิงหรือเราไม่จำเป็นต้องมีสาขาการติดตามระยะไกล
เมื่อใช้แบบฟอร์มนี้)
โปรดทราบว่าทุกรูปแบบอื่นที่ไม่ใช่ --force-with-lease= : ที่ระบุ
มูลค่าปัจจุบันที่คาดหวังของผู้อ้างอิงอย่างชัดเจนยังคงเป็นการทดลองและของพวกเขา
ความหมายอาจเปลี่ยนแปลงเมื่อเรามีประสบการณ์กับคุณลักษณะนี้
"--no-force-with-lease" จะยกเลิก --force-with-lease ก่อนหน้าบนคำสั่ง
เส้น
-f, --แรง
โดยปกติ คำสั่งปฏิเสธที่จะอัปเดตการอ้างอิงระยะไกลที่ไม่ใช่บรรพบุรุษของ
ผู้อ้างอิงในพื้นที่เคยเขียนทับมัน นอกจากนี้ เมื่อใช้ตัวเลือก --force-with-lease คำสั่ง
คำสั่งปฏิเสธที่จะอัปเดตผู้อ้างอิงระยะไกลซึ่งค่าปัจจุบันไม่ตรงกับสิ่งที่เป็น
ที่คาดหวัง
แฟล็กนี้ปิดใช้งานการตรวจสอบเหล่านี้ และอาจทำให้ที่เก็บระยะไกลสูญเสียการคอมมิต
ใช้ด้วยความระมัดระวัง
โปรดทราบว่า --force ใช้กับผู้อ้างอิงทั้งหมดที่ถูกผลัก ดังนั้นจึงใช้กับ
push.default ตั้งค่าให้ตรงกันหรือกำหนดปลายทางการพุชหลายรายการด้วย
remote.*.push อาจเขียนทับ refs อื่นที่ไม่ใช่สาขาปัจจุบัน (รวมถึง refs ในพื้นที่
ที่อยู่เบื้องหลังคู่หูระยะไกลอย่างเคร่งครัด) ดันไปนิดเดียวเอง
สาขา ใช้ + หน้า refspec เพื่อผลัก (เช่น git push origin +master เพื่อบังคับ
ผลักดันไปยังสาขาหลัก) ดู ... ส่วนด้านบนสำหรับรายละเอียด
--repo=
ตัวเลือกนี้เทียบเท่ากับ การโต้แย้ง. หากกำหนดทั้งสองไว้
อาร์กิวเมนต์บรรทัดคำสั่งมีความสำคัญกว่า
-u, --set-อัพสตรีม
สำหรับทุกสาขาที่เป็นปัจจุบันหรือที่พุชสำเร็จ ให้เพิ่มอัปสตรีม (ติดตาม)
อ้างอิง ใช้โดยอาร์กิวเมนต์น้อย git-ดึง(1) และคำสั่งอื่นๆ สำหรับข้อมูลเพิ่มเติม,
เห็น สาขา. .ผสาน in git-config.php(1)
--[ไม่-]ผอม
ตัวเลือกเหล่านี้จะถูกส่งต่อไปยัง git-ส่งแพ็ค(1). การถ่ายโอนที่บางลดลงอย่างมาก
จำนวนข้อมูลที่ส่งเมื่อผู้ส่งและผู้รับแบ่งปันวัตถุเดียวกันจำนวนมากใน
ทั่วไป. ค่าเริ่มต้นคือ --thin
-q, --เงียบ
ระงับเอาต์พุตทั้งหมด รวมถึงรายการผู้อ้างอิงที่อัปเดต เว้นแต่จะเกิดข้อผิดพลาด
ความคืบหน้าจะไม่ถูกรายงานไปยังสตรีมข้อผิดพลาดมาตรฐาน
-v, --เวอร์โบส
เรียกใช้อย่างละเอียด
--ความคืบหน้า
สถานะความคืบหน้าจะถูกรายงานในสตรีมข้อผิดพลาดมาตรฐานโดยค่าเริ่มต้นเมื่อเป็น
แนบกับเทอร์มินัล เว้นแต่จะระบุ -q แฟล็กนี้บังคับสถานะความคืบหน้าแม้กระทั่ง
หากกระแสข้อผิดพลาดมาตรฐานไม่ได้ส่งตรงไปยังเทอร์มินัล
--no-recurse-submodules --recurse-submodules = ตรวจสอบ | ตามความต้องการ | ไม่
สามารถใช้เพื่อให้แน่ใจว่า submodule ทั้งหมดที่ใช้โดยการแก้ไขที่จะถูกผลักนั้น
ได้ที่สาขาการติดตามระยะไกล ถ้า ตรวจสอบ ถูกใช้ Git จะตรวจสอบว่าทั้งหมด
submodule กระทำที่เปลี่ยนแปลงในการแก้ไขที่จะผลักมีอยู่ในอย่างน้อย
หนึ่งรีโมทของโมดูลย่อย หากคอมมิชชันขาดหายไป การพุชจะถูกยกเลิกและ
ออกโดยมีสถานะไม่เป็นศูนย์ ถ้า ตามความต้องการ ใช้โมดูลย่อยทั้งหมดที่เปลี่ยนแปลงใน
การแก้ไขที่จะผลักดันจะถูกผลักดัน หากตามความต้องการไม่สามารถผลักดันที่จำเป็นทั้งหมด
การแก้ไขก็จะถูกยกเลิกและออกด้วยสถานะที่ไม่ใช่ศูนย์ ค่าของ ไม่ or
การใช้ --no-recurse-โมดูลย่อย สามารถใช้เพื่อแทนที่ push.recurseSubmodules
ตัวแปรคอนฟิกูเรชันเมื่อไม่มีการเรียกซ้ำของโมดูลย่อย
--[ไม่-]ยืนยัน
สลับตะขอก่อนกด (ดู gitooks(5)). ค่าเริ่มต้นคือ --verify โดยให้เบ็ด a
โอกาสที่จะป้องกันการกด ด้วย --no-verify ตะขอจะถูกข้ามอย่างสมบูรณ์
GIT URL
โดยทั่วไป URL มีข้อมูลเกี่ยวกับโปรโตคอลการขนส่ง ที่อยู่ของ
เซิร์ฟเวอร์ระยะไกล และพาธไปยังที่เก็บ ขึ้นอยู่กับโปรโตคอลการขนส่งบางส่วน
ของข้อมูลนี้อาจขาดหายไป
Git รองรับโปรโตคอล ssh, git, http และ https (นอกจากนี้ยังสามารถใช้ ftp และ ftps ได้
สำหรับการดึงข้อมูลและ rsync สามารถใช้สำหรับการดึงข้อมูลและผลัก แต่สิ่งเหล่านี้ไม่มีประสิทธิภาพและ
เลิกใช้; ห้ามใช้)
การขนส่งดั้งเดิม (เช่น git:// URL) ไม่รับรองความถูกต้องและควรใช้กับ
ข้อควรระวังในเครือข่ายที่ไม่ปลอดภัย
ไวยากรณ์ต่อไปนี้อาจใช้กับพวกเขา:
· ssh://[user@]host.xz[:พอร์ต]/path/to/repo.git/
· git://host.xz[:พอร์ต]/path/to/repo.git/
· http[s]://host.xz[:พอร์ต]/path/to/repo.git/
· ftp[s]://host.xz[:พอร์ต]/path/to/repo.git/
· rsync://host.xz/path/to/repo.git/
ไวยากรณ์ที่เหมือน scp ทางเลือกอาจใช้กับโปรโตคอล ssh:
· [user@]host.xz:path/to/repo.git/
ไวยากรณ์นี้จะจำได้ก็ต่อเมื่อไม่มีเครื่องหมายทับก่อนโคลอนแรก สิ่งนี้ช่วยได้
แยกความแตกต่างของเส้นทางท้องถิ่นที่มีเครื่องหมายทวิภาค ตัวอย่างเช่น เส้นทางท้องถิ่น foo:bar สามารถ
ถูกระบุเป็นพาธสัมบูรณ์หรือ ./foo:bar เพื่อหลีกเลี่ยงการตีความผิดว่าเป็น ssh url
โปรโตคอล ssh และ git รองรับการขยายชื่อผู้ใช้เพิ่มเติม:
· ssh://[user@]host.xz[:พอร์ต]/~[ผู้ใช้]/path/to/repo.git/
· git://host.xz[:พอร์ต]/~[ผู้ใช้]/path/to/repo.git/
· [user@]host.xz:/~[ผู้ใช้]/path/to/repo.git/
สำหรับที่เก็บข้อมูลในเครื่อง ซึ่ง Git รองรับโดยกำเนิด ไวยากรณ์ต่อไปนี้อาจเป็น
ใช้:
· /path/to/repo.git/
· ไฟล์:///path/to/repo.git/
วากยสัมพันธ์ทั้งสองนี้ส่วนใหญ่เทียบเท่ากัน ยกเว้นเมื่อทำการโคลน เมื่ออดีตหมายถึง
--ตัวเลือกท้องถิ่น ดู git-โคลน(1) สำหรับรายละเอียด
เมื่อ Git ไม่ทราบวิธีจัดการกับโปรโตคอลการขนส่งบางอย่าง มันจะพยายามใช้
ระยะไกล- ผู้ช่วยระยะไกลหากมีอยู่ หากต้องการขอความช่วยเหลือจากระยะไกลอย่างชัดเจน
อาจใช้ไวยากรณ์ต่อไปนี้:
· ::
ที่ไหน อาจเป็นพาธ เซิร์ฟเวอร์และพาธ หรือสตริงเหมือน URL โดยพลการ
รู้จักโดยผู้ช่วยระยะไกลเฉพาะที่ถูกเรียก ดู gitremote ตัวช่วย(1) สำหรับ
รายละเอียด
หากมีที่เก็บระยะไกลที่มีชื่อคล้ายกันจำนวนมาก และคุณต้องการใช้a
รูปแบบที่แตกต่างกันสำหรับพวกเขา (เพื่อให้ URL ที่คุณใช้จะถูกเขียนใหม่เป็น URL ที่
งาน) คุณสามารถสร้างส่วนกำหนดค่าของแบบฟอร์ม:
[url " "]
แทน =
ตัวอย่างเช่นด้วยสิ่งนี้:
[url "git://git.host.xz/"]
แทน = host.xz:/path/to/
แทน = งาน:
URL เช่น "work:repo.git" หรือ "host.xz:/path/to/repo.git" จะถูกเขียนใหม่ในทุกกรณี
บริบทที่ใช้ URL เป็น "git://git.host.xz/repo.git"
หากคุณต้องการเขียน URL ใหม่สำหรับการพุชเท่านั้น คุณสามารถสร้างส่วนการกำหนดค่าของ
รูปแบบ:
[url " "]
ดันแทน =
ตัวอย่างเช่นด้วยสิ่งนี้:
[url "ssh://example.org/"]
pushInsteadOf = git://example.org/
URL เช่น "git://example.org/path/to/repo.git" จะถูกเขียนใหม่เป็น
"ssh://example.org/path/to/repo.git" สำหรับการพุช แต่การดึงจะยังคงใช้ต้นฉบับ
URL
รีโมท
สามารถใช้ชื่ออย่างใดอย่างหนึ่งต่อไปนี้แทน URL as การโต้แย้ง:
· รีโมตในไฟล์กำหนดค่า Git: $GIT_DIR/config,
· ไฟล์ในไดเร็กทอรี $GIT_DIR/remotes หรือ
· ไฟล์ในไดเร็กทอรี $GIT_DIR/branches
สิ่งเหล่านี้ยังอนุญาตให้คุณละเว้น refspec จากบรรทัดคำสั่งเพราะแต่ละอัน
มี refspec ที่ git จะใช้เป็นค่าเริ่มต้น
ที่มีชื่อ รีโมท in องค์ประกอบ ไฟล์
คุณสามารถเลือกที่จะระบุชื่อของรีโมตที่คุณได้กำหนดค่าไว้ก่อนหน้านี้โดยใช้
git-ระยะไกล(1) git-config.php(1) หรือแม้แต่การแก้ไขไฟล์ $GIT_DIR/config ด้วยตนเอง URL
ของรีโมตนี้จะใช้เพื่อเข้าถึงที่เก็บ refspec ของรีโมตนี้จะเป็น
ใช้โดยค่าเริ่มต้นเมื่อคุณไม่ได้ระบุ refspec บนบรรทัดคำสั่ง รายการใน
ไฟล์ config จะปรากฏดังนี้:
[ระยะไกล " "]
url =
pushurl =
ดัน =
เรียก =
NS ใช้สำหรับดันเท่านั้น เป็นทางเลือกและค่าเริ่มต้นเป็น .
ที่มีชื่อ ไฟล์ in $GIT_DIR/รีโมท
คุณสามารถเลือกที่จะระบุชื่อไฟล์ใน $GIT_DIR/remotes URL ในไฟล์นี้
จะถูกใช้เพื่อเข้าถึงที่เก็บ refspec ในไฟล์นี้จะถูกใช้เป็นค่าเริ่มต้น
เมื่อคุณไม่ได้ระบุ refspec ในบรรทัดคำสั่ง ไฟล์นี้ควรมีดังต่อไปนี้
รูปแบบ:
URL: หนึ่งในรูปแบบ URL ด้านบน
ดัน:
ดึง:
ดัน: เส้นถูกใช้โดย คอมไพล์ ดัน และ Pull: ใช้เส้นโดย คอมไพล์ ดึง and คอมไพล์ นำมา.
Multiple Push: and Pull: อาจมีการระบุเส้นสำหรับการแมปสาขาเพิ่มเติม
ที่มีชื่อ ไฟล์ in $GIT_DIR/สาขา
คุณสามารถเลือกที่จะระบุชื่อไฟล์ใน $GIT_DIR/สาขา URL ในไฟล์นี้
จะถูกใช้เพื่อเข้าถึงที่เก็บ ไฟล์นี้ควรมีรูปแบบดังต่อไปนี้:
#
ต้องระบุ; # เป็นทางเลือก
git จะใช้หนึ่งใน refspecs ต่อไปนี้ ทั้งนี้ขึ้นอยู่กับการดำเนินการ ถ้าคุณไม่
ให้หนึ่งในบรรทัดคำสั่ง เป็นชื่อไฟล์ใน $GIT_DIR/branches
และ ค่าเริ่มต้นเป็นต้นแบบ
git fetch ใช้:
กรรมการ/หัวหน้า/ :refs/heads/
git push ใช้:
HEAD:อ้างอิง/หัว/
เอาท์พุท
ผลลัพธ์ของ "git push" ขึ้นอยู่กับวิธีการขนส่งที่ใช้ ส่วนนี้จะอธิบายถึง
เอาต์พุตเมื่อกดผ่านโปรโตคอล Git (ทั้งภายในเครื่องหรือผ่าน ssh)
สถานะของพุชจะถูกส่งออกในรูปแบบตาราง โดยแต่ละบรรทัดแสดงถึงสถานะ
ของผู้อ้างอิงคนเดียว แต่ละบรรทัดมีรูปแบบ:
-> ( )
หากใช้ --porcelain แต่ละบรรทัดของเอาต์พุตจะมีรูปแบบ:
\NS : \NS ( )
สถานะของการอ้างอิงที่เป็นปัจจุบันจะแสดงก็ต่อเมื่อใช้ตัวเลือก --porcelain หรือ --verbose
ธง
อักขระตัวเดียวระบุสถานะของผู้อ้างอิง:
(เว้นวรรค)
สำหรับความสำเร็จในการผลักดันไปข้างหน้าอย่างรวดเร็ว;
+
สำหรับการบังคับอัพเดทสำเร็จ
-
สำหรับผู้อ้างอิงที่ลบสำเร็จ;
*
สำหรับผู้ตัดสินใหม่สำเร็จ;
!
สำหรับผู้ตัดสินที่ถูกปฏิเสธหรือล้มเหลวในการผลักดัน และ
=
สำหรับผู้ตัดสินที่เป็นปัจจุบันและไม่จำเป็นต้องผลักดัน
สรุป
สำหรับผู้อ้างอิงที่ผลักได้สำเร็จ สรุปจะแสดงค่าเก่าและค่าใหม่ของผู้อ้างอิงใน
รูปแบบที่เหมาะสมสำหรับใช้เป็นอาร์กิวเมนต์เพื่อ git log (นี่คือ .. ในส่วนใหญ่
กรณีและ ... สำหรับการบังคับอัพเดตแบบไม่กรอไปข้างหน้า)
สำหรับการอัปเดตที่ล้มเหลว ให้รายละเอียดเพิ่มเติม:
ปฏิเสธ
Git ไม่ได้พยายามส่งผู้อ้างอิงเลย ปกติแล้วเพราะว่ามันไม่ใช่การกรอไปข้างหน้า
และคุณไม่ได้บังคับการอัปเดต
ถูกปฏิเสธจากระยะไกล
ปลายทางระยะไกลปฏิเสธการอัปเดต มักเกิดจากขอเกี่ยวด้านรีโมทหรือ
เนื่องจากที่เก็บระยะไกลมีตัวเลือกความปลอดภัยอย่างใดอย่างหนึ่งต่อไปนี้:
รับ.denyCurrentBranch (สำหรับการพุชไปยังสาขาที่เช็คเอาท์)
รับ.denyNonFastForwards (สำหรับการอัพเดทแบบบังคับไม่กรอไปข้างหน้า)
gets.denyDeletes หรือ receive.denyDeleteCurrent ดู git-config.php(1)
ความล้มเหลวจากระยะไกล
ปลายทางระยะไกลไม่ได้รายงานการอัปเดตผู้อ้างอิงที่ประสบความสำเร็จ อาจเป็นเพราะ
เกิดข้อผิดพลาดชั่วคราวที่ด้านระยะไกล การหยุดชะงักในการเชื่อมต่อเครือข่าย หรืออื่นๆ
ข้อผิดพลาดชั่วคราว
รถในตำนานจากเกม
ชื่อผู้ตัดสินในพื้นที่ถูกผลัก ลบผู้อ้างอิง/ / คำนำหน้า. ในกรณีของ
การลบชื่อผู้อ้างอิงในพื้นที่จะถูกละเว้น
ไปยัง
กำลังอัปเดตชื่อผู้อ้างอิงระยะไกล ลบผู้อ้างอิง/ / คำนำหน้า.
เหตุผล
คำอธิบายที่มนุษย์อ่านได้ กรณีผลักผู้ตัดสินสำเร็จ ไม่มีคำอธิบาย
มันจำเป็น. สำหรับผู้อ้างอิงที่ล้มเหลว จะมีการอธิบายสาเหตุของความล้มเหลว
หมายเหตุ เกี่ยวกับ(ABOUT) ไปข้างหน้าอย่างรวดเร็ว
เมื่อการอัพเดทเปลี่ยนสาขา (หรือมากกว่าโดยทั่วไป ผู้อ้างอิง) ที่เคยชี้ไปที่การคอมมิท A
เพื่อชี้ไปที่การคอมมิท B อื่นจะเรียกว่าการอัพเดตแบบกรอไปข้างหน้าก็ต่อเมื่อ B คือ a
ทายาทของเอ
ในการอัพเดตแบบกรอไปข้างหน้าจาก A เป็น B ชุดของการคอมมิตที่ต้นฉบับคอมมิท A ที่สร้างขึ้น
ด้านบนของ เป็นเซตย่อยของคอมมิตที่คอมมิท B สร้างขึ้นใหม่ จึงไม่
สูญเสียประวัติศาสตร์ใด ๆ
ในทางตรงกันข้าม การอัปเดตแบบไม่กรอไปข้างหน้าจะสูญเสียประวัติ ตัวอย่างเช่น สมมติว่าคุณกับ
มีคนอื่นเริ่มต้นจากการคอมมิต X เดียวกัน และคุณได้สร้างประวัติศาสตร์ที่นำไปสู่การคอมมิต B
ในขณะที่อีกคนหนึ่งสร้างประวัติศาสตร์ที่นำไปสู่การผูกมัด A ประวัติมีลักษณะดังนี้:
B
/
---X---อา
นอกจากนี้ สมมติว่าบุคคลอื่นได้ผลักดันการเปลี่ยนแปลงที่นำไปสู่ A กลับไปที่
พื้นที่เก็บข้อมูลดั้งเดิมที่คุณสองคนได้รับ X คอมมิชชันดั้งเดิม
การพุชที่ทำโดยบุคคลอื่นอัพเดตสาขาที่เคยชี้ไปที่การคอมมิต X to
จุดที่กระทำ A. เป็นการกรอไปข้างหน้า
แต่ถ้าลองดันก็จะพยายามอัพเดทสาขา (ที่ตอนนี้ชี้ที่ A) ด้วย
กระทำ B. สิ่งนี้ไม่ ไม่ กรอไปข้างหน้า หากคุณทำเช่นนั้น การเปลี่ยนแปลงที่แนะนำโดยคอมมิทA
จะหายไปเพราะตอนนี้ทุกคนจะเริ่มสร้างบนยอด B
คำสั่งโดยค่าเริ่มต้นไม่อนุญาตให้มีการอัปเดตที่ไม่กรอไปข้างหน้าเพื่อป้องกันสิ่งนี้
การสูญเสียประวัติศาสตร์
ถ้าไม่อยากเสียงาน (ประวัติจาก X ถึง B) หรืองานของอีกฝ่าย
(ประวัติจาก X ถึง A) คุณจะต้องดึงประวัติจากที่เก็บก่อน
สร้างประวัติที่มีการเปลี่ยนแปลงที่ทำโดยทั้งสองฝ่ายและผลักดันผลลัพธ์กลับ
คุณสามารถดำเนินการ "git pull" แก้ไขข้อขัดแย้งที่อาจเกิดขึ้น และ "git push" ผลลัพธ์ได้ A "git
pull" จะสร้างการรวมคอมมิต C ระหว่างคอมมิต A และ B
ข---ค
/ /
---X---อา
การอัปเดต A ด้วยการรวมคอมมิตที่ได้จะดำเนินไปอย่างรวดเร็วและการพุชของคุณจะเป็น
ได้รับการยอมรับ
หรือคุณสามารถรีเบสการเปลี่ยนแปลงของคุณระหว่าง X และ B ที่ด้านบนของ A โดยใช้ "git pull
--rebase" แล้วดันผลลัพธ์กลับ รีเบสจะสร้างคอมมิต D ใหม่ที่สร้าง
เปลี่ยนระหว่าง X และ B ที่ด้านบนของ A
BD
/ /
---X---อา
อีกครั้ง การอัปเดต A ด้วยคอมมิตนี้จะเดินหน้าอย่างรวดเร็วและจะยอมรับการกดของคุณ
มีสถานการณ์ทั่วไปอื่นที่คุณอาจเผชิญกับการปฏิเสธไม่กรอไปข้างหน้าเมื่อ
คุณพยายามจะผลัก และมันเป็นไปได้แม้ว่าคุณจะผลักเข้าไปในที่เก็บไม่มีใคร
อื่นดันเข้าไป หลังจากที่คุณกดยืนยัน A ด้วยตัวเอง (ในภาพแรกในส่วนนี้)
แทนที่ด้วย "git commit --amend" เพื่อสร้างคอมมิต B และคุณพยายามผลักมันออกไป
เพราะลืมไปว่าคุณได้ผลัก A ออกไปแล้ว ในกรณีเช่นนี้ และเฉพาะในกรณีที่คุณเป็น
แน่ใจว่าในระหว่างนี้ไม่มีใครดึงคอมมิชชัน A ของคุณก่อนหน้านี้ (และเริ่มสร้างบน
ด้านบนสุด) คุณสามารถเรียกใช้ "git push --force" เพื่อเขียนทับได้ กล่าวอีกนัยหนึ่ง "git push
--force" เป็นวิธีการที่สงวนไว้สำหรับกรณีที่คุณตั้งใจจะสูญเสียประวัติ
ตัวอย่าง
git push
ทำงานเหมือน git push , ที่ไหน เป็นรีโมตของสาขาปัจจุบัน (หรือ
origin หากไม่มีการกำหนดค่ารีโมตสำหรับสาขาปัจจุบัน)
กำเนิดการกดคอมไพล์
หากไม่มีการกำหนดค่าเพิ่มเติม ให้พุชสาขาปัจจุบันไปยังอัปสตรีมที่กำหนดค่าไว้
(ตัวแปรการกำหนดค่า remote.origin.merge) หากมีชื่อเดียวกับcurrent
สาขาและข้อผิดพลาดออกโดยไม่ผลักดันเป็นอย่างอื่น
ลักษณะการทำงานเริ่มต้นของคำสั่งนี้เมื่อไม่มี ได้รับสามารถกำหนดค่าโดย
การตั้งค่าตัวเลือกการกดของรีโมตหรือตัวแปรการกำหนดค่า push.default
ตัวอย่างเช่น ในค่าเริ่มต้นที่จะพุชเฉพาะสาขาปัจจุบันไปยังต้นทาง ให้ใช้ git config
รีโมท.origin.push HEAD ใด ๆ ที่ถูกต้อง (เช่นตัวอย่างด้านล่าง) can
ได้รับการกำหนดค่าเป็นค่าเริ่มต้นสำหรับ git push origin
git พุชที่มา:
ผลักสาขาที่ "จับคู่" ไปที่ต้นทาง ดู ในส่วนตัวเลือกด้านบนสำหรับa
คำอธิบายของสาขา "การจับคู่"
git push master ต้นทาง
ค้นหาผู้อ้างอิงที่ตรงกับต้นแบบในที่เก็บต้นทาง (โดยมากจะพบว่า
refs/heads/master) และอัปเดตผู้อ้างอิงเดียวกัน (เช่น refs/heads/master) ในแหล่งกำเนิด
ที่เก็บของกับมัน หากไม่มีมาสเตอร์จากระยะไกล มันจะถูกสร้าง
git ดันต้นทาง HEAD
วิธีที่สะดวกในการพุชสาขาปัจจุบันเป็นชื่อเดียวกันบนรีโมต
git push ยานแม่ master:satellite/master dev:satellite/dev
ใช้แหล่งอ้างอิงที่ตรงกับต้นแบบ (เช่น refs/heads/master) เพื่ออัปเดตการอ้างอิง
ที่ตรงกับ satellite/master (ส่วนใหญ่น่าจะเป็น refs/remotes/satellite/master) ใน
ที่เก็บของมารดา; ทำเช่นเดียวกันสำหรับ dev และ satellite/dev
นี่คือการจำลองการเรียกใช้ git fetch บน mothership โดยใช้ git push ที่รันใน
ทิศทางตรงกันข้ามเพื่อบูรณาการงานที่ทำบนดาวเทียมและมักจะ
จำเป็นเมื่อคุณสามารถเชื่อมต่อได้ทางเดียวเท่านั้น (เช่น ดาวเทียมสามารถ ssh เป็น
ความเป็นแม่แต่แม่ไม่สามารถเริ่มต้นการเชื่อมต่อกับดาวเทียมได้เพราะอย่างหลัง
อยู่หลังไฟร์วอลล์หรือไม่ได้เรียกใช้ sshd)
หลังจากรัน git นี้กดบนเครื่องดาวเทียม คุณจะต้อง ssh ไปที่
มารดาและเรียกใช้ git merge ที่นั่นเพื่อจำลองการดึง git ที่เรียกใช้
บนยานแม่เพื่อดึงการเปลี่ยนแปลงที่ทำกับดาวเทียม
git พุชต้นทาง HEAD:master
พุชสาขาปัจจุบันไปยังต้นแบบการจับคู่การอ้างอิงระยะไกลในที่เก็บต้นทาง
แบบฟอร์มนี้สะดวกที่จะผลักดันสาขาปัจจุบันโดยไม่ต้องคำนึงถึงท้องถิ่น
ชื่อ
git push origin master:refs/heads/experimental
สร้างการทดลองสาขาในที่เก็บต้นทางโดยคัดลอกต้นแบบปัจจุบัน
สาขา. แบบฟอร์มนี้จำเป็นเฉพาะเพื่อสร้างสาขาหรือแท็กใหม่ในรีโมท
ที่เก็บเมื่อชื่อโลคัลและชื่อรีโมตต่างกัน มิฉะนั้นผู้อ้างอิง
ชื่อด้วยตัวของมันเองจะทำงาน
git push กำเนิด: ทดลอง
ค้นหาผู้อ้างอิงที่ตรงกับการทดลองในที่เก็บต้นทาง (เช่น
refs/heads/experimental) แล้วลบทิ้ง
git พุชต้นทาง +dev:master
อัปเดต master branch ของที่เก็บ origin ด้วย dev branch อนุญาต
การปรับปรุงไม่กรอไปข้างหน้า สามารถ ออกจาก ไม่มีการอ้างอิง มุ่งมั่น ห้อยต่องแต่ง in ที่มา
กรุ พิจารณาสถานการณ์ต่อไปนี้ ซึ่งไม่สามารถกรอไปข้างหน้าได้:
o---o---o---A---B ต้นทาง/มาสเตอร์
\
X---Y---Z นักพัฒนา
คำสั่งดังกล่าวจะเปลี่ยนที่เก็บต้นกำเนิดเป็น
A---B (ไม่มีชื่อสาขา)
/
o---o---o---X---Y---Z มาสเตอร์
ข้อผูกพัน A และ B จะไม่เป็นของสาขาที่มีชื่อเชิงสัญลักษณ์อีกต่อไป และเป็นเช่นนั้น
ไม่สามารถเข้าถึงได้ ดังนั้น คอมมิทเหล่านี้จะถูกลบออกโดยคำสั่ง git gc บน
แหล่งเก็บข้อมูลต้นทาง
GIT
เป็นส่วนหนึ่งของ คอมไพล์(1) ห้องชุด
ใช้ git-push ออนไลน์โดยใช้บริการ onworks.net