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

参考:git commit之后,想撤销commit

3、标签

(1)基础命令

git tag -a -m //创建标签

git tag //基于Commit创建标签

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

2、廖雪峰Git教程

https://www.liaoxuefeng.com/wiki/896043488029600

posted on 2020-10-27 07:14  村_长  阅读(92)  评论(0编辑  收藏  举报

导航