簡體   English   中英

Git子模塊遠程服務器

[英]Git submodule remote server

我的本地計算機上的以下2個文件夾包含共享庫/幫助器:

  • /共享/庫/
  • /共享/助手/

上面的庫應該是我后端的子模塊...

  • /后端/應用/庫/
  • /后端/應用/助理/

...以及我的前端:

  • /前端/應用/庫/
  • /前端/應用/助理/

到目前為止,所有內容都已配置並且可以正常工作!

此外,我還有用於前端和后端的遠程服務器。

現在,我想獲得以下信息:如果我在一個共享庫中提交了更改,我想通過一個git push(后端,本地計算機上的前端和后端,服務器上的前端)將更改推入所有4個存儲庫中。

如果這是不可能的:如果我在庫中提交更改,那么我想一次將更改至少推送到我的2個本地目錄中。 如果我將本地目錄之一的更改推送到遠程服務器,則子模塊的更改也應自動推送到遠程目錄。

共享庫中的更改只能在共享文件夾中進行,而不能在后端或前端中進行!

謝謝你的幫助!

現在,我想獲得以下信息:如果我在一個共享庫中提交了更改,我想通過一個git push(后端,本地計算機上的前端和后端,服務器上的前端)將更改推入所有4個存儲庫中。

簡單的git push是不可能的。 您不能使用工作副本將更改“推送”到存儲庫-您只能推送到裸存儲庫。 對於帶有工作副本的存儲庫,您只能從其他地方拉出。

子模塊的使用有些棘手,我已經嘗試過做類似您之前談論的事情。 我完全放棄了這個想法,而是希望使git子模塊中的內容更加通用,並能夠作為獨立的東西安裝在系統上。

這樣看-如果庫中的代碼與主存儲庫有足夠的可分離性,那么將其視為自己的軟件包並分別進行開發/部署是合乎邏輯的。 如果庫中的代碼嚴格依賴於您的主存儲庫,那么無論如何它都應該只是一個存儲庫。

並不是說子模塊沒有用-我仍然在使用它們。 如果要使用它們,則必須遵循它們的規則:

  1. 進行更改后,提交並推送子模塊中的子模塊更改
  2. 推送子模塊中的更改后
    • 在父倉庫中提交子模塊更改
    • 推動父母回購
  3. 如果有任何回購協議需要子模塊中的更改
    • 在另一個倉庫中拉子模塊
    • 解決沖突並推動任何改變
    • 在父倉庫中提交子模塊更改
  4. 如果將子模塊拉到其他存儲庫導致更改
    • 返回第3步獲取原始存儲庫

看起來很麻煩,但是子模塊與其他任何回購協議實際上並沒有什么不同。 它們獨立存在,您需要以這種方式對待它們。 另外,從父級的角度來看,子模塊文件夾只是其中包含sha1哈希的文件。 git submodule命令只是方便腳本,用於在父級引用的存儲庫上進行操作。

UPDATE

雖然您無法在單個命令中使用純git來做到這一點,但是您可以編寫一個bash腳本來為您完成大部分工作,並且可以將其與git hooks組合以使其自動化。

它將無法自動處理沖突解決方案,如果出現問題,您可能會試圖找出4個單獨存儲庫的狀態。

我不會推薦這樣的解決方案。 它過於復雜且可能脆弱,要使它變得強大靈活且通用,您將不得不涉及的可能性之多。

暫無
暫無

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

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