Git常用操作


  • shankes

博客访问链接:

CSDN :shankes的博客

简书 : shankes

码云:shankes.gitee.io

github:sankes.github.io

Git常用命令

文章目录

    • Git常用命令
      • 1.基本操作
        • 1.1 在工作目录中初始化新仓库
        • 1.2 从现有仓库克隆
        • 1.3 当前状态git status
        • 1.4 当前状态git diff
        • 1.5 提交
        • 1.6 取消已缓存的内容
        • 1.7 删除
        • 1.8 移动或重命名
      • 2 分支
        • 2.1 列出分支
        • 2.2 创建分支
        • 2.3 切换分支
        • 2.4 删除分支
        • 2.5 合并分支
        • 2.6 冲突
      • 3 查看提交历史
      • 4 标签
      • 5 远程仓库(Github)
        • 5.1 添加远程库
        • 5.2 查看当前的远程库
        • 5.3 提取远程仓库
        • 5.4 推送到远程仓库
        • 5.5 删除远程仓库
      • 6 子模块
        • 6.1 添加子模块
        • 6.2 拉取子模块
      • 感谢

1.基本操作

回到顶部

文档链接1
文档链接2

1.1 在工作目录中初始化新仓库

$ git init

当前目录生成一个 .git 目录

$ git add *.c
$ git add README
$ git commit -m '初始化项目版本'
$ git add .     # 命令来添加当前项目的所有文件

纳入版本控制,对这些文件进行跟踪,然后提交

1.2 从现有仓库克隆

$ git clone  

$ git clone [email protected]:fsliurujie/test.git      # --SSH协议
$ git clone git://github.com/fsliurujie/test.git    # --GIT协议
$ git clone https://github.com/fsliurujie/test.git  # --HTTPS协议

克隆到指定的目录

1.3 当前状态git status

$ git status -s

-s 参数,以获得简短的结果输出

1.4 当前状态git diff

$ git diff

显示已写入缓存与已修改但尚未写入缓存的改动的区别

  • 尚未缓存的改动:git diff
  • 查看已缓存的改动: git diff --cached
  • 查看已缓存的与未缓存的所有改动:git diff HEAD
  • 显示摘要而非整个 diff:git diff --stat

git status 显示你上次提交更新后的更改或者写入缓存的改动, 而 git diff 一行一行地显示这些改动具体是啥

1.5 提交

$ git commit -m '注释'

缓存区内容添加到仓库

$ git config --global user.name 'xxx'
$ git config --global user.email [email protected]

Git 为你的每一个提交都记录你的名字与电子邮箱地址,所以第一步需要配置用户名和邮箱地址

$ git commit -am '注释'

如果你觉得 git add 提交缓存的流程太过繁琐,用 -a 选项跳过

1.6 取消已缓存的内容

回到顶部

$ git reset HEAD hello.php 
$ git reset [--soft | --mixed [-N] | --hard] HEAD~X     # X:代表次数

git reset HEAD 以取消之前 git add 添加

Resets the index but not the working tree (i.e., the changed files are preserved but not marked for commit) and reports what has not been updated. This is the default action

Git常用操作_第1张图片

Git常用操作_第2张图片

  • 说明
  1. Git Root:
选择你要revert的目录
  1. Current Branch:
你当前在哪个branch
  1. Reset Type:
Soft:选择这个模式意思是仅仅撤销commit而已,不影响你本地的任何文件,也不影响(index)缓存区的任何文 件。

Hard:不仅撤销commit的内容,还将本地的文件指向你commit前的版本,同时index也会指向commit前的版本。

Mixed:这个模式从我个人角度来看其实还是有点模糊的。从我的角度理解就是只是回滚index,其余的都不变。
  1. To Commit:
HEAD后面加个“~1”,数字代表commit次数,
1:是回滚最后一次提交,2:就是后两次提交的都回滚。此时它的功能和soft模式一样
  1. Validate:
查看影响到的文件

1.7 删除

$ git rm --cached 
$ git rm 
$ git rm -f 
$ git rm –r  
$ git rm –r * 

删除文件

  • -f 强制删除选项
  • –cached 仅从跟踪清单中删除
  • –r 递归删除,后面可以是目录做为参数
  • –r * 删除所有

1.8 移动或重命名

$ git mv fileName newFileName

2 分支

回到顶部

2.1 列出分支

$ git branch

没有参数时,git branch 会列出你在本地的分支

2.2 创建分支

$ git branch (branchname)

2.3 切换分支

$ git checkout (branchname)
$ git checkout -b (branchname) 
  • -b:创建新分支并立即切换到该分支

2.4 删除分支

$ git branch -d (branchname)

2.5 合并分支

$ git merge (branchname)

合并到当前分支

2.6 冲突

手动去修改,用git add 要告诉 Git 文件冲突已经解决

3 查看提交历史

回到顶部

$ git log
$ git log --oneline                     # 选项来查看历史记录的简洁的版本
$ git log --graph                   # 选项,查看历史中什么时候出现了分支、合并
$ git log --reverse                     # 参数来逆向显示所有日志
$ git log --author=Linus --oneline -5   # 指定用户的提交日志
$ git log --decorate
  • –decorate:可以看到标签
  • –since 和 --before(–until 和 --after):指定日期
$ git log --oneline --before={2.weeks.ago} --after={2019-07-11} --no-merges

例如,如果我要看 Git 项目中三周前且在四月十八日之后的所有提交,我可以执行这个(我还用了 --no-merges 选项以隐藏合并提交)

4 标签

回到顶部

$ git tag -a v1.0 
  • -a 选项意为"创建一个带注解的标签"
$ git tag -a v0.9 2d596e3

追加标签

$ git tag

查看所有标签

$ git tag -s  -m "xxx标签"

PGP签名标签

5 远程仓库(Github)

回到顶部

5.1 添加远程库

git remote add [shortname] [url]

5.2 查看当前的远程库

$ git remote -v
  • -v 可以看到每个别名的实际链接地址

5.3 提取远程仓库

  1. 从远程仓库下载新分支与数据
$ git fetch origin

该命令执行完后需要执行git merge 远程分支到你所在的分支。
2. 从远端仓库提取数据并尝试合并到当前分支

$ git merge origin/master

5.4 推送到远程仓库

$ git push [alias] [branch]
$ git push origin master

5.5 删除远程仓库

git remote rm [alias]

6 子模块

回到顶部

6.1 添加子模块

$ git submodule update --init --recursive
$ git submodule update --recursive
$ git submodule add  
$ cat .gitmodules
[submodule "xxx"]
      path = xxx
      url = git://github.com/xxx/xxx.git
  • .gitmodules配置文件:保存了项目 URL 和你拉取到的本地子目录
  • 子模块的重要一点:你记录他们当前确切所处的提交。你不能记录一个子模块的master或者其他的符号引用

6.2 拉取子模块

$ git submodule init    # 初始化你的本地配置文件
$ git submodule update  # 拉取子模块
$ git submodule update  # 更新状态

感谢

回到顶部

如果您觉得对您有所启发或帮助(并且个人有余力,感谢打赏)

微信


支付宝(左侧领红包,右侧打赏)

你可能感兴趣的:(Git)