Git 使用

一、Git概述

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

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

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

    • 分布式版本控制工具

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

  • Git发展历史

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

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

  本地仓库工作如图所示

  远程仓库交互

  • 基本概念
    • 本地仓库:在本地主机上的一个代码库,可以独立存在,也可以与远程仓库关联
    • 工作区:对任何文件的修订都先放在工作区,工作区不与任何仓库分支进行关联
    • 暂存区:把修订的文件从工作群经add添加后与某一个仓库分支进行关联,只有进入暂存区的文件才能commit给本地仓库
    • 远程仓库:在局域网或互联网的一个主机,用于存放代码库的主机或平台,如GitHub,码云
    • 分支:代码存放在仓库,默认是主分支master,可以在主分支基础上创建很多子分支,如develop,test等
    • 一个文件夹包含.git隐藏目录,说明此文件目录使用Git版本管理,.git存储了很多配置信息、日志信息和文件版本信息、暂存区信息等。index文件就是缓存区,也可以叫stage,用于临时保存修改文件

二、 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 查看详细日志信息,有一个完整的版本号
  • git log --all --graph --decorate: 图形可视化历史信息
  • git diff <filename>: 显示您相对于暂存区域所做的更改
  • git diff <revision> <filename>: 显示版本之间文件中的差异
  • git checkout <revision>:更新HEAD和当前分支

 

 

 4. 修改文件

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

 

 

 5. 版本信息维护

版本查看 git reflog; git log   

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

 

 

 三、Git分支操作

  • 分支管理:将工作从开发主线上分离,用于进行重大的bug修改、新功能开发等,不影响开发主线
    • master分支,主分支
    • test分支,测试分支,进行预发测试
    • develop分支,从test创建分支,如果没有,从master创建分支,作为主要的开发分支
    • hotfix(bugfix)分支,作为线上bug修复使用,修复完成后需要合并到master、test、develop分支
    • 查看分支,带* 的分支表明当前所在分支
  • 查看当前分支  git branch
  • 新建分支  git branch 分支名
  • 创建并切换分支 git checkout -b dev
  • 切换分支 git checkout  分支名
  • 修改分支 : 修改文件--提交到暂存区--提交到本地库分支上
  • 删除分支  git branch -d 分支名
  • git mergetool: 使用一个奇特的工具来帮助解决合并冲突
  • git rebase: 将一组分支复制到本地和远程的一组分支上
  • git rebase -i 交互式复制操作 

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

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

  • 冲突分支合并 

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

  需要手动解决冲突

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

 

 

 五、git远程仓库操作

  • github上 创建远程库
  • 创建远程仓库别名 
    • 查看当前所有远程地址别名  git remote -v       
    • 创建别名    git remote add 别名 远程地址
  • 同步远程仓库:http不要配置,但是每次提交代码和下载时需要输入用户名和密码,而SSH配置好会产生密钥,无须再次配置
    • SSH协议:,将所有传输数据加密,需要先生成密钥,再在GitHub上配置公钥Secure Shell
    • 生成SSH密钥,使用Git Bash.exe执行ssh-keygen -t rsa ,在window本地用户.ssh目录C:\Users\用户名.ssh下面生成如下名称的公钥和私钥
    • 在key部分将id_rsa.pub文件内容添加进去,然后点击“Add SSH key”按钮完成配置 
  • 推送本地分支到别名的远程地址上   git push 远程地址/别名 本地分支:远程分支 ,
    • -u 记住推送地址及分支,下次推送只需要输入git push即可,第一次输入需要用户名和密码,以后不用,window系统会帮助我们记住用户名和密码,在控制面板的凭据管理器中
    • 如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
    • 我们本地仓库的版本必须大于远程仓库的版本,否则push失败。
  • 拉取远程分支到本地仓库   git pull 远程地址/别名 远程分支:本地分支,拉取动作相当于fetch +merge,将远程分支拉取并与本地分支合并,
    • fetch 仅仅获得远程昂库的最新内容,不会自动合并
    • pull会自动合并,相当于 git fetch 之后git merge
  • 克隆远程仓库到本地仓库  git clone 远程地址   相当于拉取代码,初始化本地仓库并创建别名origin
  • 当我们需要clone后想把内容推送到别人的远程仓库时,不可以直接推送,而是需要别人在相应的远程仓库的settings里面操作,填写邀请队友的账号。当我们用git clone的时候,不仅将对方的东西复制过来,而且连对方远程仓库的别名也复制过来
  • git clone是在没有本地仓库的基础上clone别人的东西,而git pull则是在有本地仓库的基础上拉取代码到本地。git clone 只是第一次参与开发时用,以后都是用git pull命令
  • 移除无效的远程仓库git remote rm <shortname>
  • git branch --set-upstream-to=<remote>/<remote branch>: 建立本地和远程分支机构之间的通信
  • 撤销
    • git commit --amend 编辑提交的内容/消息
    • git reset HEAD <file> 取消文件
    • git checkout -- <file> 忽略该文件的改变,恢复到前次保存的内容

团队内开发协作

  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 版本号
  • 重置文件到修改前选择文件,右键菜单:选择Git--->Rollback

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一样

 其他操作可以参考 https://mdnice.com/user/378837798108

posted @   forever_fate  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示