安装略过html
基于公钥的认证登陆,方便对用户进行权限控制linux
useradd -s /usr/bin/git-shell testgit #建立一个用户 或者直接useradd testgit 而后去/etc/passwd 修改testgit用户的bash 为/usr/bin/git-shell passwd testgit #更改密码 cd /home/testgit/ #进入家目录, git init --bare testgit.git #初始化一个仓库 chown -R testgit:testgit /home/testgit #更改目录权限 mkdir .ssh && cd .ssh/ && touch authorized_keys 将用户的公钥写进去就ok了,访问路径为 ssh://testgit@ip:/home/testgit/testgit.git
git clone备份后为 .git的目录文件,此文为将此类文件恢复至 gitlabgit
1#从原地址克隆一份裸版本库,好比本来托管于 GitHub。 git clone –bare git://github.com/username/project.git #而后到新的 Git 服务器上建立一个新项目,好比 GitCafe。 #以镜像推送的方式上传代码到 GitCafe 服务器上。 cd project.git git push --mirror git@gitcafe.com/username/newproject.git #删除本地代码 cd .. rm -rf project.git
实例(此方法会保留原有源码库的全部分支)github
到新服务器 GitCafe 上找到 Clone 地址,直接 Clone 到本地就能够了。shell
git clone git@gitcafe.com/username/newproject.git
这种方式能够保留原版本库中的全部内容。
提交前要删除本地remotes中的分支引用,这样就不会将remotes里面的远程分支也推到服务器上去:
另外还能够直接修改当前仓库的远程地址,而后push一下就能将历史都提交上去: git remote set-url origin remote_git_address
初次创建项目,代码上传与下载windows
http方式: Git global setup ###(gitlab客户端上执行(linux/windows(gitbash))) git config --global user.name "gaoxinjie" git config --global user.email "gaoxinjie@lavion.com.cn" Create a new repository ###建立一个新仓库 git clone http://gaoxinjie@iZ2zei7b23po43up3908hrZ/my_object/work.git cd work touch README.md git add README.md git commit -m "add README" git push -u origin master Existing folder ###在一个存在的文件夹下上传代码 cd existing_folder git init git remote add origin http://gaoxinjie@iZ2zei7b23po43up3908hrZ/my_object/work.git git add . git commit git push -u origin master Existing Git repository ###在一个存在的git仓库下上传代码 cd existing_repo git remote add origin http://gaoxinjie@iZ2zei7b23po43up3908hrZ/my_object/work.git git push -u origin --all git push -u origin --tags ssh方式: Command line instructions Git global setup git config --global user.name "gaoxinjie" git config --global user.email "gaoxinjie@lavion.com.cn" Create a new repository git clone git@iZ2zei7b23po43up3908hrZ:my_object/work.git cd work touch README.md git add README.md git commit -m "add README" git push -u origin master Existing folder cd existing_folder git init git remote add origin git@iZ2zei7b23po43up3908hrZ:my_object/work.git git add . git commit git push -u origin master Existing Git repository cd existing_repo git remote add origin git@iZ2zei7b23po43up3908hrZ:my_object/work.git git push -u origin --all git push -u origin --tags
添加sshkeybash
ssh-keygen -t rsa 将id_rsa.pub 上传到sshkyes 便可
使用服务器
建立分支: $ git branch mybranch 切换分支: $ git checkout mybranch 建立并切换分支: $ git checkout -b mybranch 列出全部分支: $ git branch 更新master主线上的东西到该分支上:$git rebase master 切换到master分支:$git checkout master 更新mybranch分支上的东西到master上:$git rebase mybranch
修改并提交app
文件作了修改之后要先 git add 文件名 而后 提交: git commit -a -m "add **.txt" 而后 push到远程服务器: git push origin develop(分支名) 对最近一次commit的进行修改:git commit -a –amend commit以后,若是想撤销最近一次提交(即退回到上一次版本)并本地保留代码:git reset HEAD^
合并分支ssh
下面两条命令的意思是切换到master分支,并将mybranch的分支的内容合并到master分支
$ git checkout master
$ git merge mybranch (merge from mybranch)
例: develop分支添加了内容,而且合并到master分支
删除分支: $ git branch -d mybranch 强制删除分支: $ git branch -D mybranch 列出全部分支: $ git branch 查看各个分支最后一次提交: $ git branch -v 查看哪些分支合并入当前分支: $ git branch –merged 查看哪些分支未合并入当前分支: $ git branch –no-merged 更新远程库到本地: $ git fetch origin 推送分支: $ git push origin mybranch 取远程分支合并到本地: $ git merge origin/mybranch git log -p master..origin/master ####比较本地的master分支和origin/master分支的差异 取远程分支并分化一个新分支: $ git checkout -b mybranch origin/mybranch 删除远程分支:$ git push origin :mybranch
git pull && git fetch
git pull
命令的做用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。 $ git pull <远程主机名> <远程分支名>:<本地分支名> 好比,取回origin主机的next分支,与本地的master分支合并,须要写成下面这样。 $ git pull origin next:master $ git pull origin next 上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先作git fetch,再作git merge。 $ git fetch origin $ git merge origin/next git fetch
一旦远程主机的版本库有了更新(Git术语叫作commit),须要将这些更新取回本地,这时就要用到git fetch命令。 $ git fetch <远程主机名> 上面命令将某个远程主机的更新,所有取回本地。 默认状况下,git fetch取回全部分支(branch)的更新。若是只想取回特定分支的更新,能够指定分支名。 $ git fetch <远程主机名> <分支名> 好比,取回origin主机的master分支。 $ git fetch origin master 所取回的更新,在本地主机上要用”远程主机名/分支名”的形式读取。好比origin主机的master,就要用origin/master读取。 git branch命令的-r选项,能够用来查看远程分支,-a选项查看全部分支。 $ git branch -r
git rebase
rebase(参考连接: http://www.cnblogs.com/kym/archive/2010/08/12/1797937.html) $ git checkout mybranch $ git rebase master (rebase from master) 举例: $ git checkout server $ git rebase –onto master server client $ git checkout master $ git merge client (fostforward) $ git rebase master server (checkout sever) $ git merge server $ git branch -d client $ git branch -d server
使用Gitlab一键安装包安装Gitlab很是简单, 一样的备份恢复与迁移也很是简单. 使用一条命令便可建立完整的Gitlab备份: gitlab-rake gitlab:backup:create 使用以上命令会在/var/opt/gitlab/backups目录下建立一个名称相似为1393513186_gitlab_backup.tar的压缩包, 这个压缩包就是Gitlab整个的完整部分, 其中开头的1393513186是备份建立的日期. Gitlab 修改备份文件默认目录 你也能够经过修改/etc/gitlab/gitlab.rb来修改默认存放备份文件的目录: gitlab_rails['backup_path'] = '/mnt/backups' /mnt/backups修改成你想存放备份的目录便可, 修改完成以后使用gitlab-ctl reconfigure命令重载配置文件便可. 一样, Gitlab的从备份恢复也很是简单: 将备份文件拷贝到新服务器 /var/opt/gitlab/backups目录下 # 中止相关数据链接服务 gitlab-ctl stop unicorn gitlab-ctl stop sidekiq # 从1393513186编号备份中恢复 gitlab-rake gitlab:backup:restore BACKUP=1393513186 # 启动Gitlab sudo gitlab-ctl start Gitlab迁移 迁移如同备份与恢复的步骤同样, 只须要将老服务器/var/opt/gitlab/backups目录下的备份文件拷贝到新服务器上的/var/opt/gitlab/backups便可(若是你没修改过默认备份目录的话).
可是须要注意的是新服务器上的Gitlab的版本必须与建立备份时的Gitlab版本号相同. 好比新服务器安装的是最新的7.60版本的Gitlab, 那么迁移以前, 最好将老服务器的Gitlab 升级为7.60在进行备份. 关闭注册功能: Admin(左侧菜单栏)-->settings --> Sign-in Restrictions Sign-upenbaled 关闭注册功能 Sign-inenbaled 关闭注册登陆功能
useradd -s /usr/bin/git-shell testgit #建立一个用户 或者直接useradd testgit 而后去/etc/passwd 修改testgit用户的bash 为/usr/bin/git-shell passwd testgit #更改密码 cd /home/testgit/ #进入家目录, git init --bare cloudapp.git #初始化一个仓库 chown -R testgit:testgit /home/testgit #更改目录权限 mkdir .ssh && cd .ssh/ && authorized_keys 将用户的公钥写进去就ok了