git常用命令总结
添加文件
- git add -A 提交所有变化
- git add -u 提交被修改和被删除的文件(不包括新文件)
- git add . 提交新文件和被修改的文件(不包括被删除的文件)
删除文件
- git rm等同于 git rm --cached + 文件名
- git rm --cached + 文件名> 这个命令不会删除物理文件,只是将已经add进缓存的文件删除。
- git rm --f + 文件名> 不仅将文件从缓存区删除,而且还会将物理文件删除,注意配合commit使用。
- git checkout – 文件 丢弃所有修改或删除,不影响新增或未跟踪的文件。
- 文件修改后没有放入缓存区,则撤销工作区修改回到和当前版本库一致的状态
- 文件加入了缓存区,又做了修改,则回到加入缓存区时的状态
- git reset HEAD + 文件名 取消缓存区的修改,不加文件名,即取消所有缓存区的修改,然后通过git checkout – 文件,就可回到与版本库一致的状态,或者git restore .。
- git clean -df 删除工作区所有未跟踪的文件和目录(不包含.gitignore的文件)
- git clean -xdf 删除所有未跟踪的文件和目录(同时包含.gitignore的文件
查看commit信息
- git log 查看历史记录
- git log --pretty=oneline 简单版历史记录
- git log --graph --pretty=oneline --abbrev-commit 获得一个漂亮的commit列表
版本回退
- git reset --hard HEAD^ 回到上一个版本
- git reset --hard HEAD@{数字} 回到指定版本
- git reset --hard 版本号 回退到指定版本
- git reflog 查看版本号
- git revert commit_id 撤销指定的版本,会产生一次新的commit
与远程库联系
- git remote add origin 地址 建立与远程库的连接
- git push -u origin master 把本地库推送到远程库
- git clone 链接 克隆远程库到本地
- git checkout -b 分支名 origin/远程库的分支名 将远程库的分支拉到本地
- git remote 查看远程库信息
- git remote -v 查看远程库详细信息
- git checkout 远程分支名 将远程分支拉到本地,如果本地没有就创建
- git checkout -b dev origin/dev 把远程的分支加入到本地
- git branch --set-upstream-to=origin/dev dev 设置本地分支与远程分支的连接
- git push origin --delete 分支名 删除一个远程分支
分支操作
- git checkout -b dev分支 创建并切换到dev分支
- git branch dev 创建分支
- git checkout branch 切换分支
- git branch 查看分支
- git branch -a 查看分支包括远程分支
- git merge dev 合并某分支到当前分支
- git branch -d dev 删除分支
- git switch -c dev 创建并切换到新的分支
- git switch master 直接切换到已有的分支
- git merge --no-ff -m “保留信息” dev 合并分支并留下记录
- git cherry pick 版本号 复制某一次分支的commit到指定分支
暂存状态
- git stash 保存当前的工作区和缓存区去状态,然后回到最新的版本库。
- git stash list 显示保存记录
- git stash apply 版本号 还原工作现场,包括工作区和缓存区,但不会删除记录
- git stash drop [版本号] 删除记录
- git stash pop 版本号 还原工作现场,并且删除记录
标签操作
- git tag (tagname) (版本号) 创建标签,方便记忆,默认一最近一次的commit为对象
- git tag -a tagname -m “blablabla…” 指定标签信息
- git show tagname 查看标签的详细信息
- git tag 显示所有标签的信息
- git push origin tagname 推送一个标签,tagname改为–tags,推送全部的标签
- git tag -d tagname 删除一个本地标签
- git push origin :refs/tags/tagname 可以删除一个远程标签