目录
学习链接 尚硅谷 (链接: link)
引入
版本控制

git主要是用于团队协作
小红和小蓝各自修改代码不同的区域,合并到master分支之后就是把修改的地方合并进去
集中式和分布式版本控制
集中式问题:代码服务器的单点服务器问题
分布式:本地也可以做版本控制,每个客户端保留完整项目;远程一般是服务商也不容易挂掉


git工作机制
提交本地库之后就会有历史版本,eg v4版本是在v3版本之上的,所以历史版本是不能删掉的
- 提交历史版本之后就可以push到远程库;

代码托管中心
代码托管中心一般就是我们认为的远程库
Git常用命令
🩷🩷🩷git中table也是可以自动补全的

设置用户签名
前面两个设置好用户签名,用于提交代码,==签名的作用就是为了区分不同操作者身份
设置好用户签名之后,在本地的user账号里面的.gitconfig可以看到信息,
- 这个和将来登录github或者其他远程库的账号没有任何关系
初始化本地库
git init:初始化本地库之后才可以管理当前的文档
ll命令:展示所有内容
查看库状态

vim中【先按esc】yy是复制,p是粘贴 :wq是保存
bash中linux命令通用
里面有文件没有git add进入暂存区就会红色提示
add和提交
中间那个965c6al]是提交的版本号
使用git reflog可以查看提交版本
git log可以看到详细提交信息,包括用户签名
- 修改之后就可以使用git status查看状态,会发现有改变,然后再add【会变绿】,再git commit,然后使用git log或者git relog就很方便
版本穿梭
版本穿梭会影响工作区,谨慎使用
如果需要恢复到之前的版本就是用版本穿梭,
具体操作:git reflog查看需要穿梭的版本好,然后使用git reset --hard 版本号,然后指针就会指向恢复的版本

前面提到的指针就是HEAD文件中记录的,里面会告诉我当前是指向哪个分支【例如master】;要寻找具体是哪个版本号在ref里面找HEAD里面的分支的名字,里面记录的就是版本号;

git分支操作
分支定义
定义:可以简单理解分支为一个单独的copy;开发完之后再合并进去

示意图:master也是一个分支,或者称为主线分支。

分支好处

分支操作

注意对话框,最右边显示的就是当前的分支

查看分支
git branch -v用于查看当前有几个分支,例如下面这个只有一个分支master

创建分支
git branch 分支名:就可以创建一个新的分支 例如起名为hot-fix
切换分支
git checkout 分支名:
然后在这个分支下面修改文件,然后add,然后commit
分支合并💕✨🩷
需要回到master分支上【git checkout master】,然后git merge hot-hit,就表示将hot-fix分支合并到master分支上;如果弄反了,没有回到master分支,而是还在hot-fix分支上,那就是自己合并自己
- 一定要切回被合并的主干分支上
- 下面这个图就表示合并成功,master合并的时候就被改了

合并冲突

例如:如果master分支和hot-fix分支都修改了同一个地方,就不会自动合并;
- 下面黄框表示合并没有成功,还在合并

这时进入提醒conflict的文件里面用cat,会自动显示冲突的地方;人为修改之后再add[ git add hello.txt],再commit,注意,这个时候commit的时候不用加文件名,会自动合并刚刚修改之后的

这个就是加了文档名和不加文档名的区别。加了文档名会报错,不知道合并哪一个,不加文档名不报错,直接合并刚刚人工手动修改的那个 - 注意!这里修改的还是master分支上面的,刚刚就是站在master分支角度合并出错去修改的,那么hot-fix分支并不会改变

git团队协作
团队内协作
已有本地库,如果再使用pull拉下来的话,本地库会更新显示别人的修改

跨团队协作
远程库2首先fork【也就是复制,github上的fork就是这个意思】,开发好之后 pull ,远程库1审核后可以merge

Github远程库

创建远程库和别名
创造别名:因为远程的链接有点长,起个名字
git remote -v 查看跟当前本地库链接的远程库有哪些
git remote add 别名 远程地址
push推送
git push 刚刚起的别名 分支 可能因为网络原因失败
最好远程和本地的名字是一样的
拉取远程库到本地库
本地库和远程库不是同步的了,就需要拉取到本地然后更新修改
git pull 别名 远程端的分支名字
克隆远程库
git clone github代码链接
看到27,后面暂时用不到

917

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



