เกือบจะมีคำถามเดียวกันใน GitHubเมื่อปีที่แล้ว
แนวคิดคือการเปลี่ยนชื่อสาขาหลัก:
git branch -m master development
git branch -m published master
git push -f origin master
การทำให้อาจารย์มีสิ่งที่คุณต้องการให้ผู้คนใช้และทำงานอื่น ๆ ทั้งหมดในสาขา
(a " git-symbolic-ref HEAD refs/head/published
" จะไม่ถูกเผยแพร่ไปยัง repo ระยะไกล)
จะคล้ายกับ " ฉันจะลบต้นทาง / ต้นแบบใน Git ได้อย่างไร "
ตามที่กล่าวไว้ในหัวข้อนี้ : (เน้นของฉัน)
" git clone
" สร้างเฉพาะสาขาท้องถิ่นเดียว
ในการทำเช่นนั้นให้ดูที่HEAD ref
repo ระยะไกลและสร้างสาขาภายในที่มีชื่อเดียวกับสาขาระยะไกลที่อ้างถึง
ดังนั้นเพื่อสรุปสิ่งนี้คุณมี repo A และโคลนมัน:
HEAD
การอ้างอิงrefs/heads/master
และที่มีอยู่
-> คุณจะได้รับสาขาท้องถิ่นที่เรียกว่า master โดยเริ่มจากต้นกำเนิด / ต้นแบบ
การอ้างอิง HEAD refs/heads/anotherBranch
และที่มีอยู่
-> คุณได้รับสาขาท้องถิ่นที่เรียกว่าanotherBranch
เริ่มต้นจากorigin/anotherBranch
การอ้างอิง HEAD refs/heads/master
และไม่มีอยู่
-> "git clone" บ่น
ไม่แน่ใจว่ามีวิธีใดที่จะปรับเปลี่ยนโดยตรงHEAD
เตะใน repo
(ซึ่งเป็นประเด็นทั้งหมดของคำถามของคุณฉันรู้;))
อาจจะเป็นวิธีเดียวที่จะเป็น"สิ่งพิมพ์สำหรับคนจน"ซึ่งคุณ:
$ git-symbolic-ref HEAD refs/head/published
$ git-update-server-info
$ rsync -az .git/* server:/local_path_to/git/myRepo.git/
แต่นั่นจะเกี่ยวข้องกับการเข้าถึงการเขียนไปยังเซิร์ฟเวอร์ซึ่งไม่สามารถทำได้เสมอไป
ตามที่ฉันอธิบายใน " Git: วิธีที่ถูกต้องในการเปลี่ยน Active Branch ในที่เก็บเปล่า " git remote set-head
จะไม่เปลี่ยนแปลงอะไรใน repo ระยะไกล
มันจะเปลี่ยนสาขาการติดตามระยะไกลที่จัดเก็บไว้ใน repo ในพื้นที่ของคุณเท่านั้นในremotes/<name>/HEAD
.