首页 > 其他分享 >Git版本控制工具

Git版本控制工具

时间:2023-09-21 19:45:24浏览次数:51  
标签:Git 提交 版本控制 仓库 git 本地 工具 远程 分支

Git版本控制工具

一.简介

1、git是一款分布式的版本控制工具,使用git每台本地主机都可以作为一个本地库,每个本地库可实现资源的相互共享,也可以把本地库的资源推送到远程仓库中(码云、github),不同本地库可以作为一个节点,允许有多个节点之间实现资源共享,避免了单点故障。
2、与SVN区别在于,SVN是集中式版本控制,SVN没有本地仓库,每个版本库有唯一的URL(官方地址),每个用户都从这个地址获取代码和数据,并且必须联网,很容易出现单点故障,而git则可以实现分布式,每台主机都有一个本地仓库,每个本地仓库都可以做为一个服务器节点,可以保存文件修改版本,推送远程仓库进行更新,避免了单点故障的出现!

image-20230920090925327

​ 版本集中式管理(SVN)

image-20230920091030592

​ 版本分布式管理(git)

二、git命令

image-20230921083422671

  • 初始化git本地仓库(进入代码资源目录)
git init

image-20230920092530199

  • 暂未提交缓存区状态

image-20230920092901879

  • 把工作区中文件提交到暂存区
git add . #表示所有文件提交暂存区
git add [fileName] #指定文件提交暂存区
  • 已提交暂存区状态

image-20230920155114818

  • 查看文件状态
git status
  • 把文件提交到本地仓库
git commit -m "[提示信息]"  #提交所有的暂存区文件到本地仓库
git commit [fileName] -m "提示信息"  #提交暂存区指定文件到本地仓库
  • 查看本地仓库存在所有的文件
git ls-files
  • 查看未关闭窗口下的所有历史版本
git log #显示所有历史提交版本的详细信息
git log --pretty=oneline  #显示所有历史提交版本的第一行信息

image-20230920160640002

image-20230920160730620

  • 查看最近所有的历史版本信息
git reflog
  • 版本切换
git reset --hard HEAD^ #回退上一个版本  ^表示一个版本  ^^ 表示两个版本
git reset --hard HEAD~数字  #回退指定的前几个版本
git reset --hard 版本号(缩写4-5个字符)  #根据版本号回退到指定的历史版本

image-20230920161312605

  • 拉取本地仓库的文件
git checkout [fileName] #拉取本地仓库的指定文件
git checkout .  #拉取本地仓库的所有文件
  • 删除本地仓库的文件
git rm . #删除本地仓库的所有文件
git rm [fileName] #删除本地仓库的指定文件
  • 文件差异对比(本地仓库文件与工作区同名文件之间的差异对比)
git diff HEAD -- [fileName]

image-20230920164046309

  • 撤销暂存区文件
git reset HEAD [fileName](文件夹)
  • 拉取远程仓库的代码
git clone [远程仓库地址SSH/Http]

三、推送远程仓库(gitHub)

  • 首先注册gitHub账号登录并创建仓库

image-20230920173015874

image-20230920173258857

  • 生成SSH私钥和公钥
ssh-keygen -t rsa -C "邮件地址@youremail.com"

image-20230920173737793

  • 添加秘钥到github

image-20230920174641476

  • 复制SSH地址进行本地git绑定

image-20230920174940336

  • 检测SSH配置是否连接通
ssh -T [email protected]

image-20230920175357086

  • 绑定远程SSH地址
git remote add origin(别名) [SSH地址]
  • 创建分支
git branch -M [分支名]
  • 远程推送
git push -u origin[SSH地址别名] [分支名]

四、本地仓库分支操作

  • 查看本地分支列表
git branch [分支名]
  • 创建并切换本地分支
git checkout -b [分支名]
  • 合并分支(首先要切换到主分支上再进行合并分支,前提要在同一个仓库)
git merge [分支名] #合并分支到当前主分支
  • 合并不同仓库的分支
git merge [分支名] --allow-unrelated-histories #合并远程仓库分支到主分支
  • 重命名分支(M表示强制重命名)
git branch -m|-M [oldBranch] [newBranch]
  • 删除分支
git branch -d [分支名]

五、远程仓库分支操作

  • 查看所有分支包括远程分支
git branch -a
  • 推送本地分支到远程仓库(必须切换到同名分支工作区)
git push -u origin [远程仓库分支名]
  • 删除远程分支名
git push origin :[远程仓库分支名]
  • 拉取远程仓库到本地仓库(两步走)
1、git clone [仓库地址SSH/http地址] #工作区默认是指向并创建master分支。
2、git checkout [对应的远程分支] 或者 git checkout -b [本地仓库分支] origin/[远程仓库分支]#指定创建对应同名本地分支。
  • 同步远程仓库分支文件到本地分支(只能同步同名分支)
git pull origin [远程分支名] #pull指定的分支,前提是要合并当前分支。
git pull origin [远程分支名]:[本地分支名]  #同步远程分支文件到指定的本地分支
git pull #同步当前分支同名的远程分支
  • 绑定远程仓库地址
git remote add  [别名]   [SSH/http地址]  #一般别名设置为origin
  • 删除绑定远程仓库指定地址
git remote remove [别名]   #删除指定远程地址
  • 查看绑定远程仓库地址
git remote -v 

六、分支冲突

image-20230921140041638

  • 本地分支冲突(不同分支合并时)
本地不同分支,修改相同文件中同样位置,进行本地分支合并到主分支时出现的冲突。
解决:需要根据实际情况来解决分支。(修改主分支上的冲突文件) 然后进行add . -->commit -m ""提交到本地仓库,自动合并分支。解决冲突后的文件在主分支上,其他分支还是原状。
  • 远程分支冲突(相同分支推送时)
不同客户端拉取远程仓库中的文件,A客户端修改A分支代码并进行了远程提交,而B客户端在修改A分支代码之前没有执行同步远程分支操作(git pull),也修改了相同文件相同位置的代码,也进行远程提交,就产生了远程分支冲突。
解决:B客户端分支拉取远程仓库A分支中的代码,然后根据实际情况修改冲突文件中的文本,再重新提交远程仓库。

image-20230921141544057

  • 模拟本地冲突
1、新建一个文件夹
2、git init
3、编写一个test.txt文件
4、git add.
5、git commit -m "提交本地仓库创建master分支“
6、git checkout -b dev #创建并切换到dev分支
7、编写test文件中的内容
8、提交到本地仓库dev分支上
9、git checkout master
10、修改dev分支上相同位置的test文件
11、提交到本地仓库master分支上
12、git merge dev  #把dev分支合并到master分支上
  • 模拟远程冲突
1、新建两个文件夹 (文件夹A  文件夹B)
2、git clone [地址]  #分别拉取远程仓库文件
3、然后分别修改同一个分支相同文件中的相同位置。
4、同时或者其中一个文件夹先提交本地仓库。(先提交的没冲突,后提交的产生冲突)
5、然后后提交的文件夹进行git pull同步仓库,就产生冲突文件
  • 总结
为了尽可能排除远程仓库中分支冲突,我们在修改文件前应该先同步仓库(git pull),再进行修改代码最后提交远程仓库。
正确的操作流程:
1、首先 git clone  仓库地址  #拉取远程仓库到本地仓库
2、进入仓库文件夹
3、git checkout -b [分支] origin/[远程分支名]  #在本地创建本地仓库分支并切换该分支并把远程该分支文件加载
4、git pull
5、修改代码。
6、提交代码到远程仓库。

七、tag标签命令(压缩包)

image-20230921181031735

  • 创建标签
git tag [标签名]
  • 创建带注释的标签
git tag -a [标签名] -m  "注释信息"
  • 查看所有的标签
git tag
  • 推送单个标签
git push origin [标签名]
  • 推送所有未提交标签
git push --tags
  • 删除本地标签
git tag -d [标签名]
  • 删除远程标签
git push origin :refs/origin/[标签名]

八、IEDA集成git环境

  • 配置IDEA集成git设置

image-20230921151340514

image-20230921151417110

  • 打开IDEA情况下拉取远程仓库代码

image-20230921151858654

image-20230921152025786

  • 本地项目提交到远程仓库

初始化本地仓库 选择项目根路径下

image-20230921154958623

image-20230921155900180

提交项目到本地仓库 一般先提交.gitIgnore文件到本地仓库,再提交代码,可以过滤掉不需要提交的文件!

image-20230921160018060

image-20230921160302144

image-20230921161216460

image-20230921161547315

IDEA分支管理

image-20230921172857217

image-20230921173005123

image-20230921173254218

分支冲突处理界面 (处理完冲突会自动提交!)

image-20230921174346326

查看git日志

image-20230921180707288

如果不小心提交文件错了进暂存区

git reset HEAD [文件名]  #撤销暂存区文件提交

标签:Git,提交,版本控制,仓库,git,本地,工具,远程,分支
From: https://www.cnblogs.com/smallzengstudy/p/17720779.html

相关文章

  • 企业为什么要实施敏捷管理?敏捷有哪些好处以及敏捷工具推荐
    敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。那企业为什么要进行变革,实施敏捷开发呢?企业进行敏捷开发的原因主要有以下几点:1、拥抱变化敏捷开发的一个重要特点是能够快速响应和适应市场环境的变化。在竞争激烈的市场环境中,产品的需求和方向经常需要调整,传统的大规模......
  • Jdbc封装工具
    packagejdbcutils;importjava.io.FileReader;importjava.io.IOException;importjava.net.URL;importjava.sql.*;importjava.util.Properties;//释放资源publicclassJdbcUtils{privatestaticStringurl;privatestaticStringuser;privatesta......
  • Git忽略提交规则 - .gitignore配置运维总结
    在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。简单来说一个场景:在你使用gitadd.的时候,遇到了把你不想提交的文件也添加到了缓存中去的情况,比如项目的本地配置信息,如果你上传到Git中去......
  • Linux持续学习者的必备工具:文本处理神器awk
    Linux持续学习者的必备工具:文本处理神器awk原创 运维家 运维家 2023-09-0215:09 发表于北京收录于合集#awk1个#linux52个引言作为一名Linux持续学习者,我们经常需要处理各种各样的文本文件,例如日志文件、配置文件等。而对于大规模的文本数据,手动处理往往效率......
  • git多个commit合并成一个
    前言一个功能有多个commit要合并成一个更加美观操作打开gitbase1.输入gitlog-8  //查看前8条提交2.输入gitrebase-iHEAD~3  //表示最近的3条合并成一条3.输入完后界面如下,按i进入编译模式,将第2,3个pick改为s,表示将后2条合并到第一条中,然后按esc退出编译模式,然后......
  • 全栈性能测试工具:RunnerGo
    随着自动化测试技术的不断进步,自动化测试已成为企业级应用的重要组成部分。然而,传统的性能测试工具往往复杂、繁琐,让企业陷入了两难的境地。软件测试正逐渐从手动测试向自动化测试转变,各种自动化测试工具和框架层出不穷,极大地提高了测试效率和质量。近年来出现的敏捷开发方法使得......
  • git 查看代码行数
    统计当前项目代码行数gitls-files|xargscat|wc-l细分每个文件的代码行数,相当于把上面命令细化:gitls-files|xargswc-l  【git】Git指令统计代码行数_git统计代码行数_bandaoyu的博客-CSDN博客如何用git查看代码行数_笔记大全_设计学院(python100.com)......
  • 全栈性能测试工具:RunnerGo
    随着自动化测试技术的不断进步,自动化测试已成为企业级应用的重要组成部分。然而,传统的性能测试工具往往复杂、繁琐,让企业陷入了两难的境地。软件测试正逐渐从手动测试向自动化测试转变,各种自动化测试工具和框架层出不穷,极大地提高了测试效率和质量。近年来出现的敏捷开发方法使得软......
  • # github.com/coreos/etcd/clientv3/balancer/resolver/endpoint
    linux使用go连接etcd集群时报错:#github.com/coreos/etcd/clientv3/balancer/resolver/endpoint/root/go/pkg/mod/github.com/coreos/[email protected]+incompatible/clientv3/balancer/resolver/endpoint/endpoint.go:114:87:undefined:resolver.BuildOption/root/go/pkg/mod/g......
  • MySQL高级13-MySQL管理工具
    一、系统数据库MySQL数据库安装完成后,自带了四个数据库:mysql数据库:存储MySQL服务器正常运行所需要的各种信息如时区、主从、用户、权限等infomation_schema:提供了访问数据库元数据的各种表和视图,包含数据库、表、字段类型及访问权限等performance_schema:为MySQL服务器运......