簡體   English   中英

你如何在遠程服務器上進行自動 git pull?

[英]How do you do an automatic git pull on remote server?

在我開始之前,我知道有很多與這個問題類似的問題,但我真的很難找到一個簡潔、安全、最佳的實踐,因為對它們的反饋是如此廣泛。

我想做的事:

  1. 在開發分支的本地機器上完成工作。
  2. 將更改推送到 git。 Git 發布到 webhook URL 並自動讓我的遠程服務器在開發站點上提取更改。
  3. 在開發站點上通過 QA 並確認正確后,將主分支推送到生產站點(與開發站點在同一台服務器上)。

我在哪里:

我在本地機器和遠程服務器上安裝了 git。 我可以將 mod 推送到開發分支到 git。 在遠程服務器上,我可以拉取更新,它就像一個魅力。 問題是當從我的本地機器推送更改時,我無法讓遠程服務器自動更新。

我的問題是:

  1. 對於遠程服務器開發站點目錄,我應該git init還是git init --bare 我不打算在服務器本身上進行更新。 我希望我的開發團隊在本地工作並將 mod 推送到服務器。 我相信我需要使用 git init 因為需要工作樹來設置 git 存儲庫的遠程別名,但我想確認一下。
  2. 我很確定來自 git 問題的 webhook 帖子是由於用戶權限造成的。 我怎樣才能安全地解決這個問題? 我已經閱讀了許多建議更新 git hook 文件的教程,但我覺得這比我需要采取的措施更為嚴厲。 我希望能夠讓 webhook 訪問一個安全地拉取文件的 URL,而無需添加大量代碼(如果可能的話)。

我本質上是一名 Web 開發人員,所以 git 和 sysadmin 任務通常是我存在的禍根。 同樣,我知道這個問題與其他問題類似,但我還沒有找到一種全面、簡潔、安全且最合乎邏輯的方法來解決這個問題。 我已經大約 16 個小時了,並且已經正式達到了“無進展地兜圈子”的點。

您可以使用 GitHub 服務掛鈎輕松完成此操作。

您需要再創建一個文件來處理執行 git pull 的過程。 添加一個名為 github.php 的新文件(或任何您希望的文件),然后添加:

<?php `git pull`;

保存該文件,並將其上傳到服務器上的存儲庫目錄。 然后,轉到Services Hooks -> Post-Receive URL並將Services Hooks -> Post-Receive URL復制到該文件,並將其粘貼到“Post-Receive URL”中,例如http://demo.test.com/myfolder/github.php

所以,當你推送時,GitHub 會自動訪問這個 URL,從而導致你的服務器執行git pull

要查看更多詳細信息,請轉到本教程

我有同樣的問題,代碼和開發技能強,系統管理員技能弱。 當我終於准備好推送代碼時,我不得不詢問GitHub代表他們建議的方法是什么,他們回復了 Capistrano。 它是一個Ruby應用程序,可以在遠程服務器上運行命令(例如 git pull),以及您可以想象的幾乎任何其他命令。

您可以閱讀以下幾篇文章以獲取更多信息:

不會撒謊,學習曲線非常陡峭,但是一旦您開始使用 Capistrano,您就會發現它非常適合推送代碼。 我在 Symfony 中開發我的應用程序,並且我有我的 Capistrano 設置來提取代碼、清除緩存和清除日志文件,所有這些都來自我本地機器的一個命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM