ฉันต้องการโคลนที่เก็บจาก GitHub ปัญหาคือฉันไม่ต้องการสาขาหลัก ฉันต้องการเวอร์ชันในคำขอดึงที่ไม่ได้รับการอนุมัตินี้
เป็นไปได้ไหมที่ฉันจะโคลนเวอร์ชันคำขอดึงแทนที่เก็บหลัก
ฉันต้องการโคลนที่เก็บจาก GitHub ปัญหาคือฉันไม่ต้องการสาขาหลัก ฉันต้องการเวอร์ชันในคำขอดึงที่ไม่ได้รับการอนุมัตินี้
เป็นไปได้ไหมที่ฉันจะโคลนเวอร์ชันคำขอดึงแทนที่เก็บหลัก
คำตอบ:
คุณสามารถโคลนสาขาที่คุณต้องการโดยใช้-b
ตัวเลือกและสำหรับคำขอดึง:
git clone https://github.com/user_name/repo_name.git -b feature/pull_request_name dir_name
ในกรณีของคุณสาขาที่คุณต้องการโคลนคือสาขาต้นทางของคำขอดึง ( feature/mongoose-support
):
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support ./mongoose-support
วิธีที่ง่ายที่สุดในการทำเช่นนี้:
git fetch origin pull/2/head
git checkout -b pullrequest FETCH_HEAD
ตอนนี้คุณจะอยู่ในสาขาใหม่ที่อยู่ในสถานะของคำขอดึง
คุณอาจต้องการตั้งค่านามแฝงโดยเรียกใช้
git config --global alias.pro '!f() { git fetch -fu ${2:-origin} refs/pull/$1/head:pr/$1 && git checkout pr/$1; }; f'
ตอนนี้คุณสามารถชำระเงินประชาสัมพันธ์ใด ๆ โดยการทำงานgit pr <pr_number>
หรือgit pr <pr_number> <remote>
ถ้า GitHub origin
ระยะไกลของคุณจะไม่ได้ตั้งชื่อ
.gitconfig
แฟ้มภายใต้:[alias]
pr = "!f() { git fetch $1 pull/$2/head:pull_$2; git co pull_$2; }; f"
ด้วยวิธีนี้ฉันแค่พิมพ์git pr upstream 62
และสิ่งต่อไปที่ฉันรู้ฉันอยู่ในสาขาใหม่ของ PR # 62 จากต้นน้ำ! หากคุณใช้เสมอorigin
คุณสามารถฮาร์ดโค้ดแทนการใช้รหัส$1
ได้ แต่จะสลับไปมาสำหรับฉัน
co
git fetch origin refs/pull/PR_NUMBER/head:NEW_LOCAL_BRANCH
เช่น:
$ git fetch origin pull/611/head:pull_611
$ git checkout pull_611
ทำการเปลี่ยนแปลงยอมรับผลักดันและเปิด PR ใหม่จาก Fork ของคุณบน GitHub
คุณสามารถทำตามคำแนะนำในส่วนสำคัญนี้เพื่อให้สามารถตรวจสอบระยะไกลได้โดยตรงโดยไม่ต้องคิดหาที่เก็บและสาขา
ตัวอย่างการใช้งาน
สำหรับหนึ่งในโครงการของฉัน (github3.py) ฉันมีสิ่งต่อไปนี้ในไฟล์ github3.py/.git/config
[remote "github"]
fetch = +refs/heads/*:refs/remotes/github/*
fetch = +refs/pull/*/head:refs/remotes/github/pr/*
url = git@github.com:sigmavirus24/github3.py
บรรทัดแรกคือสิ่งที่เป็นมาตรฐานสำหรับรีโมททุกตัวโดยมีข้อยกเว้นที่github
ถูกแทนที่ด้วยชื่อของรีโมท สิ่งที่หมายถึงนี้ก็คือว่าหัวระยะไกล (หรือหัวของสาขาบนเซิร์ฟเวอร์ที่) จะ "แมป" github/
เพื่อรีโมทท้องถิ่นนำหน้าด้วย ดังนั้นถ้าผมทำgit fetch github
และมีสาขาใน GitHub git checkout -t github/branch_name
ที่ไม่ถูกสังเกตเห็นแล้วไว้บนเครื่องของฉันก็จะดาวน์โหลดสาขาและฉันจะเปลี่ยนไปใช้มันเพื่อต้องการ:
บรรทัดที่สองทำสิ่งเดียวกัน แต่ใช้สำหรับการดึงคำขอแทนสาขาคอมไพล์มาตรฐาน refs/pull/*/head
นั่นเป็นเหตุผลที่คุณเห็น มันเรียกหัวของแต่ละคำขอดึง GitHub github/pr/#
และแผนที่ไปยัง ดังนั้นหากมีคนส่งคำขอดึงและมีหมายเลข 62 (ตัวอย่าง) คุณจะทำ:
git fetch github
git checkout -t github/pr/62
จากนั้นคุณจะอยู่ในสาขาท้องถิ่นที่เรียกว่าpr/62
(สมมติว่าไม่มีอยู่แล้ว) เป็นเรื่องดีและหมายความว่าคุณไม่ต้องติดตามรีโมทหรือสาขาของคนอื่น
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone
จากเอกสารสำคัญ
git fetch github
git co -t github/pr/#
วิธีนี้จะป้องกันไม่ให้คุณต้องคัดลอกและวาง URL ระยะไกลกำหนดชื่อสาขา ฯลฯ จากนั้นคุณจะได้ชื่อสาขาที่มีชื่อรัดกุมและถูกต้องโดยไม่ต้องยุ่งยาก แต่ฉันเข้าใจว่ามันอาจดูเหมือนหนักใจ
git clone git://github.com/dweldon/frappe
cd frappe
git pull origin pull/2/head
ฉันจะดึงคำขอดึงที่ไม่ได้ผสานสำหรับสาขาที่ฉันไม่ได้เป็นเจ้าของได้อย่างไร
git pull
สร้างการผสานลงในสาขาปัจจุบัน โดยปกติแล้วสำหรับการประชาสัมพันธ์ที่คุณต้องการเพียงgit fetch
เพื่อรับรหัสผู้เขียนต้นฉบับ (จากนั้นเข้าถึงได้ในชื่อ FETCH_HEAD) หากคุณต้องการผสานมันก็คุ้มค่าที่จะกล่าวถึงpull/2/merge
(แทนที่จะเป็นpull/2/head
) ซึ่งทำให้ GitHub ทำให้คุณมีการผสานรวมที่แน่นอนซึ่งจะเกิดขึ้นหากคุณคลิกปุ่ม [ผสาน] ในตอนนี้
เมื่อผู้ใช้ส่งคำร้องขอดึงพวกเขาจะขอให้รวมการเปลี่ยนแปลงบางอย่างจากสาขาบนโคลนของส้อมกลับไปยังที่เก็บของผู้ใช้รายอื่น
การเปลี่ยนแปลงที่คุณต้องการสามารถรับได้จากแหล่งที่มาของคำขอดึง ในการทำสิ่งนี้ให้โคลนที่เก็บของผู้ใช้ ( git://github.com/berstend/frappe.git
) จากนั้นตรวจสอบสาขาที่เขาสร้างคำขอดึงจาก ( feature/mongoose-support
)
หลังจากติดตั้งgit-extras
(cd /tmp && git clone --depth 1 https://github.com/tj/git-extras.git && cd git-extras && sudo make install)
คุณสามารถใช้ไฟล์ git pr
$ git pr 62 [remote]
ด้วยอินเทอร์เฟซบรรทัดคำสั่งใหม่อย่างเป็นทางการของ Github :
gh repo clone org/repo
cd repo
gh pr checkout 44
44
หมายเลขประชาสัมพันธ์อยู่ที่ไหนแต่ยังสามารถเป็นชื่อสาขาได้
ดูเพิ่มเติมรายละเอียดและตัวเลือกและคำแนะนำการติดตั้ง
คำขอดึงนั้นแสดงการกระทำจากทางแยกของบุคคลนั้นเพื่อให้คุณเห็นว่าเขากำลังผลักดันการเปลี่ยนแปลงจากfeature/mongoose-support
สาขา
คุณสามารถโคลนที่เก็บของเขาและชำระเงินสาขานั้นได้
clone
แต่fetch
เห็น: stackoverflow.com/questions/6743514/...