ฉันเพิ่งเรียนรู้ Git และมีบางอย่างที่ฉันไม่สามารถทำได้ หลังจากสร้างและใช้ที่เก็บ git ในเครื่อง Mac ของฉันฉันสามารถส่งสำเนาไปยังเซิร์ฟเวอร์อื่นที่อื่นได้หรือไม่ ฉันอยู่หลังไฟร์วอลล์ดังนั้นฉันจึงไม่สามารถเรียกใช้git cloneจากเครื่องอื่นได้
ฉันเพิ่งเรียนรู้ Git และมีบางอย่างที่ฉันไม่สามารถทำได้ หลังจากสร้างและใช้ที่เก็บ git ในเครื่อง Mac ของฉันฉันสามารถส่งสำเนาไปยังเซิร์ฟเวอร์อื่นที่อื่นได้หรือไม่ ฉันอยู่หลังไฟร์วอลล์ดังนั้นฉันจึงไม่สามารถเรียกใช้git cloneจากเครื่องอื่นได้
คำตอบ:
git remote add ชื่อ urlgit push ชื่อ สาขาตัวอย่าง:
git remote add origin git@github.com:foo/bar.git
git push origin master
ดูเอกสารสำหรับgit push- คุณสามารถตั้งค่ารีโมตเป็นรีโมตเริ่มต้นสำหรับสาขาที่กำหนด ถ้าคุณไม่ได้ชื่อoriginเป็นพิเศษ เพียงgit pushคนเดียวจะทำเช่นเดียวกับgit push origin สาขานี้ (สำหรับสาขาที่คุณอยู่)
git init --bare /foo/bar.gitแล้วพุชที่เก็บในเครื่องของคุณที่นั่น (เช่นในคำตอบนี้) คุณไม่จำเป็นต้องถ่ายโอนอะไรด้วยซิป / ฉีกไปยังเซิร์ฟเวอร์
สิ่งที่คุณอาจต้องทำคือก่อนอื่นให้ทำการโคลนพื้นที่เก็บข้อมูลบนเครื่องของคุณ
git clone --bare /path/to/repo /path/to/bare/repo.git # don't forget the .git!
ตอนนี้เก็บถาวรไดเรกทอรี repo.git ใหม่โดยใช้ tar / gzip หรือเครื่องมือเก็บถาวรที่คุณชื่นชอบจากนั้นคัดลอกไฟล์เก็บถาวรไปยังเซิร์ฟเวอร์
ยกเลิกการเก็บ repo บนเซิร์ฟเวอร์ของคุณ จากนั้นคุณจะต้องตั้งค่ารีโมตบนที่เก็บในเครื่องของคุณ:
git remote add repo-name user@host:/path/to/repo.git #this assumes you're using SSH
จากนั้นคุณจะสามารถผลักและดึงจาก repo ระยะไกลด้วย:
git push repo-name branch-name
git pull repo-name branch-name
มีหลายวิธีในการย้ายที่เก็บไปรอบ ๆgit bundleเป็นวิธีที่ดีหากคุณมีเครือข่ายไม่เพียงพอ เนื่องจากที่เก็บ Git เป็นเพียงไดเร็กทอรีที่เต็มไปด้วยไฟล์คุณจึงสามารถ "โคลน" ที่เก็บได้โดยการทำสำเนาของ.gitไดเร็กทอรีด้วยวิธีใดก็ได้ที่เหมาะกับคุณที่สุด
วิธีที่มีประสิทธิภาพมากที่สุดคือการใช้พื้นที่เก็บข้อมูลภายนอกที่ใดที่หนึ่ง (ใช้GitHubหรือชุดขึ้นGitosis ) git pushแล้ว
remote server> cd /home/ec2-user
remote server> git init --bare --shared test
add ssh pub key to remote server
local> git remote add aws ssh://ec2-user@<hostorip>:/home/ec2-user/dev/test
local> git push aws master
git push -u --allเราสามารถละเว้นได้originเนื่องจากเป็นชื่อสมมติเริ่มต้นสำหรับการพุชและ-uจะติดตามสาขาระยะไกลด้วย