Git/Github 使用

1. Git是什么?

git是目前世界上最先进的分布式版本控制系统。

2. Git的特点

  • 版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题。
  • 分布式:Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。首先找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。可以自己搭建这台服务器,也可以使用GitHub网站。

3. Git 的基本使用

在这里插入图片描述git 将代码分成四个区域:

.git隐藏目录 之外的区域:
(1)工作区(worksapce)

.git隐藏目录 内部的的区域:
(2)暂存区 (stage),
(3)本地版本区(repository)

远程区域
(4)远程仓库(remote) (本地代码服务器或者github 网站提供的代码托管服务)

我们的所有操作都是围绕着这四个区域展开的。

3.1 创建版本库

#(1) 创建一个准备存放项目的目录		这个目录就是我们的工作区(workspace)
mkdir git_test
cd git_test
#(2)  创建一个版本库				此时会产生一个.git 隐藏目录,这个就是我们的版本库
git init				

3.2 向暂存区添加文件 或添加整个目录

git add  文件名 | 目录名

该命令的作用是将 工作区的代码 移动到暂存区。

3.3 提交一个版本

git  commit

该命令的作用是将暂存区的代码移动到 版本区,形成一个本地的版本。因此,当工作区做了修改,应该首先将工作区的修改添加到暂存区,然后使用git commit 进行版本的提交。

使用该命令后会进去到一个界面中,要求你描述该版本的信息。
在这里插入图片描述如果版本改动较小,可以使用选项,进行简短的描述,避免进入该窗口。

git commit -m "描述信息"

3.4 查看版本记录

git log

版本记录单行显示

git log --pretty=oneline

该命令的作用是查看当前版本 之前 的版本日志。

3.5 查看操作记录

git reflog

该命令的作用是查看所有的操作记录。

3.6 退回到原来的版本

git reset --hard  回退的版本
方式一 ^ 方式
git reset --hard  HEAD^				# 回退到前一个版本
git reset --hard  HEAD^^			# 会退到前2个版本
git reset --hard  HEAD^^^			# 回退到前3个版本
方式二 ~ 方式
git reset --hard  HEAD~10			# 回退到前10个版本
方式三 版本序号方式
git reflog    #查看操作记录,记录中有每一次操作的对应的版本的序号

退回到指定的版本

git git reset --hard 版本序号        

3.7 查看分支状态

git status

该命令 可以列举出 工作区发生了改变,但是还没有添加到暂存区的文件,以及添加到了暂存区,但是还没有提交到本地版本的文件。 需要注意,如果新建了一个文件,没有使用git add 命令添加到暂存区,那么git 不会根据该文件的状态 ,因此,每创建一个文件,都应该添加到暂存区,一边Git 跟踪该文件的状态。

如果工作区没有做任何的修改,那么工作区就是干净的。

4. 撤销命令

4.1 修改了工作区的文件,还没有添加到暂存区,撤销工作区的改动

git checkout -- filename

4.2 修改的文件已经提交到了暂存区,从暂存区撤回到工作区

git reset HEAD filename

4.3 修改的文件已经提交到了版本区,从版本区撤回到工作区

版本回退

5. 对比文件的不同

5.1 比较的是工作区和暂存区的差别

git diff

5.2 比较的是暂存区和版本库的差别

git diff --cached

5.3 可以查看工作区和版本库的差别

git diff HEAD 

6. 删除文件

6.1 删除工作区中的文件

rm filename
  • 删除工作区的文件,要想提交一个版本,首先得删除完工作区以后,然后使用git rm 删除暂存区,然后提交。

  • 或者直接使用git rm 删除,这个命令起始可以同时把工作区和暂存区的文件删除了。但是使用rm 的好处是,暂存区还保留一份,可以撤销回工作区。

6.2 删除暂存区中(同时删除工作区)的文件

git rm filename

7. 分支管理

git把我们之前每次提交的版本串成一条时间线,这条时间线就是一个分支。初始化一个git版本库,git默认会为我们创建一个分支,这个分支的名字就是master。
在这里插入图片描述

7.1 查看当前在哪个分支工作

git branch

7.2 创建一个分支

git branch dev

选项 -b 创建一个分支,并切换到该分支

git checkout -b dev

7.3 切换到新创建的分支

git checkout dev

7.4 合并分支内容(没有冲突的情况)

将dev 合并到master 分支

git checkout master
git merge dev 

合并前:
在这里插入图片描述
合并后:
在这里插入图片描述
这种情况采用的是fast-forward 模式合并的。

7.5 解决冲突的合并

在这里插入图片描述
如果主分支和dev 分支都进行了一次提交,并且改变的是同一个文件的话那么,进行提交的话就会产生冲突。这时需要手动解决冲突,然后进行一次提交。采用git status 可以查看产生冲突的文件。

解决冲突后,再此提交:
在这里插入图片描述

7.5 查看分支的合并情况

git  log  --graph --pretty=oneline

7.6 禁用快速合并

如果没有冲突的版本进行了快速合并,那么可能将会看不到版本的更新的信息,因此,我们可以禁止快速合并 ,这样,合并后,会有一次新的提交。

git merge --no-ff -m " 说明信息" dev

使用快速提交的情况(删除dev 后,dev版本的变动的说明信息将会丢失):
在这里插入图片描述不使用快速提交的情况:
在这里插入图片描述

7.7 保存工作现场

假如现在正在dev 分支写代码,写到一半,突然来了一个任务需要修复一个bug ,这时需要保存工作现在,以便bug修复完毕后继续工作。

git stash

然后新创建一个分支bug-001 完成bug 的修复,修复完成后,合并到master 分支中,然后删除bug-001 分支。 然后切换回dev分支继续工作。此时可以使用如下命令回复工作现场:

git stash list		#查看保存的工作现场
git stash pop       #回复工作现场

8. 使用Github

8.1 申请github账号,并创建一个代码仓库

创建仓库时可以配置.gitignore 选择忽略的文件

8.2 在本地电脑的 主目录下修改 .gitconfig 文件

在这里插入图片描述

8.3 在本地电脑生成 ssh 秘钥

ssh-keygen -t rsa -C "邮箱地址"  # 邮箱地址为github 账号的邮箱地址

该命令会在 提示目录(.ssh)下生成一个 公钥(id_rsa.pub),一个私钥(id_rsa)。

8.4 将公钥添加到github 账号上

8.5 在本地pc机上从github 上clone 代码

8.5.1 首先在 github账号上 找到 代码地址

在这里插入图片描述

8.5.2 在本地pc机上下载代码
git clone 代码地址

如果克隆失败执行

eval "$(ssh-agent -s)"
ssh-add

8.6 上传分支(推送分支)

下载代码后创建一个自己的分支 dev。

git push origin dev

推送分支会使得github 中自动创建一个 dev分支。

8.7 将本地分支跟踪服务器分支

git branch --set-upstream-to=origin/远程分支名称 本地分支名称

8.8 从远程分支上拉取代码

git pull orgin dev

上述命令会将远程dev分支合并到本地所在分支。

9.工作使用git

项目经理:
(1)项目经理搭建项目的框架。
(2)搭建完项目框架之后,项目经理把项目框架代码放到服务器。
普通员工:
(1)在自己的电脑上,生成ssh公钥,然后把公钥给项目经理,项目经理把它添加的服务器上面。
(2)项目经理会给每个组员的项目代码的地址,组员把代码下载到自己的电脑上。
(3)创建本地的分支dev,在dev分支中进行每天的开发。
(4)每一个员工开发完自己的代码之后,都需要将代码发布远程的dev分支上。

Master:用户保存发布的项目代码。V1.0,V2.0
Dev:保存开发过程中的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值