git服务器搭建远程仓库
1. 怎么用git命令创建远程仓库分支
$ git clone https://github.com/wenziyelang/curl_.git mylibgit
1,从已有的分支创建新的分支(如从master分支),创建一个dev分支
git checkout -b dev
2,创建完可以查看一下,分支已经切换到dev
git branch
3,提交该分支到远程仓库
git push origin dev
4,测试从远程获取dev
git pull origin dev
或者:
如果用命令行,运行 git fetch,可以将远程分支信息获取到本地,再运行 git checkout -b local-branchname origin/remote_branchname 就可以将远程分支映射到本地命名为local-branchname 的一分支
5,我觉得现在重要的就是设置git push,pull默认的提交获取分支,这样就很方便的使用git push 提交信息或git pull获取信息
git branch --set-upstream-to=origin/dev
取消对master的跟踪
git branch --unset-upstream master
6,现在随便修改一下工程文件的内容,然后git commit ,git push,之后就可以直接提交到远程的dev分支中,而不会是master
2. git怎么在centos下设置远程仓库
远程仓库搭建
step1:安装git
```yum -y install git```
step2:创建用户git,用来运行git服务
useradd git
passwd git //修改git用户的密码
step3:创建登录用户证书
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个
step4:初始化git仓库
1.创建目录/git,在/git目下再创建一个.git结尾的目录,作为一仓库,这里创建一个/git/test.git,并且进入/git目录 2.初始化仓库git init --bare test.git Git就会创建一个裸仓库,裸仓库没有工作区,服务器上的Git仓库纯粹是为了共享 所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾 3.将仓库的owner改为git chown -R git:git test.git 4.出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成,找到git用户的那一行将git:x:500:500::/home/git:/bin/bash改为git:x:500:500::/home/git:/usr/bin/git-shell .git-shell每次一登录就自动退出.
step5:自此整个git远程仓库就搭建完成,就可以像使用github那样使用搭建好的远程仓库与你的team功能开发了.
本地与搭建好的仓库交互
git remote add origin [email protected]:/git/test.git 这里的ip是你主机的ip
git clone [email protected]:/git/test.git 将远程仓库克隆到本地的仓库
git push origin master 推送到远程仓库
3. 如何使用git创建远程仓库
当然使用git之前先要下载git客户端链接在这里:http://git-scm.com/download/
这里不用github for windows是因为我觉得比较偏门,不是太普适,我要是在Linux下就没办法了。
先描述github和git:
1.git是版本一个控制系统,blabla介绍什么的最不喜欢了.....
就是说,我们使用git管理我们的代码,那么我们就需要把代码加入到git仓库中保存,git有一个本地仓库的概念,就是可以在本地记录变更,以便适应不能联网的环境。
2.远程仓库是远程主机上类似于现在的网盘一样的东西,但是具有git的功能,可以在主机上保存我们的代码库。这里说的github就是远程仓库。
首先,我们使用远程仓库需要现在github注册账号,怎么注册不用多说了。
然后我们需要在本地建立本地仓库,就是在你需要建立仓库的目录下执行这样的命令:
git init
示例:
在用户目录下新建了一个learngit文件夹,在此文件夹下使用上述命令:
打开git bash
需要密码验证的时候输入密钥密码就好。(当然有不用输入的方法)
此时在github上查看仓库就已经上传完成了:
4. 如何使用git创建远程仓库
如果你远端创建了库了那么 本地的工程就可以用clone命令克隆一个, 如果没有 那么需要手动执行git remote add 命令新加一个和远端有关系的东西 这样就可以用git push推送过去了
5. 如何使用git创建远程仓库
第一步我们要创建远程仓库让别人连接。需要打开远程连接。找到系统偏好设置。找到花红圈的共享按钮,点击
然后看到有远程连接选项,在允许访问这,我们选择所有用户。然后保存。现在我们需要进行终端部分了。
点击桌面右上角的放大镜,搜索终端,找到后打开
首先创建一个空的仓库,分别再终端中敲mkdir jj回车 再敲cd jj回车 再敲ls 回车,再敲git init回车。就可以创建完成一个空的仓库了。如果用git --bare init --shared group来声明就可以变为一个可以远程推送的服务器了。但下面的第5、6步就不需要了。我们只需要克隆下来使用即可。这 里面还有点小问题,需要自己摸索咯。
我们再这个本地仓库中创建一个txt格式的文件,文件中的内容为our first git repository,代码添加如图所示,成功后会显示create mode 100644,
本地仓库建成之后,在本地仓库添加一个远程仓库,并将本地的master分支跟踪到远程分支。
这儿输入时要特别注意。origin 远程仓库名ssh://192.168.100.103/~/jj/.git这个ssh是你本地的ip地址,格式要和我这一样,双斜杠,冒号等、输入密码后,出现Everything up-to-date证明成功了。
另一台机器上验证一下,打开终端,输入git clone origin ssh://192.168.100.103/~/jj/.git即可。我的远程仓库是origin你们的是啥,自己更改。
按回车后出现
Cloning into jj...
证明成功了。
6. 怎么在gitlab上面创建远程仓库
GitLab是由Ruby语言开发的基于Linux的Git服务器,是我见过的最强大的Git服务器。发现它之后,立即决定将Git服务器换成GitLab。 但安装好GitLab之后面临一个问题,如何将服务器上的git项目直接导入到GitLab,之前的Git服务器是由是git+apache搭建的(详见在Linux上用Apache搭建Git服务器)。 在网上发现了这篇文档——Import bare repositories into your GitLab instance,并按之进行了操作。 1)设置存放代码库的主目录 vi /etc/gitlab/gitlab.rb 比如这里设置为:git_data_dir "/gitlab/repos" 2)访问刚搭建的GitLab站点,创建一个group,比如cnblogs。 这时会在 /gitlab/repos 下创建 /gitlab/repos/repositories/cnblogs 文件夹。 然后在/gitlab/repos/repositories/创建一个文件夹,比如cnblogs 3)将现有的所有git项目文件复制到这个文件夹 cp -r /data/git/* /gitlab/repos/repositories/cnblogs 4)修改一下复制过来的文件夹的所有者: chown -R git:git /gitlab/repos/repositories/cnblogs 5)运行GitLab导入命令 cd /var/opt/gitlab gitlab-rake gitlab:import:repos 等了一段时间之后,显示done,却一个项目也没导入进来。
7. 求助:git服务器搭建 windows
搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用Ubuntu或Debian,这样,通过几条简单的apt命令就可以完成安装。
假设你已经有sudo权限的用户账号,下面,正式开始安装。
第一步,安装git:
$ sudo apt-get install git
第二步,创建一个git用户,用来运行git服务:
$ sudo adser 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
需要服务器找我:展翼小T
第五步,禁用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来管理公钥。
这里我们不介绍怎么玩Gitosis了,几百号人的团队基本都在500强了,相信找个高水平的Linux管理员问题不大。
管理权限
有很多不但视源代码如生命,而且视员工为窃贼的公司,会在版本控制系统里设置一套完善的权限控制,每个人是否有读写权限会精确到每个分支甚至每个目录下。因为Git是为Linux源代码托管而开发的,所以Git也继承了开源社区的精神,不支持权限控制。不过,因为Git支持钩子(hook),所以,可以在服务器端编写一系列脚本来控制提交等操作,达到权限控制的目的。Gitolite就是这个工具。
这里我们也不介绍Gitolite了,不要把有限的生命浪费到权限斗争中。
8. 怎么在自己的服务器上建立git仓库
1.架设Git服务器我们以Ubuntu为例。首先,在git服务器上创建一个名为'git'的用户,并为其创建一个.ssh目录。并将其权限设置为仅git用户有读写权限$sudoadsergit$sugit$cd$mkdir.ssh$chmod700.ssh接下来,把开发者的SSH公钥添加到这个用户的authorized_keys文件中。假设你通过电邮收到了几个公钥并存到了临时文件里。重复一下,公钥大致看起来是这个样子:$cat/tmp/id_rsa.john.pubssh-/ww+/T17//5zytK6Ztg3RPKK+/nLF6JLtPofwFBlgc+AYYgPqdAv8JggJICUvax2T9va5gsg-keypair只要把它们逐个追加到authorized_keys文件尾部即可,同时将authorized_keys设置为仅git用户有读写权限。$cat/tmp/id_rsa.john.pub>>~/.ssh/authorized_keys$cat/tmp/id_rsa.josie.pub>>~/.ssh/authorized_keys$cat/tmp/id_rsa.jessica.pub>>~/.ssh/authorized_keys$chmod600~/.ssh/authorized_keys现在可以用--bare选项运行gitinit来建立一个裸仓库,这会初始化一个不包含工作目录的仓库。$cd/opt/git$mkdirproject.git$cdproject.git$git--bareinit这时,Join,Josie或者Jessica就可以把它加为远程仓库,推送一个分支,从而把第一个版本的项目文件上传到仓库里了。值得注意的是,每次添加一个新项目都需要通过shell登入主机并创建一个裸仓库目录。我们不妨以gitserver作为git用户及项目仓库所在的主机名。如果在网络内部运行该主机,并在DNS中设定gitserver指向该主机,那么以下这些命令都是可用的:#在John的电脑上$cdmyproject$gitinit$gitadd.$gitcommit-m'initialcommit'$gitremoteaddorigingit@gitserver:/opt/git/project.git$gitpushoriginmaster这样,其他人的克隆和推送也一样变得很简单:$gitclonegit@gitserver:/opt/git/project.git$vimREADME$gitcommit-am'fixfortheREADMEfile'$gitpushoriginmaster用这个方法可以很快捷地为少数几个开发者架设一个可读写的Git服务。作为一个额外的防范措施,你可以用Git自带的git-shell工具限制git用户的活动范围。只要把它设为git用户登入的shell,那么该用户就无法使用普通的bash或者csh什么的shell程序。编辑/etc/passwd文件:$sudovim/etc/passwd在文件末尾,你应该能找到类似这样的行:git:x:1000:1000::/home/git:/bin/sh把bin/sh改为/usr/bin/git-shell(或者用whichgit-shell查看它的实际安装路径)。该行修改后的样子如下:git:x:1000:1000::/home/git:/usr/bin/git-shell现在git用户只能用SSH连接来推送和获取Git仓库,而不能直接使用主机shell。尝试普通SSH登录的话,会看到下面这样的拒绝信息:$sshgit@gitserverfatal:WhatdoyouthinkIam?Ashell?Connectiontogitserverclosed.这里提供的方法,组内所有成员对project都有读写权限,也就是说每个分支都可以push代码,如果需要更加细致的权限控制,请使用Gitosis或者Gitolite。2.搭建Gitweb安装gitweb之后就可以通过网站访问我们的项目了。就像gitweb.conf#pathtogitprojects(.git)$projectroot="/opt/git";至此gitweb就可以使用了,现在可以通过config[core]repositoryformatversion=0filemode=truebare=true[hooks]mailinglist="[email protected],[email protected]"#收件人列表[email protected]#送件人地址emailprefix="[Projectcommit]"#邮件标题前缀showrev="gitshow-C%s;echo"#不只显示有变化的文件,同时也显示改变的内容为了使邮件显示的更清楚,还要修改一下工程目录当中的description文件,在description文件中,默认第一行是项目名称,所以要在第一行填入该项目的名称,这个在邮件中会有显示。$vim/opt/git/project.git/descriptionProject_A
9. 如何在mac下远程搭建git服务器
首先要有 ssh远程登陆的工具,比如secureCRT等
方案一 基于SSH直接搭建
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来访问公共的版本库了。
问题
安全问题,成员可以登录git用户的shell,细节权限如分支等不好控制
管理麻烦,新建repo,或者增加成员比较麻烦,尤其是修改的时候
方案二 使用Gitolite服务
Gitolite 也是基于SSH协议构建的方便管理git repo的应用,可以通过其源码安装.
安装
安装按照官方给定的文档就可以轻易的实现:
$ git clone git://github.com/sitaramc/gitolite
$ mkdir -p $HOME/bin
$ gitolite/install -to $HOME/bin
$ gitolite setup -pk YourName.pub
如果执行最后一条命令的时候,gitolite不识别,则可以通过下面两种方式解决:
将gitolite添加到PATH里面
通过$HOME/bin/gitolite setup -pk YourName.pub 执行
至此,gitolite在服务端,搭建完毕,会发现此时HOME目录下增加了一个文件projects.list和一个目录repositories,后者就是我们的版本仓库了,每当新建repo的时候,就会在其中创建。
使用
是时候说一下gitolite的管理模式了,他会创建一个gitolite-admin的repo,管理员就是通过像这个repo提交配置文件而实现对git服务器的控制的。
首先,将这个repo导入到我们的workspace:在此之前,需要配置本地的ssh,gitolite要求管理员的本地密钥和其注册公钥的名字一致,比如我们安装的时候指定 -pk后面为 admin.pub 则管理员本地需要由admin对应的私钥。我们可以通过~/.ssh/config来进行配置(注:有些系统可以用conf,Mac OSX 下无效,只能用config).
host gitolite
user git
hostname yourhostname.com
port 22
identityfile ~/.ssh/admin
这样,当我们访问gitolite的时候就会自动根据配置文件执行,配置完成后可以根据下面的命令,将gitolite-admin转移到本地。
git clone gitolite:gitolite-admin.git
克隆完成后,可以发现,gitolite-admin下面有两个目录,其中conf保存配置文件,我们可以通过编辑里面的gitolite.conf文件,管理git服务器,keydir目录保存用户的公钥pub文件。
当我们讲修改后的repo 提交的时候,gitolite就会自动的应用这些配置,管理过程就方便了很多。
配置规则
打开gitolite.conf文件可以看到其中的示例:
To add new users alice, bob, and carol, obtain their public keys and add them to 'keydir' as alice.pub, bob.pub, and carol.pub respectively.
To add a new repo 'foo' and give different levels of access to these users, edit the file 'conf/gitolite.conf' and add lines like this:
repo foo
RW+ = alice
RW = bob
R = carol
上面的配置文件就是新建了一个repo foo,并且添加了三位项目成员,每一个人的权限不同。提交push后,管理便生效了。
可视化
我们可能会需要一个web界面来管理这些项目,我目前知道的有三种方式:
git源码中自带的组件,cgi脚本实现,使用gitolite服务
gitlab开源框架,基于ROR,新版本不再使用gitolite服务
FB开源PHP框架 phabricator,功能高端上档次
10. 如何使用git创建远程仓库
首先, 先到github网站注册账号。
2
然后创建一个项目, Create a new repository,如下图所示:
8
输入完title和key后选择Add SSH key按钮完成添加。
9
现在回到终端, 测试下是否能连接到github服务器
ssh -T [email protected]
看到这样的提示就说明设置好了
bogon:ZXTabBarController jackey$ ssh -T [email protected] Hi zhouxihi! You've successfully authenticated, but GitHub does not provide shell access.
10
然后就可以将本地文件push到远程仓库了
首先初始化本地仓库
git init
添加文件
git add .
写入缓存
git commit -m 'first upload'
添加远程仓库
git remote add origin [email protected]:zhouxihi/ZXTabBarController.git
推送文件到远程仓库
git push -u origin master
显示100%. done就可以了
bogon:ZXTabBarController jackey$ git push -u origin master Counting objects: 57, done. Delta compression using up to 4 threads. Compressing objects: 100% (51/51), done. Writing objects: 100% (57/57), 86.20 KiB | 0 bytes/s, done. Total 57 (delta 14), reused 0 (delta 0) remote: Resolving deltas: 100% (14/14), done. To [email protected]:zhouxihi/ZXTabBarController.git * [new branch] master -> master Branch master set up to track remote branch master from origin.
11
以后每次有修改本地文件就只要下面三个步骤就可以推送到服务器了
->git add.
->git commit -m 'second upload'
->git push -u origin master
12
如果想从服务器拉下来, 可以用指令
git clone XXX.git