git重新复习

三个区:工作区(本地的项目所在位置),暂存区(要更改,追踪的文件,通过git add添加到暂存区,如果修改了文件,没添加到暂存区,就会提示文件未追踪),本地库(本地的版本控制区)

git被称为分布式管理系统就是因为:每个用户都有一个本地库,每个人都有自己的版本控制信息,然后再将本地的版本控制信息推送到远端的服务器。

而集中式没有,所以集中式管理有单点故障的风险。

提交

git init:在当前目录下初始化本地的版本库。并新建一个.git文件夹存储本地库信息,默认隐藏

通过command+shift+。 查看隐藏文件

 

git add:将文件添加到工作区

git push:将本地库的信息推送到远端服务器

git pull:拉取远端服务器的数据信息。

git status:查看当前本地库的状态

git commit -m:将文件添加到本地库。

36be0c2就是版本号 ,first是-m后接的提交描述信息:比如,git commit -m "first" hello.txt

git reflog查看版本控制信息,git log是查看更加详细的信息

hea指针指向master分支。

 

修改

修改hello文件然后再git status

 然后 git commit -m "second" hello.rtf

git reflog 就能看到两个版本了

head指针指向第二个版本的master

 

版本穿梭 

git reset --hard 版本号

 

 第一行是一个日志信息,代表你使用过一次更换当前使用版本命令。

再查看hello.rtf文件信息(变回第一次commit时候的样子)

 所以git更换版本,其实是更换head指针

分支

版本控制的时候,同时推进多个任务,比如,主任务,测试任务。

可以理解为创建一个主分支的副本,在副本上修改,不直接在主内容处修改。

 git brach -v  查看当前分支

 git brach 分支名 创建分支

 git checkout 分支名 切换到分支

 然后修改hello文件,然后add,commit。

然后切回主分支看看,主分支和次分支内容

 

 只有hello了,再切回hot-fix

 

分支合并

假如要将hot-fix合并到master,必须切回master分支

git merge 分支名

 然后查看主分支内容已经变化

合并冲突

先修改master里面的内容,然后add,commit

切回hotfix修改内容,然后add,commit

切换回master进行合并发现冲突。

 

 因为master改了hello文件,hotfix也改了,系统不知道该用谁的。

查看内容变化

 

<<<head 后面代表的是冲突地方,是当前head所指的内容

>>>表示要合并的分支的内容

 

团队协作 

团队内合作:切分支,提交到远端服务器审核,进行合并

跨团队合作:fork一个远端仓库,这个时候就有两个远端仓库了,fork后到远端仓库修改好之后发起一个拉起请求,然后审核,进行合并。

git remote add 新名字 旧名字 将远端仓库起个别名(因为远端仓库一般是个链接,不好看)

git remote -v 查看别名

 

推送

git push 远程库名字 自己的分支

 

从2021年8月开始就不用密码验证了,改用token

点击setting 然后最下面,developer setting生成token,直接复制token当做密码,token生成之后只会显示一次,忘记要重新生成。 

拉取 

git pull 远程名 分支名

git pull 和git clone的区别

从字面意思也可以理解,都是往下拉代码,git clone是克隆,git pull 是拉。
但是,也有区别:
  从远程服务器克隆一个一模一样的版本库到本地,复制的是整个版本库,叫做clone.(clone是将一个库复制到你的本地,是一个本地从无到有的过程)
  从远程服务器获取到一个branch分支的更新到本地,并更新本地库,叫做pull.(pull是指同步一个在你本地有版本的库内容更新的部分到你的本地库)
  git pull相当于是从远程获取最新版本并merge(合并)到本地     git pull = git fetch + git merge,git fetch更安全一些
  git clone是远程操作的第一步,通常是从远程主机克隆一个版本库,eg:$ git clone ##   该命令会在本地主机生成一个目录,与远程主机的版本库同名,如果要是制定不同的目录名,可以将目录名作为git clone 命令的第二个参数。eg:$ git clone #版本库网址# #本地目录名#     git clone支持多种协议,除了http(s),还有ssh,git,本地协议。
  git pull 作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。eg:$ git pull ##远程主机(origin) #远程分之(next)#:#本地分之(master)#
如果远程分支是与当前分支合并,则冒号后面的部分可以省略。eg:$ git pull #远程主机(origin)#  #远程分之(next)# 相当于1. $ git fetch origin   2.$git merge origin/next 
在某些场合,git会自动在本地和远程分之之间,建立一种追踪关系。比如,在git clone 的时候,所有本地分之默认与远程主机的同名分之,建立追踪关系,也就是,本地的master分之自动“追踪”origin/master分之。git 可以手动建立追踪, git branch --set-upstream master origin/next   --->指定master分之追踪到origin/next。
如果当前分支只有一个追踪分支,连远程主机名都可以省略。$ git pull  表示当前分之自动与唯一一个追踪分之进行合并。

git clone会做三件事:1.拉取代码 2.初始化本地库3,创建别名(origin)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值