常规命令
- git config --global user.name xxx //设置账户
- git config --global user.email xxx@163.com
- git config —list
- git init
- git add . //工作区 —> 缓存区
git add a.txt b.txt - git rm a.txt //删除文件,相当于直接删除文件,又执行了放缓存区的操作
git rm -f a.txt //强制删除
git rm -r filebook //删除文件夹 - git commit -m “msg”
- git commit --amend //修改上一次提交记录(可修改代码,添加到缓存区后合并成一条提交记录)
- git status
- git diff a.txt
- git pull //将远程代码拉到本地,并合并到本地分支(将本地修改作为)
- git fetch //将远程代码拉到本地
- git pull --rebase
- git push
- git stash //保存工作现场
git stash -m “msg” - git stash list
- git stash pop //恢复工作现场,并删除stash记录
相当于:- git stash apply //恢复
git stash apply stash@{0} //恢复到指定stash - git stash drop stash@{0} //删除stash 记录
- git stash apply //恢复
- git stash clear
版本回退
- git log //提交日志,回退后新版本的提交记录会丢失
git log -n //看到n次提交记录
git log --pretty=oneline //简约版,将版本历史显示一行,历史版本号全部显示
git log --pretty=oneline --abbrev-commit //将版本历史显示一行,历史版本号部分显示 - git relog //命令历史,可找到所有版本号(后悔药)
- git reset --hard HEAD^ //重置上一个版本,上上个版本HEAD^^ 上n个就有n个 ^,也可写作HEAD ~ n(例:HEAD~100)
git reset --hard cmtID //不保留commit之前的代码
git reset cmtID //保留commit之前的代码 - git push -f origin dev //远程也回退版本(须先在执行本地回退)
撤销修改
- git checkout – a.txt //撤销工作区的修改
git checkout --* //撤销从上次提交之后做的所有修改 - git reset HEAD a.txt //暂存区 —> 工作区
git reset HEAD . //reset 所有文件 - git commit --amend //修改上一次提交记录(可修改代码,添加到缓存区后合并成一条提交记录)
恢复相关
误操作 stash drop
- git fsck --lost-found //历史操作过文件的记录
说明: 每次提交会生成commit组件,之后会创建tree组件,存储文件信息,每个blob代表一个文件(存储文件内容),在tree里面能找到。 - git show blob_no //查看文件内容
- git stash apply id // 恢复
缓存区文件由于reset hard 丢失
方法一:
- git fsck --lost-found //历史操作过文件的记录
说明: 每次提交会生成commit组件,之后会创建tree组件,存储文件信息,每个blob代表一个文件(存储文件内容),在tree里面能找到。 - git show blob_no //查看文件内容
- git show blob_no > lose_file.txt //文件导出至lose_file.txt
方法二:
- find ~/.git/objects -type f | xargs ls -lt | sed 10q //最近添加的10条add记录
- git cat-file -t id //查看文件类型 把最后一个/去掉 复制objects/ 后面的所有东西放在-t后面
- git cat-file -p id //根据文件类型显示内容
远程仓库相关
- git remote add origin git@github.com:xxxx.git //关联本地和远程
- git push -u origin master //第一次推送 -u 推送内容+关联本地和远程分支master分支
git push origin master - git remote -v //查看远程仓库信息
- git remote rm origin //解除本地与远程库的绑定
- git clone git@github.com:xxxx.git //克隆本地库
- git branch --set-upstream-to=origin/dev dev //设置本地分支与远程分支的链接
分支相关
- git checkout -b dev //新建分支,HEAD指向dev
git switch -c dev //新建分支,HEAD指向dev (防止与撤销命令混淆)
相当于:- git branch dev
- git checkout dev //切换分支
git switch dev //切换分支
- git branch //查看当前分支
- git branch -d dev //删除分支
git branch -D dev //强制删除(适用于要丢弃的没有merge过的分支) - git merge dev // dev合并到当前分支
- git log --graph --pretty=oneline --abbrev-commit //分支合并图
git log --graph - git merge --no-ff -m “merge with no-ff” dev //禁用fast forward
模式,合并时生成一个新的commit,可查看分支信息。(fast forward 模式在合并分支时,会删除分支信息) - git cherry-pick 4c805e2 //把另一个分支的提交修改复制到当前分支,会在当前分支生成一个改动相同的commit记录
- git rebase //把本地未push的分叉提交历史整理成一条直线
标签相关
- git tag v1.0 //打标签,打在最新的commit上
git tag v1.0 cmtID //打标签,打在对应的commit id上 - git tag //查看所有标签
- git show v1.0 //查看标签信息
- git tag -a v0.1 -m “version 0.1 released” 1094adb //创建带说明的标签,-a指定标签名,-m说明文字
- git tag -d v1.0 //删除标签
- git push origin v1.0 //将标签传送到远程仓库
git push origin --tags //将所有标签传送到远程仓库 - git push origin :refs/tags/v0.9 //删除远程仓库的标签(需先删除本地,再执行改命令)