GIT学习

Git

参考网站:
廖雪峰git
runoob git
小甲鱼 git
B站
B站2
资料链接:https://pan.baidu.com/s/198DTTtI2hQlKj7rB6zeQNw
提取码:jme6

下面是几个的tips:

1.集中式和分布式区别
 CVS SVN 集中式版本控制系统
 Git 分布式版本控制 最初是为了管理开源 Linux 提交的代码而产生。linus 两周用C写完了git原型
  集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。集中式版本控制系统最大的毛病就是必须联网才能工作。
   分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
   分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
   Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理。

git 笔记 小甲鱼: 上面小甲鱼链接里面有详细介绍
朴素手动的版本管理方式不行!
git 将每个版本独立存储
工作区域 暂存区域 git 仓库
GIT学习_第1张图片
GIT学习_第2张图片
GIT学习_第3张图片
一. 基础

  1. 命令:git config --global user.name "wgd"
        git config --global user.email "[email protected]"
    GIT学习_第4张图片
    账号创建成功
  2. 建立一个项目 myproject 命令行输入命令git init 初始化一个空的项目
    在这里插入图片描述
    此时项目文件夹下多个.git文件 莫动

3.新建一个 readme.md 文件 内容随便写 [对应流程第一步]
并且提交到git
git add Readme.md第二步加入到暂存区域
git cmmit -m "add a readme file"【第三步将暂存区域提交到git仓库】
GIT学习_第5张图片
100代表普通文件 644是文件的权限

二.查看状态

1.git status

在这里插入图片描述
新建LICENSE文件存储MIT 协议【先不用管是什么东东】
再次执行 git status
GIT学习_第6张图片
出现红色license untracked files : 新添加的文件但并没有提交到暂存区域【逍遥法外的文件】,按照提示加入暂存区:
GIT学习_第7张图片
这时查看状态 出现提示 意思是用2.git reset HEAD 恢复到暂存区之前状态
GIT学习_第8张图片
按照命令操作后 发现 LICENSE 已经恢复之前状态。

加入至git 仓库查看状态,再次clean
GIT学习_第9张图片

三. 修改 LICENSE 文件
 修改之后查看状态:GIT学习_第10张图片
 修改后的文件和暂存区的文件不匹配。git 给出两条建议
 1.使用add 覆盖暂存区再提交
 2.使用3.checkout将暂存区覆盖掉工作区 【危险命令】
 
 按照第一步 add 入暂存区之后 ,如果此时修改 工作区license 文件后,查看状态:
GIT学习_第11张图片
 问题出现了! 同时存在两个不同版本的文件 【工作目录和暂存区】可以提交提交两种不同的。
 提交最新版 就是把跟新的LICENSE 先 add 进 暂存后commit 仓库在这里插入图片描述
查看历史提交记录 4.git log
GIT学习_第12张图片
四. 回滚 RESET 命令

  1. 不同时期版本来回穿梭
    GIT学习_第13张图片
    这里我多了一条记录不过没关系
    GIT学习_第14张图片
    最新版本的 在三棵树 内容都是一样的
git reset HEAD~

在这里插入图片描述
倒数第二个版本回滚到暂存区中执行后状态: 暂存区和git 仓库都为单数第二个版本了[~number number代表倒数第几个快照或者版本]
GIT学习_第15张图片
这个时候git log 发现 看不到最新版本了 【只能看到 HEAD 之前版本】
GIT学习_第16张图片
2. reset 命令选项

git reset  --mixed HEAD~  [默认]
git reset  --soft  HEAD~
git reset  --hard  HEAD~


分别是影响 2 1 3 棵树

hard 比较危险 因为会工作区 也会更改:在这里插入图片描述
此时 工作区回到最初版本了 LICENSE 已经被删掉
GIT学习_第17张图片
git log 只剩下一个版本

回滚总结:GIT学习_第18张图片

回滚指定快照 :git reset + 快照ID [还可以向前滚 !!!]
回滚个别文件: git reset 快照+ 文件名/路径

tips: 5.git reflog 找回历史id

五 版本对比 dif
比较暂存和工作目录文件的不同:命令 git diff
GIT学习_第19张图片
比较两个历史快照 git diff 快照1 id 快照2 id
比较工作目录和git 仓库 git diff HEAD
比较暂存和git 仓库 git diff -- cached

GIT学习_第20张图片

六 .分支修改最后一次提交 删除和重命名文件
 1.修改最后一次提交
场景一: 版本一刚提交(commit) 到仓库,漏掉两个文件没有添加(add)
场景二: 修改readme文件,并加入至暂存区,想提交至仓库,但是 不想生成一个新的快照版本。
针对场景二:利用 git commit --amend 命令
 2. 删除文件:
如果在公国目录删除了readme 文件 这时候 git status
GIT学习_第21张图片
恢复 利用 git checkout -- Readme.md

删除上传的yellow.jpg git rm yellow.jpg
GIT学习_第22张图片
但是 git status 还是会留下痕迹
这时候 git reset --soft HEAD~
当工作区和暂存区文件不同时:用 git rm -f 文件名
删除暂存区保留工作区文件:用 git rm --cached 文件名
总结:

3.重命名文件
手动修改工作区 game.py 为 what game.py 然后:
GIT学习_第23张图片

在 git 中修改文件名:git mv game.py wegame.py

七. git 创建和切换分支

分支重要性:
GIT学习_第24张图片
1.创建分支:git branch 分支名
git branch feature
GIT学习_第25张图片
2.切换分支 git checkout 分支名

git checkout feature

GIT学习_第26张图片
分支发生改变 HEAD 指向 feature

git log --decorate --oneline

在这里插入图片描述
在不同分支更改互不影响

在feature 分支中提交之前更改的wordgame.py文件名和Readme 此时现在的状态:
GIT学习_第27张图片
之后切换到 master 做相应修改 然后
图像化显示分支:

git log --decorate --oneline --graph --all

GIT学习_第28张图片
GIT学习_第29张图片
八 合并和删除分支


Master 用来发布
hotfix 用来修补 bug
Release 内部发布版 开发完之后编译成一个可执行程序就是Release
Develop 开发版
Feature 相关功能

1.分支合并 git merge feature feature 子分支
在这里插入图片描述
出现冲突手动修改
GIT学习_第30张图片
发现合并进来了
GIT学习_第31张图片
创建并切换分支 git checkout -b feature2
GIT学习_第32张图片
合并进master 分支:
GIT学习_第33张图片
GIT学习_第34张图片

2.删除分支

git branch -d feature2

GIT学习_第35张图片
虽然删除了分支 分支是通过指针实现的 所谓分支是通过指针一个名字记住。

九. 匿名分支 和checkout 命令
新建一个project 随便创建三个txt 文件分别提交至git 仓库
在这里插入图片描述
git checkout HEAD~GIT学习_第36张图片
切换分支没有指定分支名就创建一个 匿名分支 用来做实验 尝试
现在是回到导数第二个快照 创建一个4.txt 并提交
GIT学习_第37张图片
匿名分支创建成功 但是切换为master 分支:
GIT学习_第38张图片
这时候匿名分支就消失了 但是记住分支名还是可以切换回去的。

2.checkout 命令
两种功能:
  1.从历史快照中(或者暂存区中)拷贝文件到工作区、
  2.切换分支
 
GIT学习_第39张图片
GIT学习_第40张图片
reset和checkout 区别:
GIT学习_第41张图片
GIT学习_第42张图片
举例:
场景:GIT学习_第43张图片

在这里插入图片描述
GIT学习_第44张图片
GIT学习_第45张图片
区别和明显
在这里插入图片描述

十. github

你可能感兴趣的:(Git)