git的基本使用
- 配置用户名和邮箱: git config --global user.name "xxx" / git config --global user.email "xxx"
- 创建版本库: git init
- 添加文件到暂存区: git add readme.txt
- 提交暂存区的文件到本地库: git commit -m "说明"
- 查看仓库状态: git status
- 查看工作区与暂存区的区别: git diff readme.txt
- 查看提交日志: git log 或 git log --pretty=oneline
- 版本回退
7.1 回退到上一个版本: git reset --hard head^
7.2 回退到上两个版本: git reset --hard head^^
7.3 回退到上100个版本: git reset --hard head~100
7.4 回退到指定的版本号: git reset --hard 版本号 - 查看执行的历史命令: git reflog
- 查看工作区与本地库的区别: git diff head -- readme.txt
- 撤销修改
10.1 丢弃暂存区的修改: git restore --staged readme.txt
10.2 用暂存区/本地库的内容还原工作区: git checkout -- readme.txt
说明:如果暂存区有该文件就用暂存区的;
如果暂存区没有该文件本地库有该文件,就用本地库的;
如果暂存区和本地库都没有就会报错;
10.3 用本地库还原暂存区: git reset head readme.txt
10.4 丢弃工作区的修改: git restore readme.txt - 删除文件: git rm readme.txt
- 关联一个远程库: git remote add origin 远程库地址
- 第一次推送master分支: git push -u origin master (以后推送可以把-u去掉)
- 将远程库克隆到本地: git clone 远程库地址
- 分支管理
15.1 创建dev分支: git branch dev
15.2 切换到dev分支: git checkout dev 或 git switch dev
15.3 创建并切换到dev分支: git checkout -b dev 或 git switch -c dev
15.4 查看当前分支: git branch
15.5 合并dev分支: git merge dev
15.6 删除dev分支: git branch -d dev 或 强行删除分支git branch -D dev
15.7 查看分支合并图: git log --graph 或 git log --graph --pretty=oneline --abbrev-commit
15.8 禁用fast forward模式进行合并分支: git merge --no-ff -m "merge with no-ff" dev - 对stash的操作
16.1 查看stash: git stash list
16.2 创建stash: git stash
16.3 恢复stash: git stash apply stash@{0}
16.4 删除stash: git stash drop stash@{0}
16.5 恢复并删除stash: git stash pop - 拉取指定的提交: git cherry-pick
- 指定本地 master 分支和远程 origin/master 的连接: git branch --set-upstream-to=origin/master master
- 查看远程库信息: git remote 或 git remote -v
- 推送分支: git push origin master
- 抓取远程分支: git checkout -b dev origin/dev
- rebase命令: git rebase
- 标签的使用
23.1 创建标签: git tag或 git tag -a v0.1 -m "first tag" 1094adb
23.2 查看所有标签: git tag
23.3 查看某个标签的信息: git show
23.4 删除本地标签: git tag -d v0.1
23.5 推送标签: git push origin v0.1 或 git push origin --tags
23.6 删除远程分支: git push origin :refs/tags/v0.1 - 强制添加到git: git add -f App.class
- 检查忽略规则: git check-ignore -v App.class
- 停止追踪某个文件: git rm --cached 文件名
- 配置命令别名(使用"last"代表"log -1"): git config --global alias.last "log -1"
- 查看当前仓库配置: git config --list
- 删除远程库:git remote rm origin
说明:
- head指向的就是当前分支
- git创建分支就是增加一个指针,然后改变head的指向,工作区没有任何变化
- 执行git init所在的文件夹就是工作区,.git文件夹里包含暂存区和本地版本库
- git记录的是“修改”,包括文件的修改、新增/删除文件
- git默认使用fast forward模式进行合并分支
- rebase操作可以把本地未push的分叉提交历史整理成直线
- rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比
- Git的标签是版本库的快照,但其实它就是指向某个commit的指针
- 配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用
- 按“q”结束日志的查看
- 如果pull的时候提示:fatal: refusing to merge unrelated histories
git pull origin master --allow-unrelated-histories
如果设置了默认: git pull origin master --allow-unrelated-histories
附:
- ssh key位置在用户的.ssh目录下
- 生成ssh key:打开git bash执行ssh-keygen -t rsa -C "邮箱"
- Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化
- git日志配置:git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"