1.安装Git两种方式:二进制包安装、源码安装

2.git 命令常见用法

git help <子命令>    #不加<子命令>是查看git命令的帮助
git <子命令> --help  #不加<子命令>是查看git命令的帮助
git version         #查看版本
git init            #本地仓库初始化
git init --bare     #创建无工作区的祼仓库,适用于充当远程仓库,一般对应的目录以.git为后缀
git clone http://url             #克隆url指定的项目的所有文件,并在本地创建此项目的git仓库
git clone -b develop http://url  #克隆url指定的项目中develop分支
git clone -b tag http://url      #克隆url指定的项目中tag
git config --global user.name "zhouhao" #设置当前用户的git全局用户名,和下面两项都存放在~/.gitconfig文件中
git config --global user.email "xxx@qq.com" #设置全局邮箱
git config --global color.ui true   #让Git显示颜色,会让命令输出看起来更醒目
git config --global core.editor vim #git默认的编辑器为nano,不常用,需要修改为vim
git config --global --list|-l       #列出用户全局设置,默认保存在~/.gitconfig文件中
git config --global -e    #交互编辑配置
git add index.html / .    #添加指定文件、目录或当前目录下所有数据到暂存区
git rm --cached file      #只删除暂存区的文件,不删除工作区文件,相当于git add 反操作
git rm file               #从删除工作目录和暂存区删除文件
git checkout file         #从暂存区复制文件到工作目录
git restore file          #新版EXPERIMENTAL命令,可以恢复修改的工作区文件
git ls-files              #查看暂存区文件,选项-s显示mode bits, object name and stage number,-o显示untracked文件
git cat-file -p <blogid>  #查看仓库对象的内容,仓库对象存放在.git/objects目录下
​
git diff [file]            #对比工作区和暂存区的区别
git diff --cached file     #对比暂存区和本地仓库的区别
git diff <commit> -- <path> #对比工作区和指定提交的区别
git diff <commit> <commit> -- <path>  #提交和提交之间的区别
​
git commit -m “comment“   #提交文件到工作区
git commit -am "comment"  #添加所有修改(不包括新文件)到暂存区并提交,相当于git add + git commit
git commit --amend --no-edit    #重新覆盖上次的提交
git commit --amend -m "comment" #重新提交,覆盖上次的提交
​
git status    #查看工作区的状态
git log -p    #查看每次提交的变化
git log  --pretty=oneline
git log --oneline -1     #查看最近一条commit日志
git log origin/main      #查看远程仓库的日志
git reflog               #查看分支或其它引用在本地仓库的完整历史记录
git reset --hard HEAD^^  #git版本回滚, HEAD为当前版本,加一个^为上一个,^^为上上一个版本
git reset --hard HEAD~n  #回滚前n个版本
git reset --hard 5ae4b06 #回退到指定id的版本,使用 git reflog 获取每次提交的ID
git reset --hard v1.0
git branch     #查看分支及当前所处的分支
git branch -av #查看所有本地和远程分支
git branch <分支名>     #创建分支<分支名>
git branch <分支名> <commit_id> #基于指定提交创建新分支
git branch -d <分支名>  #删除分支
git branch -m dev develop  #修改分支名dev为develop
git branch -M main         #修改当前分支名称为main
git checkout <分支名>       #切换到已有的分支
git checkout v1.0          #切换至指定标签v1.0
git checkout -b <分支名>    #创建并切换到一个新分支
git checkout -b <分支名> origin/<分支名> #利用服务器远程仓库的分支,同步在本地创建分支
git checkout [<commit>]-- <file> ...   #找回在工作区删除的已存入暂存区或提交的文件
git merge master -m "mastertodev"      #将master分支合并至当前分支,无选项-m, 则为交互式
​
git tag v1.0                       #当前状态创建标签
git tag -a v1.0 b720aaf -m "v1.0"  #将指定commit创建标签
git tag -d v1.0             #删除标签
git reset --hard v1.0       #回滚到指定标签
git tag        #查看标签
git show v1.0  #查看标签
​
git remote -v            #查看远程仓库
git remote show origin   #查看远程仓库详细信息
git remote add origin git@gitlab.example.com:testgroup/testproject.git #建立远程仓库和本地origin关联
git remote rename origin old-origin   #修改名称
git remote remove origin              #删除关联
​
git push                   #将本地仓库提交代码到远程服务器
git push origin master     #将当前分支推送到远程的 master 分支
git push origin dev        #将当前分支推送到远程的dev分支,如果远程没有dev会自动创建
git push -u origin master  #将本地 master 分支推送到远程仓库 master,并且参数-u表示以后即可直接用git push 代替此命令
git push origin main:dev   #将本地main分支推送至远程dev分支
git push origin :dev       #将空分支推送到远程dev,即删除远程dev分支
git push origin v1.0       #将本地仓库v1.0的tag推送到远程
git push -u origin --all   #推送所有分支
git push origin --tags     #将本地仓库所有的tag都推送到远程
git push origin --tag v1.0 #只推送指定的tag到远程
git pull                   #从远程服务器获取代码到本地仓库,并合并到本地仓库
git pull origin dev        #从远程服务器分支dev拉取代码到本地仓库
git fetch                  #从远程仓库获取最新版本,不合并至本地仓库
vim .gitignore             #定义忽略文件,即不放在仓库的文件


3.实战:

#创建管理文件夹
[root@centos7 ~]#mkdir meta-project
​
#进入要管理的文件夹
[root@centos7 ~]#cd meta-project/
​
#执行初始化命令
[root@centos7 ~/meta-project]#git init
提示:使用 'master' 作为初始分支的名称。这个默认分支名称可能会更改。要在新仓库中
提示:配置使用初始分支名,并消除这条警告,请执行:
git config --global init.defaultBranch <名称>
提示:除了 'master' 之外,通常选定的名字有 'main'、'trunk' 和 'development'。
提示:可以通过以下命令重命名刚创建的分支:
git branch -m <name>
​
#管理目录下的文件状态
[root@centos7 ~/meta-project]#echo AR功能 > index.html
[root@centos7 ~/meta-project]#git status
​
#管理指定文件
[root@centos7 ~/meta-project]#git add index.html 
#或者
[root@centos7 ~/meta-project]#git add .
​
#个人信息配置:用户名和邮箱,只需配置一次即可
[root@centos7 ~/meta-project]#git config --global user.name "zhouhao"
[root@centos7 ~/meta-project]#git config --global user.email "zhou@qq.com"
[root@centos7 ~/meta-project]#git config --global color.ui true
​
#提交
[root@centos7 ~/meta-project]#git commit -m "项目开发基本功能v0.0.1"
#查看版本记录
[root@centos7 ~/meta-project]#git log
#记录图形展示
root@centos7 ~/meta-project]#git log --pretty=oneline --graph --all
​
[root@centos7 ~/meta-project]#git log --graph --pretty=format:"%h %s"
​
[root@centos7 ~/meta-project]#git log --graph --pretty=format:'%h -%d %s (%an, %cd)'
 开发新功能
[root@centos7 ~/meta-project]#vim index.html 
AR功能
打赏功能
[root@centos7 ~/meta-project]#git add .
[root@centos7 ~/meta-project]#git commit -m '添加打赏功能'
 版本回退
发现新功能审查有问题,回滚至之前版本
#查看所有的提交记录
[root@centos7 ~/meta-project]#git log
​
#查看所有的历史提交记录
[root@centos7 ~/meta-project]#git reflog
​
#回退到指定的commitID
[root@centos7 ~/meta-project]#git reset --hard 97046ae
[root@centos7 ~/meta-project]#cat index.html 
新功能过审后,再回滚至之后版本,即上面'添加AR功能'的版本
#查看所有的历史提交记录
[root@centos7 ~/meta-project]#git reflog
#回退到指定的commitID
[root@centos7 ~/meta-project]#git reset --hard 135739a
[root@centos7 ~/meta-project]#cat index.html