Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库

1.安装git ,配置

# 安装
yum install git

# 配置用户名和邮箱
git config --global user.name "graycat"
git config --global user.email "test@qq.com"

# 创建本地版本库
mkdir gitsave
cd gitsave
git init

# 显示当前的Git配置
$ git config --list

# 编辑Git配置文件
$ git config -e [--global]

# 设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"

2.克隆远程项目

# 克隆
git clone 

# 查看当前克隆地址
git remote -v
# 查看当前项目修改状态
git status
# 查看修改的具体内容
git diff
# 新加的文件纳入git管理
git add test.text
# 提交
git commit test.text
# 删除
git rm -f test.txt
# 查看日志 (仅显示摘要)
git log --stat
# 改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]

3.远程仓库

#可以使用git remote查看当前的远程库。
git remote -v可以显示对应的克隆地址。(对于多个远程仓库很有用)

#添加远程仓库
git remote add [short_name] [url]可以添加新的远程仓库。

#从远程仓库抓取数据
git fetch [remote-name]可以从远程仓库抓取数据到本地。
也可以使用git pull

#推送数据到远程仓库
git push [remote_name] [branch_name]
#默认使用origin和master。

#查看远程仓库信息
git remote show origin

#远程仓库的删除和重命名
git remote rename [old_name] [new_name]
git remote rm [remote_name]

4.tag

# 添加tag(-m是描述信息)
git tag -a v0.1 -m "my version 0.1"

# 查看tag日志
git show v0.1

# 查看当前tag
git tag

# tag推送到远程仓库
git push origin v0.1 #单个标签
git push origin --tags #所有标签

5.分支

# 显示所有分支
git branch
git branch --merged # 显示已合并分支
git branch --no-merged # 显示未合并分支

# 创建分支
git branch testing
# 切换分支
git checkout testing
# 上面功能合并(切换,没有就创建)
git checkout -b testing

# 合并分支(hotfix合并到master)
git checkout master
git merge hotfix
# 删除老的分支
git branch -d hotfix

6.提交代码

# 提交暂存区到仓库区
$ git commit -m [message]

# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]

# 提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -a

# 提交时显示所有diff信息
$ git commit -v

# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]

# 重做上一次commit,并包括指定文件的新变化
$ git commit --amend [file1] [file2] ...

7.回退(提交然后,后悔了)

//==================工作区===================
git checkout -- filepathname //放弃修改某个文件
例如: git checkout -- readme.md
git checkout .  //放弃所有修改的文件

git restore . //放弃所有修改的文件

//===================在暂存区====================
git reset HEAD filepathname //恢复某个文件到工作区
例如: git reset HEAD readme.md
git reset HEAD . //恢复所有文件到工作区
git  reset  //恢复所有文件到工作区

注意:这里只是恢复到了工作区,如果想放弃修改的代码还需要执行步骤1(工作区)中的操作

//===============在版本区(本地仓库)================
1、如果你想全部撤回并回到远程仓库最新的状态(不保存代码修改)
	1、git reset --hard HEAD^ //回退上一次commit的状态
		//或git reset --hard commit_id //回退某个版本+id号就行
	2、git pull //拉取一下远程最新的
2、如果你想拉回工作区并保存修改。只撤销 commit 和 add(保存代码修改)
		git reset --mixed HEAD^
		或
		git reset HEAD^
3、如果你想撤销commit 但是不撤销 add(保存代码修改)
		git reset --soft HEAD^ //只撤销了git commit , 修改后的代码还在暂存区
4 、终极版,由于你太懒,不管是暂存区,版本区,你只想撤销修改并回到远程最新的版本(不保存代码修改)
 	1 、git fetch --all
 	2、git reset --hard origin/master //git reset --hard origin/远程分支名
	注意:这里只在暂存区和版本区哦

//====================远程分支==========================
胆小误试,搞之前记得做备份
第一种
回滚远程分支的最近一次提交
git revert HEAD
git push origin 分支名
例如:我刚在master分支提交了一次
   git revert HEAD
   git push origin master
慎用啊~~~这种方式会在远程生成一个版本号

第二种
git reset --hard HEAD^ //回退上一个版本
或
git reset --hard commit_id //回退到某个版本 id就是你的版本号
git push origin HEAD --force //强制推送到远程,可能会受到保护