git-day02

113 阅读6分钟

www.bilibili.com/video/BV1cR…

1、SVN是集中式版本控制系统,版本库是集中放在中央服务器的。而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作。完成工作后,需要把自己的代码推送到中央服务器。集中式版本控制是必须联网才能工作。

2、Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库。工作的时候不需要联网了,因为版本都在自己的电脑上,可以离线工作。

3、

设置用户签名 user.email  user.name
查看配置的用户信息 .gitconfig 文件里面
使用git init 创建的仓库(项目初始化):.git 文件里面记录着每次的版本信息。

4、Git工作区、暂存区、版本库和托管平台

工作区:项目目录下隐藏了一个 .git 目录,这个目录不属于工作区,而是版本库
暂存区:暂时保存
具体流程:代码提交到暂存区,暂存区提交到 master 分支(版本库)
托管平台:局域网(内网):gitlab。公网(外网):gitlab\github\gitee

5、添加暂存区

查看状态: git status
添加到暂存区: git add 文件名称
从暂存区里面删除文件:git rm --cached 文件名称
全部添加到暂存区:git add .

6、提交到本地库

把暂存区的内容放到历史区(版本库):git commit -m ""
查看版本信息(查看提交信息): git log

7、版本穿梭

// git log
// commit 01fccc25f199ec8d45b2c3ea235bffe61c124ad1 (HEAD -> master)
HEAD:指向最近一次操作的分支以及最近一次提交记录
git 是基于 c 语言设计的
版本回退无非是把 HEAD 指向上一次提交的记录
版本回退的话,版本并没有消失,只是将指针移动了位置

image.png

我们使用 git reset --hard 版本编号 进行历史回退

git log :只能查看最顶端的指针以及往下的记录
git reflog :可以查看本地库所有的提交记录(前六位)

回退到上一次提交的版本(此时工作区的代码也会发生相应的变化)
git reset --hard HEAD^

回退到上上次提交的版本
git reset --hard HEAD^^
git reset --hard HEAD~2

回到一个具体版本的提交记录(后面也可以加一个六位的提交信息)
git reset --hard 166cc92
hard\soft
hard:从历史区回到工作区
soft:从历史区回到暂存区
git reset --soft HEAD^:版本回退,工作区的代码没有变化,回退到暂存区了
soft比如说:提交的时候注释写错了,重新commit -m注释
soft:重写提交记录
soft:也可以设置为一条 commit -m 记录
git revert HEAD:撤销这个版本,回到上一个版本。始终跟 reset 差一个。都是工作区发生变化
git revert 和 git reset
git reset:是回滚到对应的 commit-id,相当于是删除了 commit-id 以后的所有的提交,并且不会产生新的commit-id 
记录,如果要推送到远程服务器的话,需要强制推送 -f

git revert:是反做撤销其中的 commit-id,然后重新生成一个 commit-id。本身不会对其他的提交 commit-id产生影响,
如果要推送到远程服务器的话,就是普通的操作 git push 就可以了

image.png

8、认识 Git 分支

image.png

每个分支都有一个独立的工作区
新建分支来开发其他功能,再合并到 master 分支上面
1、开辟一个分支使用 git branch 分支名称 指令
例如开辟一个 login 分支:git branch login
2、查看一下当前分支情况:git branch
3、切换分支(工作区也会发生变化):git checkout 分支名称
4、把别的分支的代码合并到 master 分支中,原理是把 HEAD 往前走到最新代码。首先要切换到 master 分支中,使用
命令 git merge 分支名称 就可以了。
5、删除分支:git branch -d 分支名称

9、分支合并冲突

切换分支之前,先add后commit提交一下
解决完冲突之后  add commit

image.png

image.png

10、团队协作与冲突

托管平台:github gitee
push到远程库中、pull拉取到本地
1、github 创建仓库
2、把本地库与远程库建立起连接,然后把本地库的代码再推送上去
3、git remote add origin https://github.com/XXXX/XXXX.git
解释:git 远程添加一个 origin 地址(这个可以是自己设置的地址别名,比如abc),地址为github.....
5、使用 git remote -v 来查看信息
6、git remote remove origin 来删除连接
4、git push -u origin master(git push origin master:master)
解释:使用 git 推送到 仓库中,把本地的master分支(主分支)推送到 远程仓库的master(主分支)

image.png

git branch -a  所有的分支(也包括远程的分支)
在远程仓库直接修改文件,保持同步,拉取代码:git pull origin master
注释:从 origin 这个地址上面的 master 分支上面拉取更新代码,并且跟本地进行合并
本地和远程仓库代码同时修改,解决冲突合并的方法:
先把本地的 add commit,然后 再在远程仓库拉取代码:git pull origin master
之后解决合并冲突之后
再 add commit,之后再推送到远程仓库 git push -u origin master
1、克隆:git clone git地址(只能克隆主分支)
2、对代码进行操作
3、add  commit
4、推送到远程仓库:git push origin master
5、注意:多人协作的话,改的不是同一个文件,A把代码推到远程仓库了,此时B的本地代码跟远程仓库不是一个版本了
所以B应该先把代码 pull 拉取更新下来,然后再 push 上去。A的话再pull代码即可。此时A跟B的本地仓库代码就一致了。
6、准则:每次 push 之前,先 pull 一下

image.png

多人共同修改同一个文件:
1、A和B:add  commit
2、A先把代码 push 到远程仓库
3、B先 pull 拉取一下代码
4、然后解决冲突
团队协作的分支管理
1、把A成员的分支(login)推送到远程仓库的login分支:git push origin login(git push origin login:login)
此时远程仓库中有两个分支,一个master、一个login
2、B成员要想使用远程仓库的 login 分支,操作:
首先要把 远程仓库的 login 分支 拉取下来:git pull origin login
输入命令:git checkout login(这个命令代表创建并切换到login分支,并且进行了关联)
3、删除远程分支:git push origin :bugfixed(git push origin bugfixed:bugfixed)

image.png

image.png

11、跨团队协作

1Fork:把别人的代码 fork 下到自己的 github 仓库上,更改完之后,使用 pull request 向原作者请求

12、gitee 码云

13、vscode集成git