Git常用命令整理
从我的notion文档迁移到的博客园:[https://www.notion.so/Git-48578f3237274e11963b116b293b448d)
一、仓库同步
1、获取远程仓库到本地:本地不存在
git clone
2、获取远程分支:仓库已关联但分支本地不存在
git fetch origin feature-dev
git checkout -b feature-dev origin/feature-dev
3、推送本地仓库到远程:远程为空
git init
git add —all
git commit -m "init"
git remote add origin
git push -u origin master
注:git remote rm origin(删除远程源)
4、推送本地仓库到远程:都不为空
git remote add origin
git pull origin master //此时会报错,Git :fatal: refusing to merge unrelated histories
git pull origin master --allow-unrelated-histories
参考:https://blog.csdn.net/qq_39400546/article/details/100150320
二、查看Commit历史
1、查看提交日志
-
查看所有Commit记录
git log
-
根据文件查看Commit记录
git log --follow README.md
2、根据日志中的Commit ID查看明细
-
根据Commit ID查看某次提交明细
git show e3dea7d7f5a1d5384fa399c45f6b7376d36b08a7
-
根据Commit ID及File查看某次提交的具体文件
git show e3dea7d7f5a1d5384fa399c45f6b7376d36b08a7 README.md
3、其它
-
查看文件各代码行的修改时间戳
git blame README.md
参考:https://www.cnblogs.com/tigerson/p/7149947.html
三、Git本地3大区
工作区、暂存区和版本库
- 工作区(Working Directory)是我们直接编辑的地方,例如 VS Code 打开的项目,记事本打开的文本等,肉眼可见,直接操作。
- 暂存区(Stage 或 Index)数据暂时存放的区域,可在工作区和版本库之间进行数据的友好交流。
- 版本库(commit History)存放已经提交的数据,push 的时候,就是把这个区的数据 push 到远程仓库了
- git diff 命令判断各区间数据是否一致
参考:https://blog.csdn.net/qq_32452623/article/details/78417609
四、分支
1、查看分支信息
git branch //查看本地分支
git branch -r //查看远程分支
git branch -a //查看本地&远程分支
git branch -vv //查看本地&远程分支映射
2、创建&切换分支
- git branch
//创建分支 - git checkout
| git switch //切换分支 - git checkout -b
| git switch -c //创建&切换分支 - git checkout -b
origin/ //本地创建与远程分支对应的分支(远程分支必须存在) - git branch -m <old_branch> <new_branch> //重命名本地分支
- git push -u origin
//本地分支推送到远程仓库(-u并映射)
3、合并分支
git merge
4、删除分支
git branch -d
git branch -D
git push origin --delete
5、其它
当“bug”在其它一个Branch里解决了要复制到另外一个分支(当前分支),采用如下命令:
git cherry-pick 4c805e2(Commit ID)
五、其它
1、.gitignore忽略失效的解决方法
对于已经提交过的文件/文件夹,若重新加入.gitignore需要先从缓存中移除
(1)单个文件
git rm --cached logs/xx.log
(2)单个文件夹
git rm --cached -r logs
(3)整个移除
git rm --cached -r .
参考:使用.gitignore忽略文件或者文件夹及其失效解决方法
2、撤销上次修改
(1)撤销工作区
- git checkout — <file/folder>
(2)撤销暂存区
回到工作区,
- git reset HEAD <file/folder>
(3)撤销版本库(即Commit)
回到暂存区,
- git reset --soft HEAD^ //撤销上一个Commit
3、标签
(1)基础命令
git tag -a
git tag
git push origin
git tag //查看标签
git show
git tag -d
git push origin :refs/tags/
(2)从标签获取代码
-B除了创建及切换分支外,还会覆盖同名的分支
git checkout -b
git checkout -B
4、回退到某次Commit
--hard 物理回退(彻底回退版本,连本地文件都会被回退到上个版本的内容)
git reset --hard HEAD^ //上一个版本
git reset --hard HEAD^^ //上上个版本
git reset --hard HEAD~100 //往前推100个版本
git reset --hard
六、推荐
1、官网
https://git-scm.com/book/zh/v2