美文网首页IT技术文章收藏
搭建小型Git服务器

搭建小型Git服务器

作者: baby_double | 来源:发表于2017-09-07 15:12 被阅读184次

    有些小公司没有搭建Git服务器,让一些用过Git服务器的人难以适应,增加了合代码的困惑,而且不知道自己改过哪些地方,追踪的时候会非常麻烦,今天教大家在电脑上搭建自己的Git服务器。
    如果几个人同时维护一份代码,可以向公司申请一台电脑,当成服务器,如果没有条件,别慌,可以把某个同事的电脑当成服务器(比较苦逼的就是那个同事电脑可能会卡一点),一个人维护那就更好了,接下下开始搭建Git服务器环境。
    一、搭建git服务器环境
    1)、从http://www.gitblit.com下载Git服务器包,如下图所示;

    6M}NI0B91GR8F8F37GQ83BO.png

    2)、下载成功之后,把该目录放在空间比较大的盘中,譬如本电脑的D盘比较大,我就放在了D盘:D:\git_server\gitblit-1.8.0,git_server是自己创建的一个目录,把下载的文件放在该目录下,进行解压。

    HJ3}3JTAKKKED0Z2MGFZSLG.png

    3)、创建存储项目代码的目录,这里为D:\git_server\GitProject
    4)、更改D:\git_server\gitblit-1.8.0\gitblit-1.8.0\data目录下的defaluts.properties文件。如下几个地方需要修改。

     1、 #git.repositoriesFolder = ${baseFolder}/git
            git.repositoriesFolder = D:\git_server\GitProject\demo
     2、#server.httpPort = 0
           server.httpPort = 10010
     3、server.httpBindInterface =192.168.1.166  后面的IP地址为电脑的IP地址
     4、server.httpsBindInterface =localhost
         更改后,保存关闭文件。
    

    5)、开始运行gitblit.cmd批处理文件。如下图所示表示运行成功。

    run_success.png

    6、在浏览器中输入:http://192.168.1.166:10010/,如果可以登录网页表示服务器环境搭建成功。
    7、用户默认情况下可以用用户名:admin和密码:admin进行登录,之后可以更改密码,如下所示。

    change_password.png

    7、客户端想访问服务端首先得创建版本库,如下图所示,填写相关内容后,点击创建按钮。

    create_database.png

    8、创建版本库之后,就会生成如下界面,客户端可以通过如下地址ssh://admin@192.168.1.166:29418/~admin/sensor.git访问服务器了。

    {N)CPA2G%5TSMZI8VGU_5YB.png
    注意:如果被当成Git服务器的电脑是动态获取IP地址,则需要更换defaluts.properties文件下的属性server.httpBindInterface =新的IP地址,然后启动gitblit.cmd,然后才可以访问网页:http://新的IP地址:10010/
    

    二、客户端访问Git服务器
    1、客户端想访问Git服务器首先需要下载TortoiseGit,建议下载地址:https://tortoisegit.org/download/,下载并安装成功后,找一个目录如:本人在路径e/worktools下,点击鼠标右键会弹出Git Bash here选项,单机,
    输入git clone http://admin@192.168.1.166:10010/r/~admin/radio.git,远程版本库就拉在本地目录E:\work_tools\sensor下了。
    2、用户想把自己的项目放到Git服务器上,譬如把本地的收音机radio项目传到GIt服务器上,首先把本地的Radio项目拷贝到E:\work_tools\sensor下,如下所示:

    radio.png

    3、拷贝好后,进入Git控制台输入cd sensor 命令进入sensor目录,然后输入git status命令,就可以看到加入的Radio_UI文件。

    ZRH@7~LE(43T{7~INM2R)O7.png

    4、接着在控制台输入git add Radio_UI命令,再次输入git status命令,此时文件表示可以提交的状态。
    5、git commit -m "first commit" 通过该命令提交代码,""包含的内容是注释文,此时代码仍然没有上传到服务器,而只是缓存在本地,接着输入
    git push ssh://admin@192.168.1.166:29418/~admin/sensor.git
    出现如下提示框,需要输入用户密码,前面两个password直接按Enter键,最后一个需要输入登录时的密码,输入之后就开始上传。

    auth.png

    6、上传成功后,用户可以去服务器界面查看,如下所示表示已经上传成功。

    upload.png

    三、GiTortoise操作Git服务器上的代码。

    创建远程分支
    (1)从服务器上下载代码并保存在E:\work_demos目录:
    首先进入E:\work_demos目录下,鼠标右键,点击Git Bash Here打开Git控制台,在控制台中输入如下命令:

    git clone ssh://admin@192.168.1.166:29418/~admin/Test.git
    

    ssh://admin@192.168.1.166:29418/~admin/Test.git表示你之前创建库的路径。代码下完之后,就会有一个新生成一个文件夹Test,通过命令cd Test,进入该目录。

    (1)查看远程和本地分支:git branch -a

    Administrator@MS-20170524EUSY MINGW64 /e/work_demos/Test (master)
    $ git branch -a
    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/master
    

    (2)创建分支:git branch sensor

     Administrator@MS-20170524EUSY MINGW64 /e/work_demos/Test (master)
    $ git branch sensor
    

    (3)查看本地分支:git branch, master前面有一个星号,表示当前正在master分支上

     Administrator@MS-20170524EUSY MINGW64 /e/work_demos/Test (master)
    $ git branch
    * master
    sensor
    

    (4)把当前分支推送到远程服务:密码就是登陆服务器的密码

    Administrator@MS-20170524EUSY MINGW64 /e/work_demos/Test (master)
    $ git push origin sensor
    Password authentication
    Password:
    Total 0 (delta 0), reused 0 (delta 0)
    remote: Updating references: 100% (1/1)
    To ssh://192.168.1.175:29418/~admin/Test.git
     * [new branch]      sensor -> sensor
    

    (5)切换到分支sensor

    Administrator@MS-20170524EUSY MINGW64 /e/work_demos/Test (master)
    $ git checkout sensor
    Switched to branch 'sensor'
    

    (6)再次查看本地分支:此时星号在分支sensor前面,说明正在分支sensor上。

    Administrator@MS-20170524EUSY MINGW64 /e/work_demos/Test (sensor)
    $ git branch
     master
    * sensor
    

    (7) 在分支sensor修改代码,例如增加一个文件。

    Administrator@MS-20170524EUSY MINGW64 /e/work_demos/Test (sensor)
    $ touch a.txt
    

    (8)查看修改状态,表示新增加了一个文件

    Administrator@MS-20170524EUSY MINGW64 /e/work_demos/Test (sensor)
    $ git status
    On branch sensor
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    
        a.txt
    
    nothing added to commit but untracked files present (use "git add" to track)
    

    (9)增加代码并添加;

    Administrator@MS-20170524EUSY MINGW64 /e/work_demos/Test (sensor)
    $ git add a.txt
    
    Administrator@MS-20170524EUSY MINGW64 /e/work_demos/Test (sensor)
    $ git commit -m "提交a.txt"
    [sensor 5770c67] 提交a.txt
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 a.txt
    

    (10)切到主分支:git checkout master

    Administrator@MS-20170524EUSY MINGW64 /e/work_demos/Test (sensor)
    $ git checkout master
    Switched to branch 'master'
    Your branch is up-to-date with 'origin/master'.
    

    (11)把sensor分支提交的代码合并到master分支上:git merge sensor

    Administrator@MS-20170524EUSY MINGW64 /e/work_demos/Test (master)
    $ git merge sensor
    Updating 04b2ecc..5770c67
    Fast-forward
    a.txt | 0
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 a.txt
    

    (12)删除分支sensor: git branch -d sensor
    删除分支后对修改的内容没有任何影响,因为已经合并到主分支了。

    Administrator@MS-20170524EUSY MINGW64 /e/work_demos/Test (master)
    $ git branch -d sensor
    Deleted branch sensor (was e525169).
    

    (11)把代码推送到服务器:git push

    Administrator@MS-20170524EUSY MINGW64 /e/work_demos/Test (master)
    $ git push
    Password authentication
    Password:
    Counting objects: 2, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (2/2), 278 bytes | 0 bytes/s, done.
    Total 2 (delta 0), reused 0 (delta 0)
    remote: Updating references: 100% (1/1)
    To ssh://192.168.1.175:29418/~admin/Test.git
    5770c67..e525169  master -> master
    

    (12)如果多人开发一份代码,为了区分用户,需要改用户名,命令如下:

    $git config --global user.email "Emily@gmail.com"
    $git config --global user.name "Emily"
    

    四、eclipse操作Git服务器的代码。
    (1)拉取服务器代码如下图所示:

    F}%HI8N4(G~Z372M%QE~C2V.png 4I%R40J%P}YT_49(40WB5_M.png

    URI是远程服务器下载代码的路径,直接粘贴,其他都会自动生成,密码是登录服务器的密码。


    6NL`CBDZ}58M}I6TD~B4}H0.png {4U2XP1E)%TO52XDI4H4PJU.png

    C:\Users\Administrator\git\Test是保存代码的路径,不是固定的,可以切换成其他路径。


    5OQU_}XW0VG78JDHO`IT5YS.png FPDS[}Q1JN@8%MXIL]9D)6C.png

    出现如下情况,表示eclipse中已经存在该代码。如果不存在Finish按钮不是灰色的,是可以点击的。到这里就是最后一步了,点击finish后代码就已经从远程服务器拉取下来了。

    QRZ5}4~PP@VQG~E(4)2X%CH.png

    (2)配置服务器的地址

    image.png image.png

    (2)在修改代码代码之前首先需要拉取最新代码git pull;

    image.png

    (3)提交修改的代码

    image.png

    注意:如果被当成Git服务器的电脑是动态获取IP地址,每次重启电脑后,需要查看电脑的ip,如果电脑IP和上一次相同,只用启动gitblit.cmd即可。如果不同则需要更换defaluts.properties文件下的属性server.httpBindInterface =新的IP地址,然后启动gitblit.cmd。启动后,还需要修改本地代码中.git目录下config配置文件后,eclipse才能正常操作服务器代码如下所示:

    相关文章

      网友评论

      • 65d25a6b48d9:你好,我git push 后,发现提交到仓库的文件只是一个2kB大小的文件是怎么回事?我检查过了,就是按你的教程来做的,可是提上去的文件不对:sleepy:
        65d25a6b48d9:@baby_double 作者你好,我刚才又试了一下,建了一个文件夹,里面有两个文本文件,按照步骤成功提交到远成仓库了。 但是我要提交的那个项目里面嵌套了多层文件夹,这种时候该怎么commit 提交
        65d25a6b48d9:@baby_double 你好,就是客户端提交文件到git服务器那一块,我git add 之后的操作----

        warning: adding embedded git repository: TeHaoTing
        hint: You've added another git repository inside your current repository.
        hint: Clones of the outer repository will not contain the contents of
        hint: the embedded repository and will not know how to obtain it.
        hint: If you meant to add a submodule, use:
        hint:
        hint: git submodule add <url> TeHaoTing
        hint:
        hint: If you added this path by mistake, you can remove it from the
        hint: index with:
        hint:
        hint: git rm --cached TeHaoTing
        hint:
        hint: See "git help submodule" for more information.

        Administrator@USER-20171207SJ MINGW64 /d/worktools/TeHaoTing (master)
        $ git add .

        Administrator@USER-20171207SJ MINGW64 /d/worktools/TeHaoTing (master)
        $ git status
        On branch master

        No commits yet

        Changes to be committed:
        (use "git rm --cached <file>..." to unstage)

        new file: TeHaoTing

        Changes not staged for commit:
        (use "git add <file>..." to update what will be committed)
        (use "git checkout -- <file>..." to discard changes in working directory)
        (commit or discard the untracked or modified content in submodules)

        modified: TeHaoTing (modified content, untracked content)

        Administrator@USER-20171207SJ MINGW64 /d/worktools/TeHaoTing (master)
        $ git commit -m"first commit"
        [master (root-commit) 7ca8d87] first commit
        1 file changed, 1 insertion(+)
        create mode 160000 TeHaoTing

        Administrator@USER-20171207SJ MINGW64 /d/worktools/TeHaoTing (master)
        $ git push ssh://admin@192.168.1.10:29418/~admin/TeHaoTing.git
        Password authentication
        Password:
        Password authentication
        Password:
        Password authentication
        Password:
        admin@192.168.1.10's password:
        Counting objects: 2, done.
        Writing objects: 100% (2/2), 194 bytes | 194.00 KiB/s, done.
        Total 2 (delta 0), reused 0 (delta 0)
        remote: Updating references: 100% (1/1)
        To ssh://192.168.1.10:29418/~admin/TeHaoTing.git
        * [new branch] master -> master

        然后发现提交上去的文件只是一个2KB的东西,感觉只add了一个文件夹名字一样。。
        baby_double:您的步骤是哪样的呢
      • Owen270:在另外的一台电脑上,怎么访问服务端的代码呢
        Owen270:我试下,感谢楼主的回复
        baby_double:两台电脑IP处于同一网段是可以直接访问服务端代码地址的。

      本文标题:搭建小型Git服务器

      本文链接:https://www.haomeiwen.com/subject/scwqrxtx.html