git的使用

简介: git的使用

Git

版本控制工具,对文件或内容做版本控制

记录文件在不同的时间点的状态,追踪到文件在不同的时间点下的不同状态。

可以协作的、也可以公开、可以追踪历史网盘 → 协作开发

GitHub 996icu

Linus → Linux、Git、git的命令行里可以使用linux的一些命令

分布式版本控制工具(Git)、集中式版本控制工具(SVN)

离线可用

Git的操作流程

pull:本地仓库落后于远程仓库,可以通过pull拉取远程仓库更(四声)新的这部分

push:本地仓库领先于远程,可以通过push推送给远程领先的这部分内容

工作区:是看得见摸得着的地方,开发的位置

add:将工作区的变化(指定文件)提交到暂存区

commit:将暂存区所有的变化都提交到本地仓库,产生版本信息

Git的安装

next → finish

使用Git

创建远程仓库

注册账号:记住用户名和密码

clone 获得本地仓库

git clone 仓库地址 → 克隆到当前位置

git clone 仓库地址 文件夹 → 克隆到指定文件夹

我们通常会使用一个这样的命令 git clone 仓库地址 **. ** → clone到当前文件夹

注意:

  • .git文件夹是一个隐藏文件夹,不要直接操作;
  • .git文件夹所处的目录就是工作区的根目录;也可以工作蓝色文字来区别
  • 工作区产生的变化都会被git识别

status 查看状态

git status

查看工作区和暂存区的状态,查看变化在工作区,还是已经提交到暂存区了

查看文字颜色:红色工作区绿色暂存区

![外链图片转

add 工作区提交到暂存区

git add 文件名

git add *.java 提交某个类型的文件中产生的变化

git add src/* 提交某个目录下的文件中产生的变化

git add . 提交当前目录下所有的变化(谨慎操作),使用之前先git status

commit 提交到本地仓库

会产生版本信息,版本信息里包含本地的用户信息

第一次提交之前要先设置本地的用户信息

用户信息设置

直接修改配置文件

c:/Users/当前用户/.gitconfig (ini格式)

如果你没有这个文件可以新增一个,如果是windows,不允许创建没有名字的文件

如果window不允许创建,你可以打开git的bash → touch .gitconfig

[user]
  email = shitoushaoxia1993@gmail.com
  name = shitoushaoxia
  
[credential]   
    helper = store

使用命令修改 → 修改配置文件

git config --global user.name 值

git config --global user.email 值

git config --global credential.helper store 保存用户名密码的

执行提交

git commit -m “提交消息”

mg%2Fimage-20220105151758530.png&pos_id=img-L1P0fG6N-1706540292676)

提交消息:建议小组统一 一个格式 (具体格式都可以)

注意:commit的时候已经产生了版本信息,4492a54是版本号,版本号是唯一,当前仓库使用前7位就够了

push 本地仓库推送远程仓库

领先于远程仓库

git push

第一次push的时候需要输入码云的用户名和密码,输入git push时会弹出对话框

pull 拉取变化

落后于远程仓库

git pull

协作开发

加入仓库

加入到仓库中就可以push了

如果你的仓库是私有的,也能够看到你这个仓库

处理冲突

先提交的不处理冲突

后提交的处理冲突

开发习惯:晚上走之前建议提交一下(提交的时候保证你的程序能够编译

log 查看本地仓库日志

git log

过程1

结合上面的流程图看

过程2

repo1先执行了push

!

过程3

repo2执行pull

发现产生冲突了

过程4

修改冲突,并且重新提交

aster%2Fimg%2Fimage-20220106102329470.png&pos_id=img-7JwqTr8x-1706540292680)

过程5

repo2执行提交,提交最早想提交的部分和处理冲突的部分

!

过程6

repo1执行pull

没有冲突

Auto Merge

自动合并会让你提供合并信息(啥都不写都行) → 弹出vim编辑器

退出vim编辑器

  1. esc
  2. 冒号 wq
  3. 回车

忽略管理

你在工作产生了新的内容(变化 → 新增),git就会追踪这个变化

untracked files 还没有追踪

这个文件产生的变化我们不想给提交上去,我们可以做忽略管理

.gitignore → 要放在工作区的根目录

格式

文件名 单个文件

文件夹 某个文件夹下的文件

文件夹/

*.类型 某个类型的文件

注意事项:当前版本已经管理的文件,不能做忽略管理;只有去除掉才可以忽略管理(commit)

可以忽略自己(.gitignore),但是不建议大家忽略自己

newfile.txt 忽略单个文件

directory 忽略目录

runlist.txt

*.class 忽略了class文件

后悔药

![外

checkout 工作区里内容的撤销

git checkout 文件名

撤销完之后,内容还能找回吗? 不能 → 谨慎操作

reset 暂存区撤回到工作区

git reset

刚刚在工作区中新增了“松哥牛皮”

提交到暂存区之后,又使用reset给撤回到工作区,“松哥牛皮”还在不在 → 在,变化仍然存在

reset --hard 本地仓库的版本回退

git reset --hard 版本号

版本号可以写前七位,也可以写完整的

注意回退的是本地仓库,指回退当前的本地仓库,对远程仓库和其他本地仓库没有影响

!

如果想要回到最新的状态

可以使用pull命令

分支branch

git branch -a 查看分支

括号里的蓝色文字:指的是当前分支名,也意味着你处于工作区中

创建分支

创建远程仓库的分支

创建本地仓库的分支

起点是当前分支

git checkout -b 分支名 创建分支并切换到这个分支上

git checkout 分支名 创建分支并切换到这个分支上;切换分支

建立本地仓库的分支和远程仓库分支之间的联系

设置分支之间的联系

执行一次完整的提交

分支的合并

比如我们现在要将dev分支上的变化提交到master分支上 → 在master上合并dev

切换到master分支上

分支合并 git merge dev

推送远程 git push

如果要将分支A里的合并到分支B里 → 在B上合并A

1706540292682)]

设置分支之间的联系

[外链图片转存中…(img-1Klpl4tK-1706540292683)]

执行一次完整的提交

[外链图片转存中…(img-tjV0FsNm-1706540292683)]

[外链图片转存中…(img-9ZANon49-1706540292683)]

分支的合并

比如我们现在要将dev分支上的变化提交到master分支上 → 在master上合并dev

切换到master分支上

分支合并 git merge dev

推送远程 git push

[外链图片转存中…(img-pw2LMxaQ-1706540292683)]

如果要将分支A里的合并到分支B里 → 在B上合并A

目录
相关文章
|
机器学习/深度学习 监控 算法
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
|
4月前
|
SQL 监控 关系型数据库
MySQL事务处理:ACID特性与实战应用
本文深入解析了MySQL事务处理机制及ACID特性,通过银行转账、批量操作等实际案例展示了事务的应用技巧,并提供了性能优化方案。内容涵盖事务操作、一致性保障、并发控制、持久性机制、分布式事务及最佳实践,助力开发者构建高可靠数据库系统。
|
9月前
|
人工智能 运维 JavaScript
当AI学会了自我升级,天网还会远吗?
文章通过一个模拟侦探游戏的例子展示了AI如何通过“自我升级”和动态执行代码的能力来解决复杂问题。
365 33
当AI学会了自我升级,天网还会远吗?
|
数据挖掘 Linux
服务器数据恢复—误操作导致xfs文件系统丢失,无法访问的数据恢复案例
一台服务器+MD1200磁盘柜通过RAID卡创建了一组RAID5阵列并分配一个LUN。在Linux系统层面将该LUN划分了sdc1和sdc2两个分区。通过LVM扩容的方式将sdc1分区加入到了卷组中的一个逻辑卷中,sdc2分区格式化为XFS文件系统使用。Linux操作系统采用的xfs文件系统。
服务器数据恢复—误操作导致xfs文件系统丢失,无法访问的数据恢复案例
|
数据采集 数据可视化 数据挖掘
【优秀python案例】基于python爬虫的深圳房价数据分析与可视化实现
本文通过Python爬虫技术从链家网站爬取深圳二手房房价数据,并进行数据清洗、分析和可视化,提供了房价走势、区域房价比较及房屋特征等信息,旨在帮助购房者更清晰地了解市场并做出明智决策。
861 2
|
算法 Unix Linux
深入理解Linux内核调度器:原理与优化
本文探讨了Linux操作系统的心脏——内核调度器(Scheduler)的工作原理,以及如何通过参数调整和代码优化来提高系统性能。不同于常规摘要仅概述内容,本摘要旨在激发读者对Linux内核调度机制深层次运作的兴趣,并简要介绍文章将覆盖的关键话题,如调度算法、实时性增强及节能策略等。
|
人工智能 供应链 监控
数字供应链中的10个顶级成功案例
数字供应链中的10个顶级成功案例
|
存储 小程序 数据库
微信小程序云开发入门教程-服务开通
微信小程序云开发入门教程-服务开通
|
前端开发 JavaScript 安全
带你读《现代Javascript高级教程》二十一、前端跨页面通信:实现页面间的数据传递与交互(1)
带你读《现代Javascript高级教程》二十一、前端跨页面通信:实现页面间的数据传递与交互(1)
333 0
量化合约项目系统开发技术丨合约量化系统开发流程方案
量化合约项目系统开发技术丨合约量化系统开发流程方案
237 0

热门文章

最新文章