簡體   English   中英

從服務器端目錄恢復GitLab存儲庫

[英]Recovering GitLab repos from the server-side directories

我曾在Ubuntu 16 VPS上運行GitLab-CE,但是由於一些nginx問題以及更一般的問題,最終導致我無法登錄服務器上的GitLab。 由於無論如何我都必須擦除服務器,因此我想備份/var/opt/gitlab/git-data/repositories/文件夾,並希望在以后安裝新的GitLab時能恢復到最佳狀態。

以后 我現在在Ubuntu 18.04上安裝了Omnibus版本的GitLab-EE。 我將文件夾從/var/opt/gitlab/git-data/repositories/username/從備份移動到了新安裝。 這些是文件夾,每個文件夾分別名為reponame.gitreponame.wiki.git 我還正確設置了文件權限。

唯一明顯不同的是:

  1. 用戶git屬於在新服務器上進行的新存儲庫上的組git ,但是舊用戶的組root與用戶git

  2. 執行ls -al ,新創建的存儲庫具有以下用於鈎子的內容

hooks -> /opt/gitlab/embedded/service/gitlab-shell/hooks/

而舊版本則具有hooks.old.1528595819/ ,該文件僅包含有關鈎子的自述文件,但無濟於事。

我有什么機會在新的GitLab安裝中恢復這些? 對於所有這些,我不能僅僅使hooks成為/opt/gitlab/.../hooks/的符號鏈接並更改所有者的組,因為這樣做並沒有做任何事情來使這些hooks顯示在Web界面上。

我最好的選擇是什么?

我已經設計出了一個解決方案,該解決方案比我想要的要耗費更多的時間,但是肯定可以將我所有的文件找回來。 這是我所做的,以防對日后的其他人有所幫助。 很多時候,很多東西被丟棄而沒有答案,如果您只是想找回文件,這可能會幫您。

  1. 將文件夾(名為[repo name] .git)復制到不是服務器的計算機上的文件夾中。 將每個文件夾放在其自己的包含文件夾中。 因此,例如sample.git被放在名為sample的文件夾中。
  2. 轉到終端中的該目錄
  3. git init重新初始化git init
  4. 使用git reset --hard HEAD在本地還原文件
  5. 將遠程服務器設置為該倉庫和提交的新分支。 現在,文件以可訪問的方式顯示在遠程GitLab服務器上。

git init步驟只是一個猜測,但這正是需要的。

我仍然很想聽聽是否有一種更快的方法來批量更新服務器上的所有存儲庫,但取而代之的是,這可行。

暫無
暫無

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

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