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 config --global user.name "wgd"
git config --global user.email "wgd961229@gmail.com"

账号创建成功 - 建立一个项目 myproject 命令行输入命令git init 初始化一个空的项目

此时项目文件夹下多个.git文件 莫动
3.新建一个 readme.md 文件 内容随便写 [对应流程第一步]
并且提交到git
git add Readme.md【第二步加入到暂存区域】
git cmmit -m "add a readme file"【第三步将暂存区域提交到git仓库】

100代表普通文件 644是文件的权限
二.查看状态
1.git status

新建LICENSE文件存储MIT 协议【先不用管是什么东东】
再次执行 git status

出现红色license untracked files : 新添加的文件但并没有提交到暂存区域【逍遥法外的文件】,按照提示加入暂存区:

这时查看状态 出现提示 意思是用2.git reset HEAD 恢复到暂存区之前状态

按照命令操作后 发现 LICENSE 已经恢复之前状态。
加入至git 仓库查看状态,再次clean

三. 修改 LICENSE 文件
修改之后查看状态:
修改后的文件和暂存区的文件不匹配。git 给出两条建议
1.使用add 覆盖暂存区再提交
2.使用3.checkout将暂存区覆盖掉工作区 【危险命令】
按照第一步 add 入暂存区之后 ,如果此时修改 工作区license 文件后,查看状态:

问题出现了! 同时存在两个不同版本的文件 【工作目录和暂存区】可以提交提交两种不同的。
提交最新版 就是把跟新的LICENSE 先 add 进 暂存后commit 仓库
查看历史提交记录 4.git log

四. 回滚 RESET 命令
- 不同时期版本来回穿梭

这里我多了一条记录不过没关系

最新版本的 在三棵树 内容都是一样的
git reset HEAD~

倒数第二个版本回滚到暂存区中执行后状态: 暂存区和git 仓库都为单数第二个版本了[~number number代表倒数第几个快照或者版本]

这个时候git log 发现 看不到最新版本了 【只能看到 HEAD 之前版本】

2. reset 命令选项
git reset --mixed HEAD~ [默认]
git reset --soft HEAD~
git reset --hard HEAD~

分别是影响 2 1 3 棵树
hard 比较危险 因为会工作区 也会更改:
此时 工作区回到最初版本了 LICENSE 已经被删掉

git log 只剩下一个版本
回滚总结:
回滚指定快照 :git reset + 快照ID [还可以向前滚 !!!]
回滚个别文件: git reset 快照+ 文件名/路径
tips: 5.git reflog 找回历史id
五 版本对比 dif
比较暂存和工作目录文件的不同:命令 git diff

比较两个历史快照 git diff 快照1 id 快照2 id
比较工作目录和git 仓库 git diff HEAD
比较暂存和git 仓库 git diff -- cached

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

恢复 利用 git checkout -- Readme.md
删除上传的yellow.jpg git rm yellow.jpg

但是 git status 还是会留下痕迹
这时候 git reset --soft HEAD~
当工作区和暂存区文件不同时:用 git rm -f 文件名
删除暂存区保留工作区文件:用 git rm --cached 文件名
总结:

3.重命名文件
手动修改工作区 game.py 为 what game.py 然后:

在 git 中修改文件名:git mv game.py wegame.py
七. git 创建和切换分支
分支重要性:

1.创建分支:git branch 分支名
git branch feature

2.切换分支 git checkout 分支名
git checkout feature

分支发生改变 HEAD 指向 feature
git log --decorate --oneline

在不同分支更改互不影响
在feature 分支中提交之前更改的wordgame.py文件名和Readme 此时现在的状态:

之后切换到 master 做相应修改 然后
图像化显示分支:
git log --decorate --oneline --graph --all


八 合并和删除分支

Master 用来发布
hotfix 用来修补 bug
Release 内部发布版 开发完之后编译成一个可执行程序就是Release
Develop 开发版
Feature 相关功能
1.分支合并 git merge feature feature 子分支

出现冲突手动修改

发现合并进来了

创建并切换分支 git checkout -b feature2:

合并进master 分支:


2.删除分支
git branch -d feature2

虽然删除了分支 分支是通过指针实现的 所谓分支是通过指针一个名字记住。
九. 匿名分支 和checkout 命令
新建一个project 随便创建三个txt 文件分别提交至git 仓库

git checkout HEAD~
切换分支没有指定分支名就创建一个 匿名分支 用来做实验 尝试
现在是回到导数第二个快照 创建一个4.txt 并提交

匿名分支创建成功 但是切换为master 分支:

这时候匿名分支就消失了 但是记住分支名还是可以切换回去的。
2.checkout 命令
两种功能:
1.从历史快照中(或者暂存区中)拷贝文件到工作区、
2.切换分支


reset和checkout 区别:


举例:
场景:



区别和明显

十. github

被折叠的 条评论
为什么被折叠?



