创建版本库

git init

进入一个文件,执行该命令此时目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。如果你没有看到.git目录,那是因为这个目录默认是

隐藏的,用ls -ah命令就可以看见。

添加文件到Git仓库

第一步:添加到暂存区

git add xxx

xxx可以是“.”表示所有文件,也可以是指定的文件名,该命令可反复多次使用,添加多个文件

⚠️如果此时添加失败,可能是这个文件被.gitignore忽略了,如果我们确实想添加该文件可以使用参数 -f

强制添加文件

git add -f xxx

第二步:提交到仓库

git commit -m "xxx"

xxx是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

执行完该命令可能会提示:

  • 1 file changed:1个文件被改动

  • 2 insertions:插入了两行内容

⚠️如果不用git add到暂存区,那就不会加入到commit

查看当前工作区的状态

git status

执行完该命令可能会提示:

  • Changes not staged for commit(还没有准备提交的修改)

查看修改内容

情况一:查看当前文件的修改

git diff xxx

xxx想要查看修改的文件名

情况二:查看当前版本和版本库最新版本的区别

git reset HEAD -- xxx

xxx想要查看修改的文件名

查看提交历史

git log 

命令显示从最近到最远的提交日志,可以通过git log来确定要回退到哪个版本

git log --pretty=oneline

嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数

⚠️你看到的一大串类似1094adb...的是commit id(版本号)

版本回退(已经commit,回到某一个commit)

git reset --hard xxx

xxx表示版本号或者HEAD

情况一:回退到上一个版本

git reset --hard HEAD^

情况二:回退到上上一个版本

git reset --hard HEAD^^

情况三:回退到上100个版本

git reset --hard HEAD~100

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较

容易数不过来,所以写成HEAD~100

情况四:回退到回退之前的版本

git reset --hard xxx

xxx是想要回退的那个版本的commit id(版本号),其余三个情况也可以不使用HEAD,使commit id

两种方法取到该版本号:

  • 只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊

  • 使用git reflog查看命令历史找到该版本号

撤销修改

情况一:已修改,未暂存,回退到最近一次commit(修改看不见了)

git checkout -- xxx

xxx可以是“.”也可以是指定文件名,此操作其实就是丢弃对工作区的修改

情况二:已修改,已暂存,回退到最近一次add

git checkout -- xxx

xxx可以是“.”也可以是指定文件名,这种情况是git add后又做了修改,想要回退到add

情况三:已修改,已暂存,未提交,回退到工作区(修改保留在工作区)

git reset HEAD xxx

xxx可以是“.”也可以是指定文件名,此时可以使用git checkout丢弃对工作区的修改

情况四:已修改,已暂存,已提交,回退到上一个commit

git reset --hard HEAD^

从版本库删除文件

git rm xxx

xxx是文件名,命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容

删除文件

rm xxx

xxx是文件名,只是删除本地

接下来有两个选择:

  • 确实要从版本库中删除该文件:git rm xxx -> git commit

  • 删错了恢复到最新版本:git checkout -- xxx

查看命令历史

git reflog

关联本地仓库和远程仓库

情况一:先在本地创建了一个仓库,然后在远程也创建了一个仓库,现在想要将他们关联,也就是先有本地库,然后有远程库

git remote add origin xxx

xxx是远程仓库地址,origin是远程仓库名字(默认)

情况二:先在远程创建一个仓库,然后从远程库克隆

从远程库克隆

git clone xxx

xxx是远程仓库地址

创建分支

情况一:从本地已存在的分支创建一个新的分支(相当于克隆当前本地分支)

方法一:

git branch xxx 

xxx是分支名,这种方法创建的分支并不会切换分支,还是在当前分支

方法二:

git checkout -b xxx

xxx是分支名,这种方法创建的分支会切换分支,在新创建的分支

情况二:从远程已存在的分支创建一个新的分支(相当于克隆远程分支到本地)

git checkout xxx1 -b xxx2

xxx1是远程分支名,xxx2是本地分支名

假设一:该分支是我们自己在远程库创建的

xxx1和xxx2不同名:那么相当于我们在本地基于该远程分支新创建了一个分支,之后提交操作都会提交到我们新创建的这个分支的远程分支上

xxx1和xxx2同名:相当于我们在本地创建了该远程分支的本地分支,并与之关联,之后提交操作都会提交到该远程分支上

假设二:该分支是其他人在远程库创建的(多人合作开发)

xxx1和xxx2不同名:那么相当于我们在本地基于该远程分支新创建了一个“自己”的分支,只有我们自己用,提交不会有冲突

xxx1和xxx2同名:相当于我们在本地创建了该远程分支的本地分支,并与之关联,之后提交操作都会提交到该远程分支上,因为大家都是从该分支创建的本地分支,然后提交,所以可能会出现冲突

切换分支

git checkout xxx

xxx是分支名

查看分支

情况一:查看本地分支

git branch

该命令会列出本地所有分支,当前分支前面会标一个*

情况二:查看远程分支

git branch -r

该命令会列出远程所有分支

合并分支

情况一:快速合并(不会创建新的提交,分支合并图中看不出来曾经做过合并)

git merge xxx

xxx是分支名,该命令会将xxx合并到当前分支

如果没有冲突,执行该命令会提示 Fast-forward,Git告诉我们,这次合并是"快进模式",也就是直接把master指向dev的当前提交,所以合并速度非常快。当然,也不是每次合并都能Fast-forward

情况二:非快速合并(创建新的提交,分支合并图中可以看出来曾经做过合并)

git merge --no-ff -m "merge with no-ff" xxx

xxx是分支名,该命令会将xxx合并到当前分支

--no-ff表示强制禁用Fast forward模式,因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。

删除分支

情况一:分支已经被合并

git branch -d xxx

xxx是分支名

情况一:分支没有被合并

git branch -D xxx

xxx是分支名,强制删除分支

注意;删除分支前要先切换到其他分支,在删除想要删除的分支

查看分支合并图

git log --graph 

可以添加参数 --pertty=oneline和 --abbrev-commit 

推送分支

 git push origin xxx

xxx是分支名,推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上,并不是一定要把本地分支往远程推送

抓取分支(就是创建分支的情况二)

git checkout -b branch-name origin/branch-name 

暂存工作现场

git stash

⚠️我们知道分支的更改不提交是没办法切换分支的,但是现在我就是不想提交当前分支的修改切换分支,如何实现呢?就是使用该命令!!!,可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash

查看暂存内容

git stash list

执行该命令可以查看暂存内容列表

恢复工作现场

情况一:恢复工作现场并删除stash内容

git stash pop

情况一:恢复工作现场不删除stash内容

git stash apply stash@{0}

stash@{0}是指定的stash,可选的

删除暂存内容

git stash drop

复制特定提交到当前分支

git cherry-pick xxx

xxx是commit id,执行该命令Git自动给当前分支做一次提交,假如我们在a分支上做了修改并提交,我希望b分支上也有这次修改:

  • 获取a分支此次修改提交的commit id

  • 切到b分支

  • 执行git cherry-pick commit id

案例:

$ git branch
* devmaster
$ git cherry-pick 4c805e2
[master 1d4b803] fix bug 1011 file changed, 1 insertion(+), 1 deletion(-)

Git自动给dev分支做了一次提交,注意这次提交的commit是1d4b803,它并不同于master的4c805e2,因为这两个commit只是改动相同,但确实是两个不同的commit。用git cherry-pick,我们就不需要在dev分支上手动再把修

bug的过程重复一遍。

查看远程库信息

git remote

执行该命令输出 origin ,远程仓库的默认名称是origin。可以添加参数 -v 查看更加详细的信息

git remote -v

执行该命令显示可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址:

origin git@github.com:michaelliao/learngit.git (fetch) 

origin git@github.com:michaelliao/learngit.git (push)

建立本地分支和远程分支的关联

git branch --set-upstream branch-name origin/branch-name

拉取服务器最新代码

情况一:当前本地分支和远程分支已经关联

git pull

情况二:当前本地分支和远程分支没有关联

方法一:直接拉取指定的远程分支

git pull origin xxx 

方法二:先建立当前本地分支和远程分支的关联在拉取

git branch --set-upstream-to=branchname origin/branchname 

再执行

git pull

创建标签

情况一:给当前的版本创建标签

git tag xxx

xxx是标签的名字,eg:v1.0

情况二:给指定的版本创建标签

git tag xxx1 xxx2

xxx1是标签的名字,eg:v1.0,xxx2是commit id

情况三:创建带有说明的标签

git tag -a xxx1 -m "xxx2" xxx3

xxx1是标签名,xxx2是说明,xxx3是commit id可选

查看标签列表

git tag

显示标签列表,标签不是按时间顺序列出,而是按字母排序的

查看标签信息

git show xxx

xxx是标签名

删除标签

情况一:删除本地标签

git tag -d xxx

xxx是标签名

情况一:删除远程标签

1、先删除本地标签

git tag -d xxx

2、再删除远程标签

git push origin :refs/tags/xxx

xxx是标签名

推送标签

情况一:推送指定标签到远程

git push origin xxx 

xxx是标签名

情况一:推送所有未推送的标签到远程

git push origin --tags

转载于:https://www.cnblogs.com/kunmomo/p/11364799.html

Git复习(十一)之常见命令用法相关推荐

  1. Git基础操作及常见命令——详解

    这是我看了一些大牛们讲解之后做了一下总结,其中讲解较为详细的是廖雪峰的Git讲解 目录 Git的简介 Git的安装 创建仓库 编辑文件 修改文件 查看修改记录 撤销修改 删除文件 连接GitHub 分 ...

  2. git status清空_Git常见命令和遇到问题的解决办法

    一.Git整体理解 Git代码管理是分布式管理方式系统,优点在于其极高的安全性和非常强大的分支管理. image.png 工作区(working directory): 就是本地的代码区,电脑能看到的 ...

  3. Linux基础之常见命令用法(一)

    一.Linux文件目录结构 在讲述之前,先简短的说说Windows文件结构,打开'计算机',看到的一个个的驱动器(盘符,例C盘.D盘等),点开其中任意盘符,看到的是一个个文件或文件夹,继续打开..., ...

  4. git配置及常见命令

    首先我们需要本地Git与远程GitHub连接的建立,只有将Git本地与远程的GitHub建立了连接以后我们本地的项目才能上传至远程服务器 ** 配置流程: ** 1.在git中配置全局的github账 ...

  5. 常见Shell命令用法总结

    2019独角兽企业重金招聘Python工程师标准>>> 常见命令用法总结 -----  目录:  --- 关于grep的总结   关于egrep的总结   关于tr的总结  关于so ...

  6. 20 个最常用的 Git 命令用法说明及示例

    作者 | Sahiti Kappagantula 译者 | 弯月,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 在这篇文章中,我将介绍在使用 Git 时最常使用的 20 个命令. 以下 ...

  7. git删除未监视的文件(untracked files)命令用法

    git删除未监视的文件(untracked files)命令用法 git在Linux下删除未监视的文件(untracked files),一般通过命令来执行更方便,具体执行如下: Shell # 删除 ...

  8. gitee仓库创建和git一些常见命令

     目录 一.gitee仓库创建 1.1 注册一个gitee账号 1.2 创建一个仓库 1.3 完善仓库 二.git的一些常见命令 2.1 git介绍 2.2 git 命令 一.gitee仓库创建 1. ...

  9. Redis和Git的常见命令

    Redis和Git的常见命令 key命令 String类型命令 list类型命令 set 类型命令 hash 类型命令 zset类型命令 Git 常 使 用 的 命 令 Git 分支常见命令 Gith ...

最新文章

  1. 用python分析了30万条微博评论,毕业生与翟天临的爱恨情仇
  2. 修改XtraMessageBox的内容字体大小
  3. 博客统计:腾讯分析这些数据哪儿来的?
  4. NYOJ 252 01串 dp
  5. java web服务_将Java服务公开为Web服务
  6. nacos配置ap_Nacos 1.0.0 功能预览
  7. visio画图中怎么添加①
  8. 理解SVG的viewport,viewBox【1】
  9. java 集成 v8_J2V8首页、文档和下载 - V8 的 Java 封装版本
  10. 黑客新技术在ATM钻洞就让其吐钱
  11. mysql 测试 缓存_mysql 缓存开启及测试
  12. wow.js中各种特效对应的类名
  13. Spring Boot入门(1)-第一个Spring Boot应用
  14. DELL XPS M1530安装MAC OS X Lion 10.7.3经验分享!
  15. Dorado 7 Ajax 交互处理
  16. python2.7 get-pip.py总是网络超时
  17. Do Transformers Really Perform Bad for Graph Representation 阅读笔记
  18. 百度云盘搜索引擎微信公证号_全L导演 H265 1080P 双语版@微信公众号edy521
  19. Linux初识 —— 基本指令的使用
  20. 编程练习:既是完全平方数又有两位数字相同的三位数

热门文章

  1. ▼▲Delphi面向对象编程的20条规则
  2. 浏览器生成消息-探索浏览器的内部(1)
  3. 【CyberSecurityLearning 6】IIS之WEB服务器和FTP服务器
  4. IDEA打开html文件时显示错误browser error提示找不到chrome或者别的浏览器
  5. 选择问题(求第k个最小元素)
  6. 问:一行Python代码到底能干多少事情?(三)
  7. DM368开发 -- 硬件认识
  8. 日常生活小技巧 -- vmware workstation 无法连接到虚拟机
  9. 【译】Advanced Blockchain Concepts for Beginners
  10. 在Android Native层中创建Java虚拟机实例