โดยพื้นฐานแล้วฉันแค่ต้องการใช้ git เป็น FTP แบบทางเดียว
ฉันมี repo คอมไพล์ท้องถิ่นlocal/
มา ฉันต้องการที่จะผลักดันให้server:remote/
และฉันต้องการที่หลังจากนั้นไฟล์ทั้งหมดจะถูกตรวจสอบออกมาในremote
บนเซิร์ฟเวอร์ (เหมือนกันกับสิ่งที่มันมีลักษณะเฉพาะที่สมมติว่าผมgit-add
ed ทุกอย่าง)
กล่าวอีกนัยหนึ่งฉันต้องการจำลองพฤติกรรมนี้จาก Mercurial:
[hooks]
changegroup.update = hg update && echo updated successfully.
ฉันพบบทเรียนมากมายที่ทำเช่นนี้กับสองไดเรกทอรีแยกกันในฝั่งเซิร์ฟเวอร์ แต่ฉันต้องการใช้เพียงหนึ่งเดียว เป็นไปได้ไหม เมื่อฉันลองฉันได้รับข้อความด้านล่างซึ่งฉันไม่เข้าใจจริงๆ
อะไรคือวิธีปฏิบัติที่ดีที่สุดในการทำสิ่งนี้? (หากจำเป็นคุณสามารถสันนิษฐานได้ว่าฉันไม่เคยเปลี่ยนแปลงอะไรบนเซิร์ฟเวอร์ดังนั้น--force
สิ่งที่จะไม่เป็นปัญหา)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
.git
โฟลเดอร์ย่อย คุณอาจจะหรืออาจไม่ต้องการ จำกัด สิ่งนั้นตามค่าเริ่มต้นมันจะพร้อมใช้งานจากเซิร์ฟเวอร์ FTP ของคุณ นอกจากผลกระทบของดิสก์
git
เป็นเครื่องมือที่ดีสำหรับความต้องการของคุณ โดยค่าเริ่มต้น (และนี่คือเนื้อหาของข้อความแจ้งเตือนของคุณ) มันจะปฏิเสธที่จะผลักดันไปยังพื้นที่เก็บข้อมูลที่ไม่ได้เปลือยซึ่งมีบางสิ่งถูกเช็คเอาท์ที่สาขาเดียวกันเพราะการกระทำที่ผลักมันอย่างนั้นอาจหมายถึงว่า สมมติว่าไม่มีอะไรเปลี่ยนแปลงบนเซิร์ฟเวอร์ แต่ git ไม่สามารถรู้ได้) หากคุณต้องการที่จะยึดติดกับรูปแบบนี้เช่นข้อความบอกว่าเปลี่ยนการตั้งค่าของคุณและใช้ไม่สนใจ คุณอาจมีชีวิตที่เรียบง่ายกว่าเดิมโดยใช้rsync