Git服务器的搭建

Eave 2015.10.07 16:46

一、创建用户Git,用来管理运行Git服务

useradd git

二、配置无密码SSH登陆

用命令:ssh-keygen -t rsa -b 4096 生成密钥

完成之后,在.ssh目录下,我们可以看到id_rsa和id_rsa.pub文件,id_rsa.pub为公钥,我们通过命令scp将id_rsa.pub拷贝到Git服务器上。

在Git服务器上我们首先查看/home/git/.ssh目录下是否存在authorized_keys文件,如果没有,可以通过touch authorized_keys创建此文件。

authorized_keys创建完成后,将拷贝过来的公钥id_rsa.pub的内容追加到authorized_keys中,注意是追加到此文件中,可以使用命令

cat id_rsa.pub >> /home/git/.ssh/authorized_keys

完成后,我们就可以使用命令ssh Git服务器即可完成无密码登陆。

三、安装Git

通过命令yum install git,安装Git

四、建立Git仓库的存储目录

mkdir -p /git/gramess.git
chown -R git:git /git

五、添加Git提交用户

git config --global user.name "zhougang"
git config --global user.email "gang.zhou@gramess.com"

六、初始化服务器端仓库

# 初始化Git仓库
cd /git/gramess.git
git init
# 添加新文件
echo readme > README
# 将所有新增文件加入到
git add -A
# 提交所有文件
git commit -m "init"
# 添加远程服务器地址
git remote add origin ssh://git@192.168.10.8/git/gramess.git
# 将本地git代码同步到服务器master分支中
git push origin master
chown -R git:git /git

通过以上的步骤我们就完成了git服务器的搭建,完成搭建后,我们需要了解一下与git服务器交互过程中所用到命令

主要命令有git clone、git remote、git fetch、git pull、git push等


附:

1、将本地git代码同步到服务器master分支中

git push origin master

如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略(将当前分支推送到origin主机的对应分支)

git push origin

还有一种情况,就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用–all选项(将所有本地分支都推送到origin主机)

git push --all origin

2、从服务器上克隆一份完整、最新的源代码

git clone ssh://git@192.168.10.8/git/gramess.git gramess.me

执行该命令可将服务器端的代码同步到本地。

当其他同时上传代码到服务器后,我们必须使用git pull命令将服务器上的代码同步到本地。

当我们准备提交代码时,必须先执行git pull命令

git pull # 服务器端的代码同步到本地

3、切换到某个分支

git checkout develop

4、创建新分支并切换到該分支

git checkout -b develop

5、将本地develop分支推送到远端

git push --set-upstream origin develop
# 或者使用
git push origin develop

6、查看当前所在的分支

git branch

7、查看当前所在的分支包括远程分支

git branch -a

8、查看远程分支

git branch -r

9、新建分支

git branch develop

10、删除本地分支

git branch -d <branchName>

-d--delete的缩写,在使用--delete删除分支时,该分支必须完全和它的上游分支merge完成(了解上游分支,可以点击查看链接),如果没有上游分支,必须要和HEAD完全merge

-D--delete --force的缩写,这样写可以在不检查merge状态的情况下删除分支

11、删除远程分支

git push origin --delete <branchName>

12、新建tag

git tag -a <tagname> -m "原版"

13、将本地tag推送到远端

git push origin <tagname>

14、删除本地tag

git tag -d <tagname>

15、删除远程tag

git push origin --delete tag <tagname>

16、删除不存在对应远程分支的本地分支

git fetch -p

17、取回origin主机的master分支

git fetch origin master

18、重命名本地分支

git branch -m <oldBranchName> <newBranchName>

19、重命名远程分支

重命名远程分支,其实就是先删除远程分支,然后重命名本地分支,再重新提交一个远程分支

20、把本地tag推送到远程

git push --tags

21、获取远程tag

git fetch origin tag <tagname>

22、放弃本地修改 强制更新

git reset --hard origin/master
git pull

git fetch只是下载远程的库的内容,不做任何的合并;git reset把HEAD指向刚刚下载的最新的版本

23、git 检出单个文件

git fetch origin master
git checkout -- c.txt

24、撤销修改(文件)

git checkout -- readme.txt

25、合并分支到当前分支

# Git执行"快进式合并"(fast-farward merge),会直接将当前分支指向<branchName>分支
# 使用--no-ff参数后,会执行正常合并,在Master分支上生成一个新节点
git merge --no-ff <branchName> -m "comment" # git merge <branchName>

26、版本回退

git reflog
git reset --hard 3628164

27、从上游分支获取最新commit信息,并将上游分支合并到当前分支

git rebase <branchName> # git rebase --continue # git rebase --abort

28、删除文件缓存

git rm --cached file_path
# 删除文件夹缓存
git rm -r --cached folder

29、验证文件适用于那条忽略规则

git check-ignore -v file_path

git会告诉我们,.gitignore的第几行规则忽略了该文件

30、忽略文件模式的改变

git config --add core.filemode false

31、查看提交的详情

# 查看最新的commit
git show
# 查看指定commit hashID的所有修改
git show commitId
# 查看某次commit中具体某个文件的修改
git show commitId fileName

32、转移多个提交

# 将A和B两个提交应用到当前分支
git cherry-pick <HashA> <HashB>

33、删除本地分支在远程仓库已不存在的分支

# 查看origin的详细信息
git remote show origin
# 同步origin主机对于git分支的删除操作,即去除Git Graph无用远程分支节点
git remote prune origin