2017-04-26 50 views
0

如果有一個文件被直接添加到遠程文件中,我從本地目錄中推送的文件,是否有一種方法可以將該文件添加到遠程文件中,以便我可以拖放或獲取遠程文件並獲取該文件或任何新的文件?我可以跟蹤或添加一個Git倉庫中創建的文件,而不是在本地目錄中創建一個文件嗎?

這似乎是一個不好的做法,不管怎麼說,但假設一個文件是在WordPress安裝期間添加的,就像WP自動創建的wp-config一樣,現在在服務器上,但不在Git存儲庫中,除非我移動它與FTP或scp。發生這種情況時的最佳做法是什麼?

回答

1

我想你問的是如果有辦法讓Git自動提交併推送新的更改?不,但你可以用你喜歡的任何自動化工具來做到這一點。但是自動提交版本控制並不是一個好主意,您可能想要的卻是一個備份工具。

有關WP可能在安裝過​​程中創建的配置文件的情況是錯誤使用版本控制的一個很好的例子。該配置文件僅對特定計算機有用。其他部署也會生成該文件。如果他們都試圖推出他們的版本,它會產生合法的衝突。相反,請保持中央資源庫中的版本相當通用,並從此處進行部署。

如果要記錄每個部署的更改,請使用增量備份工具。


你可能會有什麼是每個部署是一個克隆,但本地更改是在他們自己的本地分支上完成的。這個本地分支永遠不會被推送(或者如果是,它僅用於存檔目的)。如果您進行了一般適用於其他部署的更改(如錯誤修復),請將該更改推回原處。

您可能會有一個分支用於本地更改,並使用master將補丁推回。你可以在本地提交任何你喜歡的東西,包括生成的WP配置,它用於本地部署的更改。

   [origin/master] 
A - B - C - D [master] 
      \ 
       E - F - G [local] 

由於主控上游存在新的更改,請將它們取回並將其放在本地上方。

git checkout master 
git pull 

         [origin/master] 
A - B - C - D - H - I [master] 
      \ 
       E - F - G [local] 

git rebase master 


         [origin/master] 
A - B - C - D - H - I [master] 
        \ 
         E1 - F1 - G1 [local] 

如果有局部的變化可能被上游提交,就像一個bug修復或改變一個通用模板或圖像,使用git cherry-pick複製只是單一的變化掌握和推動它。

git checkout master 
git cherry-pick F1 
git push 

          [origin/master] 
A - B - C - D - H - I - F2 [master] 
        \ 
         E1 - F1 - G1 [local] 

如果你真的想要把local到一箇中央服務器,把它推到一個命名爲部署分支。就像主機名或客戶端一樣。這將僅用於存檔目的。

+0

謝謝@Schwern這提供了很多想法。這也讓我思考圖像或其他上傳到遠程,如PDF。看起來決定什麼是關鍵要追蹤的是關鍵以及獨特之處。如果我正在進行本地開發,而我想在生產環境中進行鏡像,反之亦然,我應該將文件下拉到我需要的本地計算機上,並將它們添加到版本控制中。這讓我想到了也許我應該ssh看看Git在生產服務器上做了什麼,可能會有用的添加文件,然後在本地拉。再次感謝! – kaplan

相關問題