<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 搭建Git服務器 在[遠程倉庫](/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374385852170d9c7adf13c30429b9660d0eb689dd43a000)一節中,我們講了遠程倉庫實際上和本地倉庫沒啥不同,純粹為了7x24小時開機并交換大家的修改。 GitHub就是一個免費托管開源代碼的遠程倉庫。但是對于某些視源代碼如生命的商業公司來說,既不想公開源代碼,又舍不得給GitHub交保護費,那就只能自己搭建一臺Git服務器作為私有倉庫使用。 搭建Git服務器需要準備一臺運行Linux的機器,強烈推薦用Ubuntu或Debian,這樣,通過幾條簡單的`apt`命令就可以完成安裝。 假設你已經有`sudo`權限的用戶賬號,下面,正式開始安裝。 第一步,安裝`git`: ``` $ sudo apt-get install git ``` 第二步,創建一個`git`用戶,用來運行`git`服務: ``` $ sudo adduser git ``` 第三步,創建證書登錄: 收集所有需要登錄的用戶的公鑰,就是他們自己的`id_rsa.pub`文件,把所有公鑰導入到`/home/git/.ssh/authorized_keys`文件里,一行一個。 第四步,初始化Git倉庫: 先選定一個目錄作為Git倉庫,假定是`/srv/sample.git`,在`/srv`目錄下輸入命令: ``` $ sudo git init --bare sample.git ``` Git就會創建一個裸倉庫,裸倉庫沒有工作區,因為服務器上的Git倉庫純粹是為了共享,所以不讓用戶直接登錄到服務器上去改工作區,并且服務器上的Git倉庫通常都以`.git`結尾。然后,把owner改為`git`: ``` $ sudo chown -R git:git sample.git ``` 第五步,禁用shell登錄: 出于安全考慮,第二步創建的git用戶不允許登錄shell,這可以通過編輯`/etc/passwd`文件完成。找到類似下面的一行: ``` git:x:1001:1001:,,,:/home/git:/bin/bash ``` 改為: ``` git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell ``` 這樣,`git`用戶可以正常通過ssh使用git,但無法登錄shell,因為我們為`git`用戶指定的`git-shell`每次一登錄就自動退出。 第六步,克隆遠程倉庫: 現在,可以通過`git clone`命令克隆遠程倉庫了,在各自的電腦上運行: ``` $ git clone git@server:/srv/sample.git Cloning into 'sample'... warning: You appear to have cloned an empty repository. ``` 剩下的推送就簡單了。 ## 管理公鑰 如果團隊很小,把每個人的公鑰收集起來放到服務器的`/home/git/.ssh/authorized_keys`文件里就是可行的。如果團隊有幾百號人,就沒法這么玩了,這時,可以用[Gitosis](https://github.com/res0nat0r/gitosis)來管理公鑰。 這里我們不介紹怎么玩[Gitosis](https://github.com/res0nat0r/gitosis)了,幾百號人的團隊基本都在500強了,相信找個高水平的Linux管理員問題不大。 ## 管理權限 有很多不但視源代碼如生命,而且視員工為竊賊的公司,會在版本控制系統里設置一套完善的權限控制,每個人是否有讀寫權限會精確到每個分支甚至每個目錄下。因為Git是為Linux源代碼托管而開發的,所以Git也繼承了開源社區的精神,不支持權限控制。不過,因為Git支持鉤子(hook),所以,可以在服務器端編寫一系列腳本來控制提交等操作,達到權限控制的目的。[Gitolite](https://github.com/sitaramc/gitolite)就是這個工具。 這里我們也不介紹[Gitolite](https://github.com/sitaramc/gitolite)了,不要把有限的生命浪費到權限斗爭中。 ## 小結 * 搭建Git服務器非常簡單,通常10分鐘即可完成; * 要方便管理公鑰,用[Gitosis](https://github.com/sitaramc/gitolite); * 要像SVN那樣變態地控制權限,用[Gitolite](https://github.com/sitaramc/gitolite)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看