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学习

第一章 Git基础

1. git最小配置

  • 配置user.name 和user.email.
  • global的作用: 每一次的变更,在哪个时间点是谁做出的变更,在做CR的时候,每一次的变更如果带上了 用户的email地址,那么评审的人员在平台上面指出哪里有问题以后,Git会自动把变更者的email取出来,并发送邮件。
git config --global user.name 'your_name'
git config --global user.email 'your_email'
  • 缺省等同于local
git config  --local : local只对某个仓库有效,优先于global设置的
git config  --global : global对于当前用户所有仓库有效
git config --system   : system对系统所有登录的用户有效

-显示config的配置 加–list

git config --list --local
git config --list  --global
git config --list --system

2. 建立Git仓库

2.1 把已有项目代码纳入git管理

cd 项目代码所在文件夹
git init

2.2 新建项目直接用git管理

cd 某个文件夹
git init your_project # 会在当前路径下创建和项目名称同名的文件夹3

3. 通过几次commit来认识工作区和暂存区git提交

git 相关命令:

xcopy:Dos命令行复制文件及文件夹
git add **:添加到暂存区
git commit -m'reason':
git status:
git log:

git add -u:将文件的修改、文件的删除,添加到暂存区。
git add .:将文件的修改,文件的新建,添加到暂存区。
git add -A:将文件的修改,文件的删除,文件的新建,添加到暂存区。
工作中一般是用到 git add . 或者 git add -A, 今天学习更进一步解了 git add -u 以及他们之间的区别

git add -A相对于git add -u命令的优点 : 可以提交所有被删除、被替换、被修改和新增的文件到数据暂存区,而git add -u 只能操作跟踪过的文件
git add -A 等同于git add -all

4. 给文件重命名的简便方法

普通方式:这种方式就是把readme删掉并且新增了一个md结尾的readme文件

1. mv readme readme.md
2. git add readme.md
3. git rm readme

利用git的方式:只需要一步

git mv readme readme.md

5. 通过git log 查看版本演变历史

git log --oneline:以列表的方式查看
git log -n4 --oneline:最近4次log
git branch -v:本地有多少分支

git checkout -b temp  dd856d901d76308f5729d767179c8e03ae0c0f76//创建分支

git log --all --graph//图形化的分支代码演进关系

$ git log --oneline --all -n4 --graph:以图像列表的形式查看所有分支最近四次提交

笔记:

?    git log --all 查看所有分支的历史
?    git log --all --graph 查看图形化的 log 地址
?    git log --oneline 查看单行的简洁历史。
?    git log --oneline -n4 查看最近的四条简洁历史。
?    git log --oneline --all -n4 --graph 查看所有分支最近 4 条单行的图形化历史。
?    git help --web log 跳转到git log 的帮助文档网页

6. 以图象的形式查看git

gitk:开启图形界面查看版本管理界面
gitk 后面可以跟上文件的路径, 这样能看单个文件的修改历史的具体内容。

7. 填充.git目录

在这里插入图片描述

1. cat命令主要用来查看文件内容,创建文件,文件合并,追加文件内容等功能。
cat HEAD 查看HEAD文件的内容 (显示 refs/heads/mater)
git cat-file 命令 显示版本库对象的内容、类型及大小信息。
git cat-file -t b44dd71d62a5a8ed3 显示版本库对象的类型
git cat-file -s b44dd71d62a5a8ed3 显示版本库对象的大小
git cat-file -p b44dd71d62a5a8ed3 显示版本库对象的内容

HEAD:指向当前的工作路径的引用
config:存放本地仓库(local)相关的配置信息
refs/heads:存放分支,各自分支不相互影响,里面存放的是指针
refs/tags:存放tag,又叫里程牌 (当这次commit是具有里程碑意义的 比如项目1.0的时候 就可以打tag)
objects:存放对象 .git/objects/ 文件夹中的子文件夹都是以哈希值的前两位字符命名 每个object由40位字符组成,前两位字符用来当文件夹,后38位做文件。打包的文件放在pack里; 

1. HEAD:指向当前的工作路径
2. objects: objects里的每个文件夹目录名加上文件夹里的内容的hash值就是一个文件
git cat-file -t 33+hash值 ; 可能会得到tree/commit/blob

8. commit、tree和blob三个对象之间的关系

  • 设计良好的存储机制是git的版本控制系统是非常关键

在这里插入图片描述

  • commit: 每次执行git commit都会创建一个对象出来,一个commit会对应一棵树,不可能对应两棵树。
  • tree:这个树就是这个commit提交的所有的视图,存放着一次快照。快照的集合里就是放了当前commit对应的本项仓库的所有的文件夹以及文件的一个快照。这个时间点,这个文件夹长什么样,文件长什么样,就是通过这个树来呈现的。
  • blob: 具体的某个文件。只要内容相同就认为是一个文件、可以大大的节省空间

9. 小练习: git下有几个tree

git init watch_tree // 创建git仓库
cd watch_tree
mkdir doc // 创建doc目录
cd doc
echo "hello world" > readme // 创建readme文件,内容为hello world
git status // 查看当前状态
find .git/objects -type f // 查看暂存区文件,此时应当是无
git add doc // 将doc加入到暂存区
find .git/objects -type f // 此时已经有./git/objects/3b/18e12xxxx这个hash存在
git cat-file -t 3b18e // tree, 查看对象类型
git cat-file -p 3b18e /// 查看文件内容
git commit -m "Add readme" // 执行这一步操作,此时objects里会创建一个commit对象,两个tree, 一个blob

在这里插入图片描述

10. 分离头指针情况下的注意事项

  • 就是处于游离于分支外的情况下,没有对应的分支的情况下,做了commit操作。如果没有生成对应的分支,很有可能被git当成垃圾分支
    在这里插入图片描述

在这里插入图片描述

11. 进一步理解HEAD和Branch

  • git checkout -b new_branch old_branch:基于某个分支创建新分支并切换到新分支
  • HEAD: 指代当前分支的最后一次提交,如果处于分离头指针的话,就指到对应的commit上;分支也会最终落脚于某个commit
  • HEAD其实最终的指向都是指向一个具体的commit;
    • 1 一个节点,可以包含多个子节点(checkout 出多个分支)
    • 2 一个节点可以有多个父节点(多个分支合并)
    • 3 ^~都是父节点,区别是跟随数字时候,^2 是第二个父节点,而~2是父节点的父节点
    • 4 ^和~可以组合使用,例如 HEAD~2^2

第二章 独自使用Git时的常见场景

  • 删除分支: git branch -D 分支名
  • 怎么修改最新commit的message:
    • git commit --amend(修改最近一次提交的变更)
    • 修改前几次commit的修改
1、git log --oneline -5
    查看最近5次commit的简要信息,输出信息为:简短commitID commit_message,可以根据需要查看最近n次的提交
    也可以git log -5,输出信息相对详细些,commitID为完整的,这里只需要加上参数--oneline查看简短commitID即可
2、git rebase -i <简短commitID>: 变基: 要选择被变commit的父亲commit
    如果需要修改从上往下第2个commit_message,这里的简短commitID为上面输出信息的第3个,以此类推
    在弹出的窗口中,以VIM编辑方式显示了最近两次的提交信息
3、(按照VIM操作)按i键,进入编辑模式,将想要修改的提交前的pick改为reword,如果需要修改多个,也可以将对应的多个pick改为reword
4、(按照VIM操作)按ESC键        再按 shift + :        然后输入wq(w是保存,q是退出)        按回车键
5、在弹出的窗口中,按i进入编辑模式,就可以修改commit_message了
6、(按照VIM操作)按ESC键        再按 shift + :        然后输入wq(w是保存,q是退出)        按回车键(同第4步)
    如果第3步中修改了多个pick为reword,则会多次弹出修改界面,重复第5~6步即可
7、再使用第1步的命令查看一下修改结果,git log --oneline -5或者git log -5,查看修改是否已经完成
8、最后强制push上去git push --force
  • 合并连续commit: git rebase -i 合并id的父级id,然后利用squash
  • 合并间隔commit: 还是在变基里用

2. 暂存区和head如何比较

  • git diff --cached : 和暂存区做对比
  • 工作区和暂存区的差异:git diff

3. 如何让暂存区恢复成和HEAD一样

  • git reset HEAD

4. 如何让工作区的文件恢复成和暂存区一样

  • 变更工作区的内容用checkout,变更暂存区的内容用reset
  • git checkout -- index.html

5. 取消暂存区的部分文件的修改

  • git reset HEAD --styles/style.css xx xx

6. 消除最近的几次提交

  • git reset --hard commit_id

7. 看看不同指定文件的差异

  • git diff temp master --index.html 两个分支之间的比对
  • git diff commit_id1 commit_id12 -- index.html

8. 正确删除文件的方法

  • git rm readme 删除不需要的文件

9. 开发中临时加加塞了紧急任务怎么处理

  • 临时修复bug
  • 先用git stash 存放起来
  • git stash list 会出现对应id
  • git stash apply 就恢复了,不会丢掉stash里的信息
  • git stash pop 会丢掉stash里的信息

10. 如何指定不需要GIT里的文件

  • 加了斜杠,是说该文件夹下的文件不管,但是当前的文件夹要管

11. 如何将git仓库备份到本地

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • git clone --bare : bare不在工作区的仓库
  • 智能协议还做了相应的压缩

12. github和本地git

  • git remote add xxx
  • git pull 从远程拉代码到本地
  • git branch -va : 把远端代码的分支也显示出来
  • git checkout -b feature/add_git_command origin/feature/add_git_commands
  • 协同开发的时候不能用git push -f
  • 公共分支严禁变基
  开发工具 最新文章
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-02-06 14:01:09  更:2022-02-06 14:02:00 
 
开发: 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/15 10:41:10-

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