IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> git基本命令记录 -> 正文阅读

[开发工具]git基本命令记录

1、git init

创建初始化仓库

git init [-q | --quiet] [--bare] [--template=<template_directory>]
	  [--separate-git-dir <git dir>] [--object-format=<format>]
	  [-b <branch-name> | --initial-branch=<branch-name>]
	  [--shared[=<permissions>]] [directory]

详细参数如下:

-q 			
仅打印错误和警告消息;所有其他输出将不会显示。

--bare		
创建一个裸仓库。它主要是只保存历史提交的版本信息,不保存文件。作用就是作为分享库。

--object-format=<format>	
指定存储库的对象格式(哈希算法)。有效值为 sha1 和(如果启用)sha256。sha1 是默认值。

--template = <模板目录>		
指定要使用模板的目录。

--separate-git-dir=<git目录>

-b <branch-name>
--initial-branch=<branch-name>
初始化仓库名称,若没有指定,则使用默认的master。

--shared[=(false|true|umask|group|all|world|everybody|0xxx)]
指定要共享的git存储库  

2、git clone

将库克隆到目录

git clone [] [–] [

]

例子: git clone -b dev0330 httpxxxxxxxx /e/aaa/bbb

-o <名称>
--origin <名称>
不使用远程名称 origin 来跟踪上游存储库,而使用 <名称>。

-b <名称>
--branch <名称>
克隆指定分支

3、git add

添加内容到索引

-f
--force
允许添加已被忽略的文件。

-i 交互式暂存
*** Commands ***
  1: status       2: update       3: revert       4: add untracked
  5: patch        6: diff         7: quit         8: help
1、状态
2、将已经在暂存区的文件但修改的文件再次放入到暂存区
3、从暂存区删除
4、将未放入暂存区的文件加入到暂存区
5、按照脚本提示进行文件操作
6、文件差异

4、git status

显示工作树状态

-s
--short
以简短的形式给出输出。

-b
--branch
即使在短文中也要显示分支和跟踪信息。

5、git restore

取消暂存区的文件

git restore --staged <file> 把文件从暂存区撤回到工作区,保留文件最后一次修改的内容;
git restore 会撤销文件的修改,使文件恢复到暂存区或本地代码库(取决于文件在修改前的状态);

6、git diff

比较差异,可比较分支差异,commit差异等

默认比较的是 本地与暂存区的差异,也就是本地与git add 的文件的差异

git diff [<options>] [<commit>] [--] [<path>...]
比较某次提交和HEAD差异
 
git diff [<options>] --cached [<commit>] [--] [<path>...]
比较暂存区与仓库区差异


  xxx xxx  直接比较两个分支(commit等)的差异
  xxx..xxx 同上
  xxx...xxx 比较的是从共同祖先分歧后的变化

7、git log

7.1、参数说明

  git log A B  展示AB所有的提交
  git log A..B 显示在B,但是不在A上的 等同于git log ^refA refB或git log refB --not refA
  git log A...B 显示不共享的提交,也就是从共同祖先分歧后得提交
  git log refA refB ^refC  在azaib但是不在c等同于 git log refA refB --not refC
  git log --left-right master...experiment 显示每个提交到底处于哪一侧的分支
-p	按补丁格式显示每个更新之间的差异
--pretty 内容格式化
--date 日期格式化
--stat	显示每次更新的文件修改统计信息
--shortstat	只显示 --stat 中最后的行数修改添加移除统计
--name-only	仅显示已修改的文件清单
--name-status	显示新增、修改、删除的文件清单
--abbrev-commit	仅显示 SHA-1 的前9个字符,而非所有的 40 个字符
--relative-date	使用较短的相对时间显示(比如,“2 days ago”)
--graph	显示 ASCII 图形表示的分支合并历史
--since/after 仅显示指定时间之后的提交
--until/before 仅显示指定时间之前的提交
	>git log --since=2.weeks
	>git log --after="2020-01-01"
	>git log --since ==2019-12-01 --until=2020-01-01
--author 仅显示作者匹配指定字符串的提交。
--committer 仅显示提交者匹配指定字符串的提交。
--grep 仅显示提交说明中包含指定字符串的提交。
--grep-reflog 正则筛选
	>git log --grep="xxx" -i  
	-i 忽略大小写
	-E 扩展正则表达式
	-F 将限制模式视为固定的字符串
	-P 将限制模式视为与Perl兼容的正则表达式


-20 最近二十次提交记录,无则表示导出所有记录到log.txt

7.2、pretty参数说明

git log --pretty=oneline 一行格式(SHA-1+提交信息)
git log --pretty=short 短格式(SHA-1+作者+日期+提交信息)
git log --pretty=full 长格式(SHA-1+作者+提交者+提交日期+提交信息)
git log --pretty=fuller 长格式(SHA-1+作者+作者提交日期+提交者+提交者提交日期+提交信息)

7.3、git log --pretty=format常用选项

%H	提交的完整哈希值

%h	提交的简写哈希值

%T	树的完整哈希值

%t	树的简写哈希值

%P	父提交的完整哈希值

%p	父提交的简写哈希值

%an	作者名字

%ae	作者的电子邮件地址

%ad	作者修订日期(可以用 --date=选项 来定制格式)

%ar	作者修订日期,按多久以前的方式显示

%cn	提交者的名字

%ce	提交者的电子邮件地址

%cd	提交日期

%cr	提交日期(距今多长时间)

%s	提交说明

8、git commit

 --amend  本次提交覆盖上此提交

9、git branch

	-vv 查看本地对应的远程分支信息
	-a, --all 显示本地以及远程仓库所有分支
    -d, --delete 删除完全合并的分支
    -D 删除分支(即使没有合并)
    -m, --move 移动/重命名分支及其引用日志
    -M 移动/重命名分支,即使目标存在
    -c, --copy 复制一个分支和它的 reflog
    -C 复制一个分支,即使目标存在
    -l, --list 列出分支名称
    --show-current 显示当前分支名称
    --create-reflog 创建分支的 reflog
    --edit-description 编辑分支的描述
    -f, --force 强制创建、移动/重命名、删除
    --merged <commit> 只打印合并的分支
    --no-merged <commit> 只打印未合并的分支
    --column[=<style>] 在列中列出分支
    --sort <key> 要排序的字段名
    --points-at <object> 只打印对象的分支
    -i, --ignore-case 排序和过滤不区分大小写
    --format <format> 用于输出的格式

10、git push

-d, --delete 删除引用  例子 git push -d origin/dev 删除远程仓库的dev分支
-f, --force 强制更新
-u, --set-upstream 设置上游
--all 推送所有引用

11、git pull

-r, --rebase 通过变基而不是合并来合并更改
-n 在合并结束时不显示 diffstat
--stat 在合并结束时显示 diffstat
--commit 如果合并成功则执行提交(默认)

12、git stash

贮藏与清理

git stash list  展示贮藏列表
git stash apply	恢复工作区的文件
git stash apply --index 除了恢复工作区的文件外,还尝试恢复暂存区。
git stash clear 清除贮藏列表
git stash pop	与apply类似,但是会删除贮藏区的该条
git stash drop	删除贮藏区某条
git stash show xxx 展示贮藏区内容
-u/--include-untracked  贮藏未跟踪的文件
--patch 进入脚本模式,按照提示操作

13、git rebase

变基,线性合并分支

 --onto 例子:git rebase --onto master server client 取出 client 分支,找出它从 server 分支分歧之后的补丁, 然后把这些补丁在 master 分支上重放一遍,让 client 看起来像直接基于 master 修改一样

11.1、git rebase -i 【commit】 交互式修改提交内容

说明:假如说你要修改前三次提交,你需要将commit指向前三次提交的父提交,也就是第四次提交。也可以使用HEAD~3

输入命令后会进入交互式命令界面:

# Commands:
# p, pick <commit> = 使用提交
# r, reword <commit> =使用提交,但是修改提交的注释信息
# e, edit <commit> =使用提交,但是会停下来修改,类似于r,区别在什么地方修改
# s, squash <commit> = 使用提交,但是融合到之前的提交中
# f, fixup <commit> = 类似于squash,但是会丢弃提交的日志信息
# b, break = 到这儿会停止,继续使用git rebase --continue
# d, drop <commit> = remove commit  删除提交
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]   合并提交
# .       create a merge commit using the original merge commit's
# .       message (or the oneline, if no original merge commit was
# .       specified). Use -c <commit> to reword the commit message.
#
#提交日志顺序是正序,第一个是最先提交的记录,与git log 恰好相反
#如果你在这里删除一行,COMMIT 将会丢失。
#全部删除,则rebase将中止。

合并提交用法:合并310154e和a5f4a0d到f7f3f6d中,注意!!可能会出现冲突。

pick f7f3f6d changed my name a bit
squash 310154e updated README formatting and added blame
squash a5f4a0d added cat-file

修改提交信息用法:修改310154e和a5f4a0d提交信息

pick f7f3f6d changed my name a bit
r 310154e updated README formatting and added blame
r a5f4a0d added cat-file

14、git reset

重置,若带文件路径如:git reset xxx.txt 则不会移动HEAD,只会覆盖对应的文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2vdqJjw3-1650163037071)(C:\Users\ZhaLeMaoDeMao\AppData\Roaming\Typora\typora-user-images\image-20220415165759431.png)]

    -q, --quiet           be quiet, only report errors
    --mixed               reset HEAD and index 重置HEAD和暂存区
    --soft                reset only HEAD 仅仅重置HEAD
    --hard                reset HEAD, index and working tree 强制重置HEAD和暂存区和工作区
    --merge               reset HEAD, index and working tree 重置HEAD和暂存区和工作区
    --keep                reset HEAD but keep local changes 重置HEAD,但是保持本地的改变
    --recurse-submodules[=<reset>]
                          control recursive updating of submodules
    -p, --patch           select hunks interactively交互式的执行
    -N, --intent-to-add   record only the fact that removed paths will be added later
    --pathspec-from-file <file>
                          read pathspec from file
    --pathspec-file-nul   with --pathspec-from-file, pathspec elements are separated with NUL character

15、git revert

撤销某次提交,产生一次新的提交,当然也可以回退到某个版本产生新的提交。

-n, --no-commit 不自动提交
-e, --edit 编辑提交信息
-m, --mainline <父编号>  选择主线父级     解释:父编号也就是1 2 1代表原始父亲,2是分支父亲如下图所示:
    D
    |\
    | \
    C  |(dev)
    |  B
    |  |
    |  |
    | /
    A(master)
    git revert -m 1 C 也就是去除了dev的B提交,反之git revert -m 2 B 去除了C的提交	
用法一:git revert A 直接撤销该次commit的提交,可能会有冲突,注意只撤销该次的提交不影响前后。
用法二:git revert A..C 撤销 A到C的提交(左开右闭),其实就是撤销B和C的提交,
	   可用于回退版本如git revert A.. 等同于A..HEAD,回退到版本A,并保留了B C的提交区别于reset
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 18:03:22  更:2022-04-18 18:05:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:39:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码