基本概念
工作区域(Working Directory):git初始化后所在目录,也就是自己电脑上的文件目录
版本库包括暂存区(Stage)和远程仓库(Repository)
Git图解
- 关于回退的命令有两个:reset和checkout
- 快照回滚
快照即提交的版本,每个版本称之为一个快照。
·* git三棵树分别是:工作区域(Working Directory)、暂存区域(Stage)和git仓库(Repository)
HEAD指向最新放入仓库的版本。
如果文件未添加到暂存区则属于Untracked files未跟踪文件。
git管理的文件有三种状态:已修改(modified)、已暂存(staged)和已提交(committed)。
git常用命令
git init [dirName]
初始化git项目
git add [fileName]
添加暂存区
git commit -m "commit introduction"
提交说明
git clone (target)
克隆项目
git status
查看状态(可以查看哪些文件更改过)
git reset HEAD [fileName]
恢复暂存区域(即重置了add操作,如果已经执行了commit提交操作则此操作无效。如果后面接文件名,表示恢复该文件;如果不接文件名,表示上一次添加的文件。)
git commit -am
从工作目录一步添加到仓库
git log
查看历史操作记录
git reset HEAD~
HEAD表示最新提交的快照,而HEAD~表示HEAD的上一个快照,HEAD~~表示上上个快照,如果表示上10个快照,则可以用HEAD~10
git reset HEAD~
默认是git reset --mixed HEAD~
缩写,影响仓库和暂存区域;git reset --soft HEAD~
只影响仓库;git reset --hard HEAD~
影响仓库、暂存区域和工作区域。
git reflog
查看git记录的每一次操作的版本ID号
git diff
比较暂存区域与工作目录的文件内容
git diff [快照ID]
比较之前版本的快照与当前工作目录内容
git diff HEAD
比较当前版本快照与当前工作目录内容
git diff --cached
比较最新提交的快照和暂存区域的文件
git diff --cached ID号
比较指定快照与暂存区域文件的区别
git commit --amend
修正最近的一次提交
git commit --amend -m "新提交说明"
修改最近一次提交提交说明
git checkout -- [fileName]
–左右是两个空格中间没有空格将暂存区域文件恢复到工作目录
git add *
将工作目录所有文件添加到暂存区域
git rm [fileName]
删除工作目录和暂存区域文件,可以使用git reset --soft HEAD~
删除仓库残存下的文件
git rm --cached [fileName]
只删除暂存区域的文件
git mv oldFileName newFileName
重命名文件,Windows使用ren命令
git branch [branchName]
创建分支,可以使用git log
命令查看、
git log --decorate --oneline
精简版日志
git checkout [branchName]
切换分支
git log --oneline --decorate --graph --all
让git显示所有分支并绘制分支图
git merge [branchName]
合并分支
git checkout -b [newBranch]
创建并合并分支
git branch -d [branchName]
删除分支
git merge --no--ff [branchName]
不用快速合并
git中文乱码
bash命令框不会出现中文乱码,但是windows中cmd命令框会出现中文乱码,这个时候可以通过配置解决中文乱码问题。
git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding utf-8
export LESSCHARSET=utf-8 bash配置
set LESSCHARSET=utf-8 windows配置
- 部分命令操作不同区域图解
git忽略指定文件
echo *.fileSuffix > .gitignore
git搭建远程仓库
git remote add myrepository httpurl.git
添加origin远程仓库
git remote
查看现在已有远程仓库
git remote rm myrepository
移除远程仓库