Git 基本作用
git 有工作区、暂存区、版本库
Git 命令
git init //初始化版本库
git add file_name //将file_name从工作区添加到暂存区
git commit //将暂存区的修改提交到版本库 -m 添加
git status //查看仓库状态
git diff file_name //查看版本库中file_name与工作区file_name的不同
git log //查看提交记录 --pretty=oneline 一行显示一条记录
git reset --hard HEAD^ //HEAD表示当前版本,^表示上一版本 ^^表示上两个版本,依此类推
git reset --hard commit_id //回退到指定id版本
git reflog //查看历史命令
git checkout -- file_name //撤销对工作区file_name文件的修改,如果add到暂存区可以用git reset HEAD file_name 来撤销暂存区的修改,如果commit之后可以用git reset --hard HEAD^来回退到上一个版本
git rm file_name //删除某文件,删除版本库中的文件一定要commit,没有commit之前可以用git checkout -- file_name撤销删除,commit之后可以回退版本
远程仓库
远程仓库一定要加ssh key如果不加则无法push
ssh生成命令
ssh-keygen -t rsa -C "email"
git clone remote_repository_link
git remote add origin remote_repository_link //origin 远程仓库名称
git push -u origin master //master 本地分支名称
git push origin master
git checkout -b dev origin/dev //抓取远程dev分支到本地dev分支
git pull //合并远程分支到本地
git remote //查看远程分支
git remote -v //查看远程分支详情
git branch --set-upstream dev origin/dev //关联本地分支到远程分支
分支
git 默认有一个master分支
git checkout -b branch_name //创建并切换分支
git branch branch_name //创建分支
git checkout branch_name //切换分支
git branch //查看分支
git branch -d branch_name //删除分支 -D 为强行删除
git merge branch_name //合并指定分支到当前分支
git log --graph --pretty=oneline --abbrev-commit //--graph可以查看分支合并图
git merge --no-ff -m "" branch_name // --no-ff 禁用fast-forward模式,会创建一个新的commit
git stash //保存工作现场
git stash list //列出所有保存的工作现场。如,stash@{0}: WIP on dev: 6224937 add merge
git stash pop //恢复工作现场并删除
git stash apply //恢复工作现场
git stash drop //删除工作现场
//以上三个命令在有多个stash的时候,可以加上stash id 如 git stash pop stash@{0}
标签
git tag tag_name //创建标签
git tag //列出所有标签
git tag tag_name commit_id //为指定commit添加标签
git tag -a tag_name -m "" commit_id //为指定commit添加带说明的标签
git tag -s tag_name -m "" commit_id //用私钥签名一个标签(签名采用PGP签名,因此,必须首先安装gpg(GnuPG))
git tag -d tag_name //删除标签
git show tag_name //查看标签详情
git push origin tag_name //推送标签到远程
git push origin --tags //推送所有标签未推送过的到远程
//删除远程标签
git tag -d v1.0 //先删除本地
git push origin:refs/tags/v1.0 //删除远程标签
Git 一些配置
git config --global color.ui true //git显示颜色
//别名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.unstage 'reset HEAD'
git config --global alias.last 'log -1'
//一个牛X的配置
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
创建git服务器
这里只先说下linux的
1. 安装git
sudo apt-get install git
2. 创建git用户,运行git服务
sudo adduser git
3. 创建证书登录
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys
文件里,一行一个。
4. 初始化Git仓库
假定git仓库为/srv/sample.git,在/src目录下输入
sudo git init --bare sample.git
更改git仓库权限
sudo chown -R git:git sample.git
5. 禁用shell登录
出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd
文件完成。找到类似下面的一行
git:x:1001:1001:,,,:/home/git:/bin/bash
改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell