配置用户名和邮件地址
git config --local user.name <user.name>
git config --local user.email <user.email>
git配置等级
使用多个git账户时,个人比较喜欢使用 local参数来进行git的的配置,每个仓库进行单独配置不会相互影响。
-
local仓库级别,优先级最高,对应当前仓库下的
.git/config。 -
global优先级次之。 -
system优先级最低。
初始化本地仓库
git init
执行此命令后会在本地创建 .git 文件。
添加管理文件
在此之前文件处于unstaged状态,执行git add后文件处于staged状态。
git add <filename>
提交改变
提交这次改变,并使用-m参数定义改变信息,要遵循commit规范填写相关信息。此后文件再次从staged状态回归unstaged状态。
git commit -m <commit message>
流程图
显示工作目录和暂存区状态
git status
查看日志
git log
git log --oneline #每个commit内容显示在一行
查看 unstaged
查看unstaged状态的文件与上个commit后的文件有什么不同
git diff
查看 staged
查看staged状态的文件与上个commit后的文件有什么不同
git diff --cached
查看全部修改
同时查看以上两个修改
git diff HEAD
修改已经commit的版本
将本次add内容合并到上次commit中不再创建一个新的commit记录,但会修改commitId
git commit --amend --no-edit ## "--no-edit":不编辑,直接合并到上一个commit
reset 回到 add 之前
撤销本次 add 命令。
git reset <filename>
reset 回到 commit 之前
每个 commit 都有自己的 id,HEAD是一个指针,指引当前的状态在哪一次commit。
git reset --hard HEAD #强制回到最后一次commit
git reset --hard HEAD^^ #回到倒数第三个commit
git reset --hard HEAD~2 #结果同上一条命令
git reset --hard <commit id> #回到指定的commit
查看所有HEAD的改动
查看所有HEAD的改动,通过此方式可以使HEAD指针回到“未来”。
git reflog
回溯单个文件
不修改其他文件的前提下使单独的文件回到某次commit
git checkout <commit id> -- <filename>
查看分支结构
git log --oneline --graph
创建新的分支
git branch <branch name> #创建新的分支
git branch #查看当前所处分支
切换分支
git checkout <branch name>
创建并切换分支
git checkout -b <branch name>
合并分支
merge
如果直接 git merge dev,git 会采用默认的 Fast forward 格式进行 merge,这样 merge 的这次操作不会有 commit 信息。 log 中也不会有分支的图案。 我们可以采取 --no-ff 这种方式保留 merge 的 commit 信息。
git merge <branch name> #将指定分支合并到当前分支
git merge --no-ff -m "merge info" <branch name> #将指定分支合并到当前分支,并保留merge信息。
rebase
暂存修改
git stash #暂存修改
git stash list #查看在stash中的缓存
git stash pop #h恢复暂存