导航:首页 > IDC知识 > 搭建本地git服务器

搭建本地git服务器

发布时间:2020-08-27 14:59:34

1、可以用git把服务器在本地建立仓库吗

git pull <name>
如果pull时提示“You asked me to pull without telling me whichbranch you want to merge with”,
说明本地有新建分支且已同步到服务器上,当从服务器下载代码时需要在本地config中配置该分支的merge信息。
配置时可以参考下面的例子:
$ git config branch.master.remote origin //master是分支名,origin是远程仓库名
$ git config branch.master.merge refs/heads/master!

2、如何搭建linux git服务器

首先我们分别在Git服务器和客户机中安装Git服务程序(刚刚实验安装过就不用安装了):
[root@linuxprobe ~]# yum install git
Loaded plugins: langpacks, proct-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Package git-1.8.3.1-4.el7.x86_64 already installed and latest version
Nothing to do

然后创建Git版本仓库,一般规范的方式要以.git为后缀:
[root@linuxprobe ~]# mkdir linuxprobe.git

修改Git版本仓库的所有者与所有组:
[root@linuxprobe ~]# chown -Rf git:git linuxprobe.git/

初始化Git版本仓库:
[root@linuxprobe ~]# cd linuxprobe.git/
[root@linuxprobe linuxprobe.git]# git --bare init
Initialized empty Git repository in /root/linuxprobe.git/

其实此时你的Git服务器就已经部署好了,但用户还不能向你推送数据,也不能克隆你的Git版本仓库,因为我们要在服务器上开放至少一种支持Git的协议,比如HTTP/HTTPS/SSH等,现在用的最多的就是HTTPS和SSH,我们切换至Git客户机来生成SSH密钥:
[root@linuxprobe ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
65:4a:53:0d:4f:ee:49:4f:94:24:82:16:7a:dd:1f:28 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
| .o+oo.o. |
| .oo *.+. |
| ..+ E * o |
| o = + = . |
| S o o |
| |
| |
| |
| |
+-----------------+

将客户机的公钥传递给Git服务器:
[root@linuxprobe ~]# ssh-copy-id 192.168.10.10
[email protected]'s password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '192.168.10.10'"
and check to make sure that only the key(s) you wanted were added.

此时就已经可以从Git服务器中克隆版本仓库了(此时目录内没有文件是正常的):
[root@linuxprobe ~]# git clone [email protected]:/root/linuxprobe.git
Cloning into 'linuxprobe'...
warning: You appear to have cloned an empty repository.
[root@linuxprobe ~]# cd linuxprobe
[root@linuxprobe linuxprobe]#

初始化下Git工作环境:
[root@linuxprobe ~]# git config --global user.name "Liu Chuan"
[root@linuxprobe ~]# git config --global user.email "[email protected]"
[root@linuxprobe ~]# git config --global core.editor vim

向Git版本仓库中提交一个新文件:
[root@linuxprobe linuxprobe]# echo "I successfully cloned the Git repository" > readme.txt
[root@linuxprobe linuxprobe]# git add readme.txt
[root@linuxprobe linuxprobe]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached ..." to unstage)
#
# new file: readme.txt
#
[root@linuxprobe linuxprobe]# git commit -m "Clone the Git repository"
[master (root-commit) c3961c9] Clone the Git repository
Committer: root
1 file changed, 1 insertion(+)
create mode 100644 readme.txt
[root@linuxprobe linuxprobe]# git status
# On branch master
nothing to commit, working directory clean

但是这次的操作还是只将文件提交到了本地的Git版本仓库,并没有推送到远程Git服务器,所以我们来定义下远程的Git服务器吧:
[root@linuxprobe linuxprobe]# git remote add server [email protected]:/root/linuxprobe.git

将文件提交到远程Git服务器吧:
[root@linuxprobe linuxprobe]# git push -u server master
Counting objects: 3, done.
Writing objects: 100% (3/3), 261 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:/root/linuxprobe.git
* [new branch] master -> master
Branch master set up to track remote branch master from server.

为了验证真的是推送到了远程的Git服务,你可以换个目录再克隆一份版本仓库(虽然在工作中毫无意义):
[root@linuxprobe linuxprobe]# cd ../Desktop
[root@linuxprobe Desktop]# git clone [email protected]:/root/linuxprobe.git
Cloning into 'linuxprobe'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
[root@linuxprobe Desktop]# cd linuxprobe/
[root@linuxprobe linuxprobe]# cat readme.txt
I successfully cloned the Git repository

这篇是详细介绍Git的,中间有一部分是怎么去搭建,你可以看下

3、如何在mac系统下搭建git服务器

Git支持的协议主要是四种:
本地: 需要文件共享系统,权限不好控制
HTTP:速度慢
SSH:同时支持读写操作,不支持匿名的读取(Git默认协议)
GIT:最快

搭建的难易程度和特点综合筛选,最合适的还是ssh,并且大部分服务器上基本都有ssh服务,所以省去了不少麻烦。一个最基本的思路是给每一个人一个
ssh帐号,这样大家就可以通过用户名和口令来访问了,但是显然这不是一个好的选择,这个做法有些多余,并且对于repo的权限很难管理。
在使用Github的时候,会利用rsa.pub公钥/私钥的方式,这样在服务端拥有用户的公钥(*.pub)之后就可以,跨过繁琐的口令,直接认证提交了,而服务端也会根据不同的用户身份,对其权限有着更加灵活的管理。因此我们也采用这种方式。
服务端
为了使远程库访问更加直观,先在服务器上创建一个名为git的账户,这样以后clone的时候就如下面的格式了:

git clone git@server:some.git

创建新的用户,创建repo等目录

$sudo adser git
$su git
$cd ~
$mkdir repos

在HOME下的.ssh目录,如果没有则创建,创建一个authorized_keys文件,这个文件就是用来管理所有git用户的公钥的,也就是这里面的用户对于项目有着R+W的权限。
客户端

于每一个客户端,我们需要生成一对密钥和公钥,如果是Github用户,那么.ssh目录下,一定有id_rsa.pub和id_rsa两个文件,其中第
一个是系统生成的公钥,另一个是自己要保存好的密钥。如果没有的话,可以在终端执行:ssh-keygen来生成,完成后,将自己的公钥提交给管理员,这
就是一个注册的行为。
完成
最后一步,管理员将团队成员的公钥添加到authorized_keys中,比如将同学susie加入:

$ cat susie.pub >> authorized_keys

至此,大家可以通过git@server:repos/some.git来访问公共的版本库了。

4、windows怎么创建本地git服务器

GIT服务器包含GIT和OpenSSH,GIT用于软件版本控制管理服务器端,OpenSSH为Windows版本的SSH服务器端软件。
安装msysgit
安装步骤此处略去。

END
安装CopSSH
安装步骤此处略去。
END
修改配置
修改CopSSH配置文件C:\Program Files\ICW\etc\sshd_config,确保如下行为非注释行,且设置为“no”:

END
生成用户帐号
1
在服务器上生成Windows用户,取消用户下次登录时须更改密码,设置密码永不过期:

2
将该用户隶属于GitUser组(如尚未生成改组,则先生成改组):

END
激活用户
1
在Windows启动程序组中,运行如下程序(C:\Program Files\ICW\bin\ copsshcp.exe):

2
进入COPSSH Control Panel应用对话框,正常情况下服务应该为正在运行(图标为绿色,如为红色,则可尝试点选该按钮,启动该服务):

3
选择Users页面:

4
点选Add按钮,出现如下导航对话框:

5
选择Forward按钮,出现如下页面,选择欲激活的用户对应的域名及用户名:

6
选择Forward按钮,进入如下页面,选择Linux shell and Sftp,所有选项选中:

7
选择Forward按钮,进入确认页面,选择Apply:

8
回到如下页面,选择Apply后,关闭。

END
公钥文件上传
1
从用户处取得对应帐户的公钥文件authorized_keys,复制到C:\Program Files\ICW\home\ricky\.ssh目录下(\ricky\是对应的用户名);
2
Windows启动程序组中运行Start a Unix BASH Shell(或Windows运行中运行命令:"C:\Program Files\ICW\bin\bash.exe" --login -i):

3
运行如下unix命令行,如运行未出错,则完毕。

END
生成Git库容器目录
1
在服务器硬盘上生成一个目录,用来容纳Git库,比如生成E:\ GITTestRepo\目录;
2
鼠标右键点击该目录,选择共享和安全…;
3
在弹出的该目录属性对话框的安全页中加入用户对应的组GitUser;
4
确认该用户组权限设置了允许修改、读取和运行、列入文件夹目录、读取、写入,选择确定后完毕。
END
确认防火墙开放了22端口
确认服务器的防火墙没有禁止22端口的TCP/IP通信。
END
修改用户登录运行脚本
1
修改C:\Program Files\ICW\home\ricky\.bashrc文件(\ricky\是对应的用户名),在文件最后加入如下行:

5、如何创建自己的私有git服务器

通过以下的步骤,你将在服务器上搭建并使用你自己的Git服务,例如myhost.example.com。其中的一些步骤,像email通知,限制用户的权限,特定分组的接入管理,都是依据你的要求和现实状况的可选项。还有很多命令,你需要root权限才能执行,所以别忘了用sudo,或者(最好不要)直接切换到root来执行。
为有读写权限的用户建立一个分组。根据你的操作系统,你可以用groupadd命令来实现,用vigr来编辑分组文件,或者直接编辑/etc/group文件。在最后,你会在/etc/group文件中看到如下一行
repogroup:*:10005:marry,john,violet

其中,repogroup是准许接入这个仓库的组的名字。10005是一个独一无二的分组识别数字,marry,john,violet则是获准接入这个仓库的用户。
决定Git仓库的路径。它既可以放在你的home路径下(e.g. /home/yourname/gitroot),也可以放在一个专用的路径下(e.g. /var/gitroot).
配置权限,让Git用户可以访问这个目录
chmod g+rx /path-to/gitroot
chown :grouprepo /path-to/gitroot

建立新的Git仓库,叫做newrepo
cd /path-to/gitroot
git init --bare newrepo.git

建立路径认证,以允许用户组访问,同时有针对性的设置Git
cd newrepo.git
chown -R :grouprepo .
git config core.sharedRepository group
find . -type d -print0 | xargs -0 chmod 2770
find . -type f -print0 | xargs -0 chmod g=u

设置提交(commit)的email通知(commit是一条命令),这样当有新的修改提交到仓库的时候,开发者们将会收到一封关于修改内容一览的电子邮件。
echo 'One-line project description' >description
git config --local hooks.mailinglist [email protected],[email protected],...
git config --local hooks.emailprefix '[DI-PR] '
git config --local hooks.showrev "git show -C %s; echo"
git config --local hooks.emailmaxlines 100

通过设置一个称为钩子(hook)的东东,来创建这些email通知。
cd hooks
cp post-receive.sample post-receive
chmod +x post-receive

从post-receive的脚本中移除掉最后一行注释的#字号,最后语句应该是这样的
. /path-to-hooks/post-receive-email

在你的库中先放入一个文件(比如README)。为了避免其他用户在第一次提交时遇到奇怪的错误信息时感到困惑,这是有必要的。
cd to-your-personal-working-directory
git clone myhost.example.com:/path-to/gitroot/newrepo.git
echo "Short project description" >README.txt
git add README.txt
git commit -a -m "Add README file"
git push origin master # 第一次仅仅需要T"origin master" 这个参数

为仓库的其他用户建立账户。依据你系统的不同,你可以通过useradd 或者adser来实现。
设置用户可以通过公/私钥配对来访问。这包括以下几步:
1)已经有公钥的用户,只需要把公钥发给你就好。
2)没有公钥的用户,必须用ssh-keygen命令来生成一个,然后把.ssh/id_rsa.pub发给你就可以了。
3)之后你必须在他们对应的账户下面建立这种公/私钥配对。复制他的公钥,然后顺序执行下面的命令。
sudo su - username
mkdir -p .ssh
cat >>.ssh/authorized_keys <<\EOF
paste-key-as-one-line
EOF
exit

改变用户的账户让他们使用受限的shell。如果你想让你添加进来的用户仅仅使用Git,而不是Unix的所有东西,那么就设置他们的账户,让他们只能使用Git。Git提供了这种专为这种需求设计的受限shell。它通常被安装在 /usr/libexec/git-core/git-shell or /usr/local/libexec/git-core/git-shell。因此,对所有你想限制权限的用户,你可以执行以下命令。
sudo chsh -s /usr/libexec/git-core/git-shell username

告诉你的用户,用下面的语句来克隆仓库到本地。
git clone myhost.example.com:/path-to/gitroot/newrepo.git

到了这里,恭喜你,你成功了!

6、git的分支是在本地创建还是在服务端创建

当前工作空间的文件回退到某个版本,其实Git会将这些快照串成一条条的时间线,而这些时间线就是我们的:分支。

Git是一款免费、开源的分布式版本控制系统。众所周知的Github便是基于Git的开源代码库以及版本控制系统,由于其远程托管服务仅对开源免费,所以搭建本地Git服务器也是个较好的选择。

分支的创建与切换

1)创建分支

git branch 分支名

可以直接简单git branch或者git branch -a来查看所有分支,而此时分支和HEAD的情况如下:

接着切回master分支,键入:git checkout master,打开我们的note_1.txt,这个时候会发现并没有发生更改,因为刚刚的提交是在develop分支上进行的,而master分支上没有变化,此时的版本线情况如下:


7、window怎么搭建git服务器配置

首先这里我们安装openssh-server openssh-client,如果你用的是VPS之类的一般都默认安装好了,不过运行一个这个命令不会有错的,如果有安装就会提示已安装。sudo apt-get -y install openssh-server openssh-client安装git,在这个核心软件,不可或缺。sudo apt-get -y install git添加gitolite用户和同名用户组,加上--system参数,用户就不会在登陆界面显示。sudo adser --system --shell /bin/sh --group --disabled-password --home /home/gitolite gitolite生成ssh key,一路回车下来。ssh-keygen -t rsa将你当前用户的ssh pub key复制到/tmp下备用,由于我用的是桌面版在同一台机器上。cp ~/.ssh/id_rsa.pub /tmp/ubuntugege.pub如果你是ssh远程登陆到服务器上安装,就要把你本地的key复制到远程的机器上scp ~/.ssh/id_rsa.pub gitolite.server:/tmp/ubuntugege.pub安装gitolite,在ubuntu中已经集成了,不用自己去下载。sudo apt-get -y install gitolite切换到gitolite用户环境中,因为我要以gitolite用户身份去初始化安装。sudo su - gitolite执行初始化安装gitolite。gl-setup /tmp/ubuntugege.pub把管理库gitolite-admin克隆过来就可以开始gitolite用户及代码库的管理了,如果不能克隆,那么就说明初始化的ssh pub key错了。

8、如何搭建自己的git服

你可以把仓库放在任何你希望存放仓库的地方,你只需要保证用户和用户组对这个仓库有适合的权限就可以。最好不要把仓库存放在用户自己的工作区,因为权限要求是很严格的,你可以存放在一些共享目录,例如/optor /usr/local/share。

使用root用户创建一个裸仓,并赋予gituser合适的权限:
# git init --bare /opt/jupiter.git# chown -R gituser:gituser /opt/jupiter.git# chmod -R 770 /opt/jupiter.git

现在经过验证的作为gituser的或者gituser用户组的用户可以读取并写入jupiter.git仓库了。你可以试着在你的本地机器执行下面的命令:
$ git clone [email protected]:/opt/jupiter.git jupiter.clone
Cloning into 'jupiter.clone'...
Warning: you appear to have cloned an empty repository.

记住一点:开发者必须把自己的公钥加入gituser用户的authorized_keys文件中,或者他们就是服务器的用户(如果可以的话),并且这个用户必须成为gituser用户组的一员。

9、git一般安装在本地服务器制定的目录下吗

git一般安装在本地服务器制定的目录下
安装msysgit

安装步骤此处略去。

END
安装CopSSH

安装步骤此处略去。
END
修改配置

修改CopSSH配置文件C:\Program Files\ICW\etc\sshd_config,确保如下行为非注释行,且设置为“no”:

END
生成用户帐号

1
在服务器上生成Windows用户,取消用户下次登录时须更改密码,设置密码永不过期:

2
将该用户隶属于GitUser组(如尚未生成改组,则先生成改组):

END
激活用户

1
在Windows启动程序组中,运行如下程序(C:\Program Files\ICW\bin\ copsshcp.exe):

2
进入COPSSH Control Panel应用对话框,正常情况下服务应该为正在运行(图标为绿色,如为红色,则可尝试点选该按钮,启动该服务):

3
选择Users页面:

4
点选Add按钮,出现如下导航对话框:

5
选择Forward按钮,出现如下页面,选择欲激活的用户对应的域名及用户名:

6
选择Forward按钮,进入如下页面,选择Linux shell and Sftp,所有选项选中:

7
选择Forward按钮,进入确认页面,选择Apply:

8
回到如下页面,选择Apply后,关闭。

END
公钥文件上传

1
从用户处取得对应帐户的公钥文件authorized_keys,复制到C:\Program Files\ICW\home\ricky\.ssh目录下(\ricky\是对应的用户名);
2
Windows启动程序组中运行Start a Unix BASH Shell(或Windows运行中运行命令:"C:\Program Files\ICW\bin\bash.exe" --login -i):

3
运行如下unix命令行,如运行未出错,则完毕。

END
生成Git库容器目录

1
在服务器硬盘上生成一个目录,用来容纳Git库,比如生成E:\ GITTestRepo\目录;
2
鼠标右键点击该目录,选择共享和安全…;
3
在弹出的该目录属性对话框的安全页中加入用户对应的组GitUser;
4
确认该用户组权限设置了允许修改、读取和运行、列入文件夹目录、读取、写入,选择确定后完毕。
END
确认防火墙开放了22端口

确认服务器的防火墙没有禁止22端口的TCP/IP通信。
END
修改用户登录运行脚本

1
修改C:\Program Files\ICW\home\ricky\.bashrc文件(\ricky\是对应的用户名),在文件最后加入如下行:

10、如何搭建git本地服务器 windows

安装msysgit
安装步骤此处略去。

END
安装CopSSH
安装步骤此处略去。
END
修改配置
修改CopSSH配置文件C:\Program Files\ICW\etc\sshd_config,确保如下行为非注释行,且设置为“no”:

END
生成用户帐号
1
在服务器上生成Windows用户,取消用户下次登录时须更改密码,设置密码永不过期:

2
将该用户隶属于GitUser组(如尚未生成改组,则先生成改组):

END
激活用户
1
在Windows启动程序组中,运行如下程序(C:\Program Files\ICW\bin\ copsshcp.exe):

2
进入COPSSH Control Panel应用对话框,正常情况下服务应该为正在运行(图标为绿色,如为红色,则可尝试点选该按钮,启动该服务):

3
选择Users页面:

4
点选Add按钮,出现如下导航对话框:

5
选择Forward按钮,出现如下页面,选择欲激活的用户对应的域名及用户名:

6
选择Forward按钮,进入如下页面,选择Linux shell and Sftp,所有选项选中:

7
选择Forward按钮,进入确认页面,选择Apply:

8
回到如下页面,选择Apply后,关闭。

END
公钥文件上传
1
从用户处取得对应帐户的公钥文件authorized_keys,复制到C:\Program Files\ICW\home\ricky\.ssh目录下(\ricky\是对应的用户名);
2
Windows启动程序组中运行Start a Unix BASH Shell(或Windows运行中运行命令:"C:\Program Files\ICW\bin\bash.exe" --login -i):

3
运行如下unix命令行,如运行未出错,则完毕。

END
生成Git库容器目录
1
在服务器硬盘上生成一个目录,用来容纳Git库,比如生成E:\ GITTestRepo\目录;
2
鼠标右键点击该目录,选择共享和安全…;
3
在弹出的该目录属性对话框的安全页中加入用户对应的组GitUser;
4
确认该用户组权限设置了允许修改、读取和运行、列入文件夹目录、读取、写入,选择确定后完毕。

确认防火墙开放了22端口
确认服务器的防火墙没有禁止22端口的TCP/IP通信。

修改用户登录运行脚本
1
修改C:\Program Files\ICW\home\ricky\.bashrc文件(\ricky\是对应的用户名),在文件最后加入如下行:

与搭建本地git服务器相关的知识