ฉันไม่แน่ใจว่าสิ่งที่คุณถาม คุณบอกว่าคุณต้องการโฮสต์บนเซิร์ฟเวอร์ของคุณเอง แต่คำถามของคุณบอกว่าคุณต้องการโฮสต์เช่นหน้า gitlab ซึ่งไม่ใช่เซิร์ฟเวอร์ของคุณเอง
ไม่ว่าในกรณีใด ๆ สิ่งนี้อาจช่วยได้
นี่คือสิ่งที่ฉันทำ
บนพีซีในเครื่อง
mkdir folderforwebsite
cd folderforwebsite
git init
echo "hello world" > index.html
git add index.html
git commit -m "initial commit"
ตอนนี้ฉันมี repo ในพื้นที่ คัดลอกไปยังเซิร์ฟเวอร์
scp -r ../folderforwebsite username@mydomain.com:/path/from/root/to/webfolder
ตอนนี้ฉันมีมันบนเซิร์ฟเวอร์ระยะไกล
ssh name@mydomain.com 'cd path/to/webfolder; git checkout -b live`
ขณะนี้มีทั้งต้นแบบและสาขาสดบนเว็บไซต์ ฉันทำสิ่งนี้ตั้งแต่ AFAICT คุณไม่สามารถผลักดันไปยังสาขาปัจจุบัน ดังนั้นตอนนี้เรามีสาขา "สด" ซึ่งเป็นปัจจุบันในระยะไกลและสาขา "ต้นแบบ" ซึ่งไม่ได้เป็น
ในที่สุดก็เพิ่มรีโมตไปยัง repo ในพื้นที่ของฉัน
git remote add web ssh://name@mydomain.com/path/from/root/to/webfolder
ตอนนี้เมื่อใดก็ตามที่ฉันต้องการอัปเดตเว็บไซต์ที่ฉันตรวจสอบข้อมูลลงในสาขาหลักในพื้นที่ของฉันแล้วเรียกใช้สคริปต์นี้
#!/bin/sh
set -e
set -v
git push web master
ssh username@mydomain.com git merge --ff-only master
git push
ผลักดันการเปลี่ยนแปลงของฉันไปที่สาขาไม่หมุนเวียนบนเว็บเซิร์ฟเวอร์ ssh
บันทึกแล้วเป็นเว็บเซิร์ฟเวอร์ได้อย่างรวดเร็วและส่งต่อการเปลี่ยนแปลงใน "ต้นแบบ" สาขาในปัจจุบัน ในกรณีนี้สาขา "สด"
--ff-only
แจ้งว่าล้มเหลวหากมีการเปลี่ยนแปลงบนเซิร์ฟเวอร์
หากมีการเปลี่ยนแปลงบนเซิร์ฟเวอร์ฉันสามารถดึงพวกเขาเป็นเจ้านายท้องถิ่นของฉันด้วย
git pull web live
ในสิ่งที่มากขึ้น ก่อนที่ฉันจะทำสิ่งนี้ฉันตั้งค่าคีย์ SSH บนเซิร์ฟเวอร์ระยะไกลดังนั้นฉันไม่ต้องพิมพ์รหัสผ่านใด ๆ
สิ่งนี้ไม่มีการเชื่อมต่อกับ github หรือ gitlab ฉันอาจผลักดันการเปลี่ยนแปลงของฉันที่นั่นเช่นกัน แต่พวกเขาไม่ได้เชื่อมต่อ