安装与环境配置:
1. 安装git $ dnf install git
2. 创建一个git用户,用来运行git服务 $ adduser git
3. 创建证书登录
收集所有需要登录的用户的公钥,即id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
4. 初始化Git仓库
在/srv目录下输入命令: $ git init --bare sample.git
把owner改为git: $ chown -R git:git sample.git
5. 禁用shell登录
编辑/etc/passwd文件 git:x:1001:1001:,,,:/home/git:/bin/bash 改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
6. 克隆远程仓库
通过git clone命令克隆远程仓库
$git clone git@server:/srv/sample.git
管理公钥
可以用Gitosis来管理公钥。
生成密钥:
$ ssh-keygen -t rsa -C “test@gmail.com”
导入git 用户的公钥。
$ cat /home/git/.ssh/id_rsa.pub >> /home/git/.ssh/authorized_keys
GitHub中添加key:
登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
Adding SSH key to the ssh-agent:
$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/id_rsa
git命令使用:
git add readme.txt
git commit -m "123"
git status
git diff
git log
git reflog
git reset --hard HEAD^
git diff HEAD -- readme.txt
git pull
git push
git clone
TFS Get Latest == Git Pull
TFS Check out可手动自动, Git也一样。只要文件出现修改变化,在Commit提交的时候会出现在提交列表里面,类似TFS的Pending Changes。
TFS Check in == Git Commit + Git Push
Git Commit为提交到本机仓库
Git Push为提交至中心仓库 (即Fserver)
checkout命令使用:
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
(1) readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
(2) readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令.
用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:
分支:
创建并切换到dev分支 $ git checkout -b dev
相当于 $git branch dev $ git checkout dev
用git branch命令查看当前分支 $git branch
把dev分支合并到master分支上 $git merge dev
删除dev分支 $git branch -d dev
Bug分支:
Git提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作: $git stash
工作区是干净的,用git stash list命令查看刚才的工作现场。
Git把stash内容存在某个地方了,恢复有两个办法:
(1) 用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
(2) 用git stash pop,恢复的同时把stash内容也删了。
推送分支:
推送分支,就是把该分支上的所有本地提交推送到远程库。
推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:
$ git push origin master
更新远程更新到本地:
git pull origin master