Git的学习

Git

 概念:

​   是一个免费的、开源的分布式 版本控制系统。可以快速

版本控制:

​ 一种记录一个或若干文化内容变化,以便将来查阅特定版本修订情况的系统

​ 好处:

​ 可以将某个文件【甚至整个项目】回溯到之前的状态

​ 可以比较文件的变化细节,并且可查看最后谁进行修改。

  

 版本控制的分类:

  集中化的版本控制系统 [SVN]
    通过一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到该服务器,取出最新的文件或者提交更新。
    缺点:中央服务器的单点故障。

  分布式的版本控制系统[GIT]
    并不只是提取最新版本的文件快照,而是把代码仓库完整地镜像下来。因此该系统可以指定和若干不同的远端代码仓库进行交互。因此同一项目中分别和不同工作小组的人相互协作。

  

Git结构

  本地结构
在这里插入图片描述

  本地库和远程库地交互方式:

​       团队内部协作
在这里插入图片描述

​     跨团队写作
在这里插入图片描述

  因此需要 通过 代码托管中心来维护远程库

  

托管中心种类:

​ 局域网环境:可以搭建 GitLab服务器作为代码托管中心

​ 外网环境下:可以由GitHub或者Gitee作为代码托管中心

  

初始化本地仓库

【在Git中 命令与 Linux是一致的】

  
查看Git版本

git --version

  
设置签名

设置用户名 与 邮箱

git config --global user.name "xxx"
git config --global user.email "xxx"

[“xxx”:xxx处填写设置的内容]

  

本地仓库的初始化操作

git init

  

常用命令

add命令

​ 主要将本地库的文件提交到暂存区

命令行:

git add 文件名.后缀

eg:

​ 1.首先 创建一个 想要提交的文件

gitFile.txt

​ 2.使用 add命令 将暂存区的内容交到本地库

git add gitFile.txt

  

commit命令

​ 主要将暂存区的内容交到本地库

命令行:

git commit -m "备注信息" 文件名.后缀

将add命令中的文件提交至本地库

git commit -m "demo实例提交" gitFile.txt

不放在本地仓库的文件,Git是不对其进行管理。

即使在本地仓库的文件,Git依旧不对其进行管理。

只有通过add,commit命令操作才能将内容提交至本地库。

  

status命令

​ 主要用于查看工作区和暂存区的状态

命令行:

git status

eg:

创建一个文件并提交

git add "gitStatus.txt"

此时 git status将会查看到

Changes to be committed:
	(use "git restore --staged <file>..." to unstage)
		new file: gitStatus.txt

通过git commit之后,再对文件进行修改

git commit -m "status示例" gitStatus.txt

//修改gitStatus.txt内容 ...

此时 git status将会查看到

Changes not staged for commit:
	(use "git add <file>..." to update what will be committed)
	(use "git restore <file>..." to discard changes in working directory)
		modified: gitStatus.txt

  

log命令

  主要查看历史记录

命令行

git log

显示效果

commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [commit 索引]
Author: xxx <xx@xx.com>					[上传人 邮箱]
Data: xx xx DD HH:MM:SS +xx				[时间]

  

其中当有多条数据时,会进行分页。

分页的标识 显示:

下一页:按一次空格键

上一页:b

结束:显示END

退出:q

  

其他形式展开日志

1.git log 前文的方式 由分页效果

2.git log --pretty=oneline

展现的结果

索引 + 备注

3.git log --oneline

展现的结果

索引前几个字段 + 备注

4.git reflog

展现的结果

索引前几个字段 +HEAD@{number} commit: 备注

其中 number 表示:指针当当前历史版本需要多少步

  

reset命令

​ 用于前进或者回退到某一个版本

命令行

git reset --参数 索引

效果:

​ 将版本操作到与索引版本一致

  

参数

1.hard参数

命令行

git reset --hard 索引

主要效果:

​ 在本地库指针移动的同时,将暂存区、工作区重置

2.mixed参数

命令行

git reset --mixed 索引

主要效果:

​ 在本地库指针移动的同时,将暂存区重置。但工作区保持不变。

3.soft参数

命令行

git reset --hard 索引

主要效果:

​ 仅移动本地库。暂存区、工作区都不变

eg:

​ 在操作时误操作 删除了某个文件。
  

找回删除的文件,实际就是把历史版本切换到最近有那个文件的版本

git reset --hard 有该文件的版本索引

  

diff命令

​ 可以将工作区与暂存区的文件进行对比。

git diff 文件名

1.提交一个文件(diffFile.txt)到本地库。

2.在工作区中修改该文件的内容

3.此时便可以输入

git diff diffFile.txt

结果为:

diff --git a/diffFile.txt b/diffFile.txt
index xxx..xxx 23123
--- a/diffFile.txt
+++ b/diffFile.txt
@@ -1 +1 @@
-1111 [此处 - 为删除 上面-1是减少一行]
\ No newline at end of file
+2222 [此处 + 为添加 上面+1是加少一行]
\ No newline at end of file

多个文件的对比git diff

  

Git分支

什么是分支:

​ 在版本控制过程中,使用多条线同时推进多个任务。这里面说的是多条线,就是多个分支。

在这里插入图片描述

分支的好处:

​ 可以允许多个分支可以并行开发,互相不影响,提高开发效率。

​ 如果有一个分支功能开发失败,直接删除即可,不影响整体进度。

  

常见Git分支操作

查看分支
git branch -v
创建分支
git branch 新分支名
切换分支
git checkout 分支名

  

合并分支
git merge 分支名

冲突问题

  背景:

    1.branch_1 分支中 textFile.txt的内容被修改

​    2.branch_2 分支中 同样对该文件进行修改

​    3.在branch_1分支中想要合并branch_2分支中

【在大分支(branch_1)将合并分支(branch_2),首先要在大分支环境中】

git merge branch_2

此时会出现冲突

Auto-merging textFile.txt
CONFLICT(content):Merge conflict in textFile.txt   [表明该处出现冲突]
Automatic merge failed;fix conflicts and then commit the result.

.... (branch_1 |MERGING) [表明正在处于合并状态]

  

何时会出现冲突问题?

​ 都在用一个文件中同一个位置进行修改。

  

解决冲突方法

​ 1.商议适合需求的决策,保留所需的代码。

​ 2.将处理后的文件添加到暂存区中。add

​ 3.此时要进行commit操作。但需要注意的是不要带上文件,否则会报错。

git commit -m "merge files"

​ 4.此时就可以查看到 该分支状态不处于合并状态。

  

GitHub的相关操作

官网注册:GitHub

创建远程库

  1.在本地 将一个项目进行git init

  2.进入Github 的 ➕ 的 New repsitory
在这里插入图片描述

创建好后进入该远程库

在这里插入图片描述

HTTPSSSH 。 主要作用是获取该远程仓库地址的方式

由于地址较长,每一次操作起来都不太高效。

因此有 别名 来提高效率。

起别名的命令:

git remote add 别名 地址

  

常见操作

克隆操作
git clone 远程库地址

当进行克隆操作时,还会完成

​ 1.初始化本地库

​ 2.将远程库的内容复刻到本地

​ 3.替我们创造远程库的别名

 

push 推送操作
git push 远程库的别名 推送的分支

eg:

git push repostion master

将本地master分支的内容提交的远程库的master分支(如果远程仓库没有mater分支,则会默认添加)

通常操作

​ 1.更新本地库 add commit

​ 2.push到远程库

git push 远程库 分支

 

pull操作

​ pull 约等于 fetch +merge 来完成远程库的拉取

git pull 远程库别名 远程库对应分支

1.抓取远程库

git fetch 远程库别名 远程库对应分支

执行抓取操作后,仅仅只是将远程库的内容下载至本地。工作区的文件仍是原来的内容。

2.此时可以在远程库查看内容是否正确

git checkout 远程库别名/远程库对应分支
ll

3.确定内容正确后,便可以进行合并操作。但需要将分支切换到本地分支上

进行合并

git merge 远程库别名/远程库对应分支

以上的操作都可以直接通过pull操作完成

 

协同开发合作时冲突的解决方法

1.角色:[Tom]

​ 向远程库推送文件add commit push

2.角色:[Jerry]

​ 进行一个pull操作,并修改了里面的文件。再次进行 推送

3.角色:[Tom]

​ 恰好与Jerry一样,对同一个文件进行操作,并且推送。

【此时则会出现冲突】

解决冲突的方法:

​ 1.先拉取远程库文件

git pull 远程库别名 远程库对应分支

2.修改冲突

​ 人为的进行删改

3.推送至远程库

git add 文件名
git commit -m "发生冲突问题时,切记不要带文件名"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值