一.设置仓库的本地账户
—global会使所有仓库都使用这个账户,谨慎使用
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
二.创建版本库(本地仓库repository)
$ git init
三.添加文件到版本库(暂存区working tree)
$ git add file1.txt //添加一个
$ git add file2.txt file3.txt //添加多个
$ git add . //添加目录下所有
$ git add -f . //强制添加,越过ignore
四.提交文件到版本库(本地仓库repository)
$ git commit -m "add 3 files"
五.日志
$ git log //查看提交日志,回退后会丢失
$ git log -1 // 显示最后一条日志
$ git log --pretty=oneline //单行显示
$ git log --pretty=oneline --abbrev-commit //commit码缩写
$ git reflog //查看命令历史,包含所有操作
六. 时光回退
当前版本为HEAD,穿梭后,未来的git log会丢失,一去不复返
- —hard 回退到上个版本,丢弃所有
- —mixed 回退到上个版本,回退commit到工作区
- —soft 回退到上个版本,回退commit到暂存区,工作区不变
$ git reset —mixed HEAD
$ git reset --hard HEAD^ //回退到上个版本,
$ git reset --hard HEAD^^ //回退到上个版本
$ git reset --hard HEAD~100 //回退到上100个版本
$ git reset --hard 1094a //移动到指定版本号
七. 撤销修改
撤销工作区文件的修改,用暂存区或版本库覆盖工作区(已经修改)
$ git checkout -- readme.txt
撤销暂存区的修改,移回工作区覆盖(已经add)
$ git reset HEAD readme.txt
如果已经commit到版本库中,可以使用时光回退撤销修改(已经commit未push)
回退后commit的部分会回到暂存区中
$ git reset --soft HEAD^
修改已提交的commit
commit信息改成 fix #22968497
git commit --amend
改好后
git push -f -u
八.删除文件
当删除本地文件后,可以使用以下命令,效果和git add 一样
$ git rm
九.远程仓库
拉取仓库代码:git pull
推送仓库代码:git push
查看关联远程仓库:git remote -v
关联远程空白仓库: git remote add origin git@github.com:JSONCat/gitskills.git
克隆远程仓库到本地: git clone git@github.com:michaelliao/gitskills.git
十.分支管理
1. 创建和合并分支
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
或者git switch <name>
创建+切换分支:git checkout -b <name>
或者git switch -c <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
强制删除分支:git branch -D <name>
查看分支从哪里检出:git reflog --date=local | grep <branchname>
2. 远程分支
刷新远程分支列表:git remote update origin --prune
拉取远程分支到本地:git checkout -b dev origin/dev(dev为远程仓库的分支名)
本地关联远程分支:git push --set-upstream origin dev
推送本地分支到远程:git push origin dev
查看远程分支:git branch -r
查看本地分支与远程分支的对应关系:git branch -vv
3. 禁用快速合并
使用—no-ff参数可以关闭快速合并Fast forward,在合并时主分支会产生一个commit,所以需要使用-m添加备注
$ git merge --no-ff -m "merge with no-ff" dev
4. 缓存暂存区的内容
$ git stash //缓存当前的暂存区
$ git stash list //显示缓存列表
$ git stash apply //取出缓存
$ git stash pop //取出缓存并从缓存列表删除
$ git stash apply stash@[0] //取出指定缓存
$ git stash drop stash@[0] //删除指定缓存
十一.标签
- 命令
git tag <tagname>
用于新建一个标签,默认为HEAD
,也可以指定一个commit id; - 命令
git tag -a <tagname> -m "blablabla..."
可以指定标签信息; - 命令
git tag
可以查看所有标签。 - 命令
git show <tagname>
可以查看标签信息 - 命令
git push origin <tagname>
可以推送一个本地标签; - 命令
git push origin --tags
可以推送全部未推送过的本地标签; - 命令
git tag -d <tagname>
可以删除一个本地标签; - 命令
git push origin :refs/tags/<tagname>
可以删除一个远程标签。