git学习资料

Git简介

Git工具的出现,可以帮助开发者完成多人协同开发,是一个开源的分布式版本控制系统

版本控制:

用于记录所有操作者的操作过程
image.png

分布式:

分布式是相比较集中式来说
image.png
集中式存在的弊端:
1.当代码仓库节点宕机,整个服务停止
2.对于单个代码仓库节点,可能会存在 请求压力过大
3.风险较大,当节点故障数据丢失,所有的代码损失

image.png
分布式:将所有的代码,进行分开保存,并且会实现数据的备份,对于节点请求压力进行分摊

Git使用

本地配置

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

git 区域及状态

image.png

git区域

工作区(working directory):项目的根目录,不包括.git在内的其他文件
暂存区(stage area):是一个看不见的区域,git add命令就是将文件添加到该区域,git add .表示添加所有,git status命令可以查看当前暂存区的文件,文件标识改了,(没有加号重启一下)
本地仓库(repository):指在工作目录下创建的一个.git目录,这是一个隐藏目录。git commit -m "日志"名可以将暂存区的代码提交到本地仓库。git push -u origin master就是将本地仓库的代码推送到远程仓库、

git文件的3种状态(尝试查看文件图标变化)

已修改(modified),存在于工作区,文件修改后的状态
已暂存(staged),存在于暂存区,采用git add命令后的状态
已提交(committed),存在于本地仓库,采用git commit命令后的状态

常见命令

 git init  #初始化
 git status # 查看当前状态  
 git add .   提交当前所有待提交文件到暂存区 
 git add file 指定文件提交到暂存区
 git commit -m "提交信息" 提交所有暂存区的文件到本地仓库
 git commit file  -m "提交信息" 提交指定文件到本地仓库 
 git log 查看当前仓库中所有commit提交历史日志
 git reflog 简化查看当前仓库中所有commit提交历史日志
 git reset --hard 版本编号 回退到某个本地版本,x为git log中出现的hash值的前七位
 
On branch master  -> 当前git所在的分支 
No commits yet  -> 没有提交 
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        gittest.txt -> 当前新增的文件 仓库中并没有保存该文件的相关信息 
nothing added to commit but untracked files present (use "git add" to track)

代码提交规范

对于git add 命令是如果一个代码,编写完成后,需要先将其通过该命令添加到暂存区,同时要求该代码是测试通过的,没有语法错误,同时此时注意不能直接再进行 git commit命令
git commit 命令执行时机:当一个代码小模块开发完成后,会涉及到多个代码时,对于该模块中所涉及到的代码进行一次性提交,提交时,其提交说明需要注释相关信息 当前模块功能 以及状态 或者是 对于之前已经提交过的代码进行Bug修复 ,需要说明Bug的修复内容 以及状态
注意:去公司提交代码时,先了解提交规范

Git本地仓库和码云进行关联

码云官网地址:

https://gitee.com/

登录注册

首次登录需要注册,注册以后使用手机号验证并在设置中添加个人邮箱

注册后创建仓库

image.png
仓库设置
image.png
在创建完仓库之后,用户可以通过如下方式,可以向仓库提交第一行代码。
Git帮助连接 点击跳转- Gitee.com
此处我们以用户账号下命名为 HelloGitee 的仓库为例。对应的仓库地址为:https://gitee.com/用户个性地址/当前仓库名.git,在实际实践中,你可以将用户个性地址替换为自己的地址。

Gitee和Git本地仓库连接方式1 先克隆 后提交

先将仓库clone到本地,修改后再push到 Gitee 的仓库
该方式会避免一些冲突问题

git clone https://gitee.com/用户个性地址/HelloGitee.git #将远程仓库克隆到本地
# 样例:
git clone https://gitee.com/act_xing/bigdata_git_test.git

在克隆过程中,如果仓库是一个私有仓库,将会要求用户输入 Gitee 的账号和密码。按照提示输入即可。
当然,用户也可以通过配置本地的git配置信息,执行git config命令预先配置好相关的用户信息,配置执行如下:

注意:之前执行过可以不用再执行

git config --global user.name "你的名字或昵称"
git config --global user.email "你的邮箱"

在 Gitee 平台中,强烈建议您在【设置-多邮箱管理】中的“提交邮箱”与上面配置信息中的邮箱地址保持一致,这样平台就能及时地统计您在平台中提交代码的贡献了。
修改代码后,在仓库目录下执行下面命令

cd 仓库名 # 进入到当前克隆的本地目录
# 可以添加文件到当前目录中 之后再进行提交到本地仓库 再到远程仓库
git add . #将当前目录所有文件添加到git暂存区
git commit -m "my first commit" #提交并备注提交信息
git push origin master #将本地提交推送到远程仓库

注意:git push origin master 命令中
origin 是git远程地址的连接代称
master 是远程地址主分支

方法2、本地初始化一个仓库,设置远程仓库地址后再做push

和方法1的差别,在于先创建仓库。

$ git init 
# 在当前本地Git项目目录中执行:
$ git remote add origin https://gitee.com/用户个性地址/HelloGitee.git
# 样例 将远程的URL赋予给origin变量名 
git remote add origin https://gitee.com/act_xing/bigdata28gittest2.git

这样就完成了版本的一次初始化。

注意:如果本地仓库中已经提交了部分记录 (git commit -m “”),同时远程仓库初始化时,也会存在有文件,此时避免文件冲突,以远程仓库为主,将远程仓库中的文件更新到本地,再将本地的文件提交到远程仓库

接下去,进入你已经初始化好的或者克隆仓库的目录,然后执行:
$ git pull origin master
修改/添加文件,否则与原文件相比就没有变动。

$ git add .
$ git commit -m "第一次提交"
$ git push origin master

然后如果需要账号密码的话就输入账号密码,这样就完成了一次提交。此时,你可以在你的个人面板、仓库主页查看到你的提交记录。
在新建仓库时,如果在 Gitee 平台仓库上已经存在 readme 或其他文件,在提交时可能会存在冲突,这时用户需要选择的是保留线上的文件或者舍弃线上的文件,如果您舍弃线上的文件,则在推送时选择强制推送,强制推送需要执行下面的命令(默认不推荐该行为):
$ git push origin master -f
如果您选择保留线上的 readme 文件,则需要先执行:
$ git pull origin master

Gitee和IDEA连接使用

idea配置

image.png
在IDEA中添加Gitee账号
image.png

Idea创建Maven项目

Gitee创建仓库

image.png

本地进行融合所有文件
1.找到一个本地目录对远程仓库进行克隆
git clone https://gitee.com/act_xing/bigdata28gittest3.git 
2.将克隆后的目录中所有文件 包括 .git目录 readme.md等 剪切到 Maven项目目录中 

image.png

IDEA中操作Git完成代码同步

添加暂存区

image.png
image.png

提交本地仓库

image.png

提交远程仓库

image.png

重置到任意一个历史节点

image.png

Git分支

什么是分支:
 对于一个开发的线性的单向的过程称为一个分支,当一个Git仓库创建好,默认会产生一个master 主分支,所有的提交流程都在主分支中进行增加或回退 

分支命令:
git branch 查看当前git项目中的所有分支  其结果用*标记的是当前所在的分支 
git branch dev 创建一个分支名为 dev的分支
git checkout dev  切换分支到devs 上
git merage dev  将dev融合到master上 

注:当在master上创建一个分支dev,那么dev中数据的状态和master当前状态一致,之后会各自变化
当在分支内部开发的代码,不会影响其他分支 ,同时git log仅仅只能查看当前分支中的内容

多分支开发作用:
在企业开发过程中,比如以银行软件开发过程为例,
master分支表示当前软件的主要开发过程
dev_icbc 分支表示在当前master分支软件基础上做定制化开发工商银行提供的需求
dev_abc 分支表示在当前master分支软件基础上做定制化开发农业银行提供的需求
创建分支
image.png
切换分支
image.png
多分支展示
image.png
对于分支进行融合操作
image.png

分支冲突

分支冲突:当多个分支进行融合时,那么会有一些文件相同,其内容也可能相同,于是就会产生冲突问题
image.png
image.png
将冲突的代码进行选择保留那些部分即可

提交冲突

当A和B同时提交一个文件到远程仓库,那么在远程仓库会存在有两份不同的文件,此时就会产生冲突问题
image.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值