首页 > 其他分享 >Git 概述

Git 概述

时间:2023-02-12 16:56:59浏览次数:40  
标签:git 仓库 Git 概述 本地 远程 分支

一、Git概述

  Git 是一个免费开源的分布式版本控制系统,管理代码的工具,具有廉价的本地库,可以储存在本地磁盘上,方便的暂存区域和多个工作分支等特性,性能由于Subversion,CVS,Perforce,和ClearCase等版本控制工具

  • 版本控制: 记录文件内容变化,以便将来查阅特定版本的修订情况,记录文件修改历史记录,方便版本切换
    • 集中式版本控制系统

   CVS、SVN等,有一个中央服务器,保存所有文件的修订版本,开发者通过客户端连到服务器获取最新文件或提交更新,管理员可以掌控每个开发者的权限,只需维护中央服务器控制版本,每个开发者可以在一定程度上看到其他人的工作。一旦中央服务器出现单点故障,则其他开发者无法提交更新,无法协同工作

    • 分布式版本控制工具

  Git、Mercurial、Bazaar、Darc...客户端提取镜像生产本地库,每个客户端都记录的是完整的项目,服务器断网时也可以进行开发, 本地进行版本控制

  • Git发展历史

  • 代码托管中心--远程仓库

  基于网络服务器的远程代码仓库,在局域网下--GItLab(公司搭建属于自己的远程仓库), 在互联网上---GitHub ,Gitee

  本地仓库工作如图所示

二、 Git使用

1. 设置用户签名

  git首次安装必须设置用户签名,否则无法提交代码,签名用于区分不同操作者身份,与登录的Github或其他代码托管中心的账号没有关系

2. 初始化本地库查看状态

在需要管理的地方进行初始化 git  init建立本地仓库

查看仓库状态(现在的分支以及提交的历史) git status

·目前红色的hello.txt文件存在于工作区,需要使用git  add 命令提交到暂存区,git commit提交到本地仓库

3. 提交到暂存区、本地库

  • git add 文件  提交文件到暂存区
  • git rm --cached 文件  删除暂存区的文件
  • git commit -m "版本日志信息"  提交到本地库,7位的字符码是简短版本号
  • git reflog 查看版本日志信息
  • git log 查看详细日志信息,有一个完整的版本号

 

 

 4. 修改文件

  修改--提交到暂存区--提交本地库

 

 

 5. 版本信息维护

版本查看 git reflog; git log   

版本穿梭 git  reset --hard 版本号,此时master 分支移到了这个版本号上,可以看到git/refs/heads/master

 

 

 三、Git分支操作

  • 查看当前分支  git branch
  • 新建分支  git branch 分支名
  • 切换分支 git checkout  分支名
  • 修改分支 : 修改文件--提交到暂存区--提交到本地库分支上

  • 普通分支合并  git merge 要合并的分支 ,相当于把要合并的分支合并到当前分支上

master 分支没有修改,只有hotfix分支修改了,所以合并的是一个修改

  • 冲突分支合并 

冲突原因:两个分支在同一个文件的同一个位置有两套完全不同的修改,git无法决定使用哪一个,必须人为指定新代码内容

需要手动解决冲突

 

 

 分支上保留的是以前的修改,并未改动

 

 

 五、git远程仓库操作

  • github上 创建远程库
  • 创建远程仓库别名 
    • 查看当前所有远程地址别名  git remote -v       
    • 创建别名    git remote add 别名 远程地址
  • 推送本地分支到别名的远程地址上   git push 远程地址/别名 本地分支:远程分支 ,
    • -u 记住推送地址及分支,下次推送只需要输入git push即可,第一次输入需要用户名和密码,以后不用,window系统会帮助我们记住用户名和密码,在控制面板的凭据管理器中
    • 如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
    • 我们本地仓库的版本必须大于远程仓库的版本,否则push失败。
  • 拉取远程分支到本地仓库   git pull 远程地址/别名 远程分支:本地分支,拉取动作相当于fetch +merge,将远程分支拉取并与本地分支合并
  • 克隆远程仓库到本地仓库  git clone 远程地址   相当于拉取代码,初始化本地仓库并创建别名origin
  • 当我们需要clone后想把内容推送到别人的远程仓库时,不可以直接推送,而是需要别人在相应的远程仓库的settings里面操作,填写邀请队友的账号。当我们用git clone的时候,不仅将对方的东西复制过来,而且连对方远程仓库的别名也复制过来
  • git clone是在没有本地仓库的基础上clone别人的东西,而git pull则是在有本地仓库的基础上拉取代码到本地。git clone 只是第一次参与开发时用,以后都是用git pull命令

团队内开发协作

  A在自己的计算机中创建本地仓库,A在github中创建远程仓库,A将本地仓库推送到远程仓库
  B克隆远程仓库到本地进行开发,B将本地仓库中开发的内容推送到远程仓库,A将远程仓库中的最新内容拉去到本地

跨团队开发

 

 

 

 

  程序员 C fork仓库:把对方远程仓库的内容复制到自己的远程仓库, 程序员 C 将远程仓库克隆在本地进行修改,程序员 C 将仓库推送到自己的远程仓库,

  程序员 C如果想要把修改内容发给对方,则需要点击pull request命令,然后等待原远程仓库作者审核,原远程仓库作者合并代码即可

SSH免密登录

生成秘钥:ssh-keygen
秘钥存储目录:C:\Users\用户\\.ssh
公钥名称:id_rsa.pub
私钥名称:id_rsa

  使用ssh-keygen命令,然后生成秘钥,私钥保存在自己的电脑中,公钥发布在自己的远程仓库中(在settings中找到设置ssh的地方,将公钥的内容复制到那里),然后复制相应仓库的ssh地址,然后正常操作就可以实现免密码登录。

六、 IDEA 集成Git

1. 配置Git忽略文件

忽略原因: 这些文件与项目实际功能无关,不参与服务器上部署运行,忽略以屏蔽IDE工具之间的差异

操作:

创建忽略规则文件xxx.ignore,如git.ignore, 把该文件存放到c:/user/asus/,文件内容如下

# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

hs_err_pid*

.classpath
.project
.settings
target
.idea
*.iml

在.gitconfig文件中引用忽略配置文件,windows 默认是反斜线需要改为正斜线

 

2. 定位Git程序

  IDEA==>File==>Settings==>Version Control==>Git==> Path to Git executable 找到Git安装目录bin下的git.exe==>test得到版本信息==》ok 

3. IDEA 初始化本地仓库并提交到暂存区

  • 初始化本地库:VCS==>Input into Version Control==>Create Git Repository==>选中自身项目的根目录
  • 提交到暂存区:选中提交文件==》右键==》Git==》Add
  • 提交到本地仓库:选中文件==》右键==》Git==》 Commit Directory==》填写提交信息并提交

4. 查看版本信息,切换版本

  • IDEA左下角 Version Control==>log 查看提交版本信息,HEAD表明当前所在分支 
  • 切换版本:选中版本右键==》checkout Revision 版本号

5. 分支操作

  • 创建分支: Git==>Repository ==> Branches==>New Branch或者 IDEA 右下角选择Git:当前分支 建立新分支
  • 普通分支合并

  

  • 冲突分支合并:需要手动修改以解决冲突并提交

6. IDEA进行Github远程仓库操作

  • IDEA==》settings==》pluguins==》选择Git/GIthub/Gitee插件
  • 设置Github账号:使用口令登录成功几率大 , IDEA==File==Setting==Github==use Token (使用Github的账号生成一个口令:Setting==Developer settings==Personal access token==权限全选==generate token ==复制口令,口令一旦刷新就会消失,所以需要尽快保存)==粘贴口令==login
  • 分享本地仓库到远程仓库:  VCS==Import into Version Control==Share project on github ==输入远程库的名字,别名,描述信息==share
  • 推送代码:VCS==>Git==>Push或者右键==》Git==》repository ==》push 默认用的是http传输,可以更改为ssh,需要复制ssh 命令,然后将push的远程分支地址改为ssh口令
  • 拉取代码:VCS==>Git==>Pull
  • 克隆代码:打开IDEA==》get from version control ==>选择Repository输入URL和存放位置

注意:push 是将本地库代码推送到远程库,如果本地库代码和远程库代码版本不一致,push操作失败,因此push操作一定要保证本地库的版本比远程库的版本高

   在改本地代码之前,需要先拉取pull一下远程仓库的最新版本在进行修改推送操作

     如果远程代码和本地代码不一致,pull会自动合并,如果自动合并失败,需要手动解决冲突

七、自建代码托管平台GitLab

  GitLab 使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能,使用Git作为代码管理工具并在此基础上搭建的web服务

GitLab 官网安装

  • 准备一个系统为Centos7以上版本的服务器,内存4G,磁盘50G
  • 关闭防火墙,配置好主机名和IP,保证服务器可以上网

 

 

 

 

 

 

 

 

 初始化gitlab

 

 

 启动服务

 

 

浏览器访问gitlab

  • 在浏览器输入IP地址或主机名,访问后有一个默认root账号, 需要修改密码

IDEA集成gitlab

  • IDEA安装gitlab插件
  • 连接gitlab,其余操作和github一样

 

标签:git,仓库,Git,概述,本地,远程,分支
From: https://www.cnblogs.com/forever-fate/p/17112021.html

相关文章

  • ubuntu 安装 github desktop
    原文:https://gist.github.com/berkorbay/6feda478a00b0432d13f1fc0a50467f1sudowgethttps://github.com/shiftkey/desktop/releases/download/release-3.1.1-linux1/Gi......
  • 776~777 JSTL概述,常用标签
    JSTL1.概念:JavaServerPagesTagLibrary JSP标准标签库是由Apache组织提供的开源的免费的jsp标签      <标签>2.作用:用于简化和替换jsp页......
  • JSON概述与JSON语法定义
    JSON的概念概念:JavaScript Object Notation JacaScript对象表示法json现在多用于存储和交换文本信息的语法进行数据的传输JSON比XML更小更快,更易解析 ......
  • 类和对象概述
    面向过程与面向对象区别、类和对象的概念、对象的创建和使用,对象的内存解析的简要介绍。Author:MsuenbDate:2023-02-07面向过程与面向对象面向过程和面向对象都是......
  • 计算机网络原理-1.计算机网络概述
    计算机网络的基本概念计算机网络是互连的、自治的计算机的集合协议协议是玩过通信实体之间再数据交换过程中需要遵循的规则或约定,包括3个基本要素语法-实体之间交......
  • 770~771 EL概述,运算符
    El表达式1.概念:ExpressionLanguage表达式语言ExpressionLanguage是JSTL1.0为方便存取数据所自定义的语言。2.作用:替换和简化jsp页面中java代码的......
  • EL_empty运算符&隐式对象pageContext与JSTL_概述
    EL_empty运算符&隐式对象pageContext3.隐式对象: el表达式中有11个隐式对象 pageContext:......
  • 深入解读.NET MAUI音乐播放器项目(一):概述与架构
    系列文章将分步解读音乐播放器核心业务及代码:深入解读.NETMAUI音乐播放器项目(一):概述与架构深入解读.NETMAUI音乐播放器项目(二):播放内核深入解读.NETMAUI音乐播放器项......
  • GitLab CICD Day 22 - 整理重复的工作(extends) ??? 待测试
    stages:-testing-build-deploy_qa-deploy_to_staging.deployvariables:user:ericdeploy_to_qa:extends:.deploystage:deploy_qa......
  • GitLab CICD Day 23 - 手动部署 Production 环境
    从开发到上线流程:部署到Prodvariables:user:ericpwd:Admin@1234harbor:http://172.16.128.215:8080image_hellocat:172.16.128.215:8080/hive/hellocatstages:......