IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Git、GitHub、Gitee使用手册(保姆级,初入职场必看) -> 正文阅读

[开发工具]Git、GitHub、Gitee使用手册(保姆级,初入职场必看)

一、Git

1. Git概述
  • 分布式版本控制系统
  • 记录修改历史记录,团队协作中的版本控制工具:
  • 集中式版本控制工具(SVN、CVS等),单一集中管理服务器,客户端连接服务器,取出最新文件或更新;存在不利于每个客户端的管理管控,服务器单点故障等问题;
  • 分布式版本控制工具(Git、Mercurial、Bazaar、Darcs等),本地多版本,推送到远程库,写代码前连接远程库克隆新版本,再基于自己本地库做版本控制,再推送到远程库;优点:断网也可以开发,每个客户端都是完整项目(包含历史记录),更安全;
2. 工作机制:
  • 工作区:代码存放的磁盘目录位置;
  • 暂存区:工作区的代码git add到暂存区,临时存储;
  • 本地库:暂存区代码git commit提交到本地库,有历史版本;(慎重提交)
  • 远程库:基于网络的Git远程代码仓库,从本地库push推送到远程库;
  • 局域网远程库:GitLab(公司代码不开源时,自己搭建GitLab服务器作为公司专用代码托管中心);
  • 互联网远程库:GitHub(外网),Gitee码云(国内网站);
3. Git安装
4. Git常用命令
  • 设置用户签名

git config --global user.name <用户名> 设置用户名
git config --global user.email <邮箱> 设置用户邮箱

git config --list或git config -l 查看已经配置的信息

  • 初始化本地库

git init 初始化本地库

  • 查看本地库

git status 查看本地库状态

  • 添加到暂存区

git add <文件> 工作区内容添加到暂存区

git rm --cached <文件> 取消暂存,删除暂存区文件

  • 提交到本地库

git commit -m “日志信息” <文件> 提交到本地库

  • 修改文件

修改文件 —> add到暂存区 —> commit到本地库
注:git对于已存在行修改的操作是删除行再增加行;

  • 查看历史记录
  • git reflog 查看引用日志信息(版本号前七位)
  • git log 查看详细日志,含完整版本号和各版本提交信息(提交者、邮箱)
  • git log --pretty=oneline 以更直观的形式进行打印
  • 版本穿梭
  • git reset --hard <版本号> 版本穿梭
  • git reset --hard HEAD^ 回退到当前版本的上一个版本
  • git reset --hard HEAD~n 回退n个版本
5. Git分支操作
  • 什么是分支
    在这里插入图片描述
    实际生产中,公司里会有好几个服务器用于不同环境(开发、测试、生产等),程序员不能在用户用的生产环境上开发,而是在开发分支上开发,不影响用户在生产分支上正常使用;
    并行推进多个任务,每个任务处于单独的分支,从而与开发主线分离开,不影响主线分支和其他分支开发、运行;

  • 分支操作

    • 查看分支

      git branch -v

    • 创建分支

      git branch <分支名>

    • 切换分支

      git checkout <分支名> 切换到指定分支上

    • 修改分支

    • 合并分支

      git merge <分支名> 将指定分支合并到当前分支上

    • 产生冲突
      合并分支时,两个分支对同一个文件的同一个位置分别进行了不同的修改,此时Git无法决定使用哪一个修改版本,必须人为决定;

    • 解决冲突

      • 回退merge前

      git reset --merge 回退到merge前状态

      • 人为删减代码 —> 添加到暂存区 —> 执行提交

      git add 文件名 删减后文件上传暂存区
      git commit -m “日志信息” 全部提交
      注:在合并过程中不能做部分提交,所以不能指定文件名

6. Git团队协作
  • 团队内协作
    团队内协作

  • 跨团队协作
    跨团队协作

二、GitHub

GitHub官网:https://github.com

1. 创建远程库

GitHub官网登陆状态下点击 new repository
注:一般远程库和本地库起同样的名字

2. 远程库操作
  • 创建远程库别名

    git remote -v 查看本地当前所有远程库地址别名

    git remote add <别名> <远程地址>
    注:一般别名和库名保持一致,减少歧义
    执行后创建了fetch和push两个别名

  • 推送Push本地分支到远程库

    git push -u <别名/链接> <分支名>
    注:Push的最小单位是分支,所以必须指定分支名

    • 如果使用的remote是远程库的Https链接,需要输入用户名和密码
      新版本不能使用账号-密码,只能使用账户-Token方式
      Token申请:头像 ?? Settings ?? Developer Setttings ?? Personal access tokens ?? Generate new Token ?? 输入名字、选择权限、生成 ?? 记录Token(只显示一次,切记本地备份)
    • 输入GitHub账号
    • 输入Token
  • 拉取Pull远程库内容

    git pull <别名/链接> <分支名>将指定远程仓库的指定分支更新同步到本地当前所在分支
    注:比如你在仓库中新建了一个分支,就需要先pull到本地

  • 克隆clone远程库到本地

    git clone <别名/链接> 将指定远程库项目克隆一份(含所有信息)到自己当前本地库中

  • pull和clone区别:

    • git clone是在本地没有版本库时,将远程库整个下载到本地,子操作为:拉取代码初始化本地库(clone过来的文件含有.git)、创建别名(自动remote add给克隆项目链接创建了别名origin);
    • git pull是在本地有版本库时,从远程库中获取最新版本数据,合并到本地,相当于git fetch加git merge;
    • git clone开源远程库时,不需要钥匙;
  • 邀请加入团队

    • clone过来的项目修改后,不能push ;( remote: Permission to 对方项目.git denied to <YourUserName>.)

    • 除非对方将你加入了该项目的团队:

      对方:Repository ?? Settings ?? Manage Access ?? Invite a collaborator ?? 邀请者UserName ?? Add <UserName> to this repository ?? 复制邀请函Pending Invite ?? 邀请函交给被邀请者

      你:拿到邀请函 ?? 浏览器访问 ?? 接受邀请Accept invatation ?? 正常push

3. 跨团队协作

协作者:

  • 在别人的项目GitHub页面fork一份到自己的远程库中:
    Fork ?? 起Repository name ?? Create fork
  • 从自己远程库clone一份到自己的本地库中:
    git clone ?? 修改 ?? 提交暂存区、本地库 ?? push到自己远程库
  • 或者直接GitHub页面修改提交
  • 发起Pull request:
    在自己远程库GitHub页面Pull requests ?? New pull request ?? 发送commit信息、comment ?? Create pull request

项目发起方:

  • 查看拉取请求:
    Pull requests ?? 选择拉取请求查看;
  • 查看comment和修改内容;
  • conversation交流
  • 合并对方代码到自己远程库中:
    Merge pull request ?? Confirm merge
4. SSH免密登录

ssh-keygen -t rsa -C “自己的邮箱地址”
注:会在.ssh目录下生成id_rsa私钥文件和id_rsa.pub公钥文件

  • 将公匙文件内容SSH Key保存到GitHub账号中

GitHub ?? 头像 ?? Setting ?? SSH and GPG keys ?? new SSH key ?? title起名 ?? 粘贴id_rsa.pub公匙 ?? Add SSH key

  • 使用
  • 测试SSH连接:ssh -T git@github.com
  • push或pull时使用SSH链接操作;

三、Idea集成GitHub

1. 配置Git忽略文件

目的:忽略不参与服务器部署运行的与项目实际功能无关的文件;
方式:

  • 创建忽略规则文件xxx.ignore(一般git.ignore)
    *.class、*.log、*.jar、*.idea等:

    # 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
    
    # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
    >hs_err_pid*
    >replay_pid*
    >```
    
  • 让~/.gitconfig文件引用.ignore忽略文件

    [core]
    	excludesfile=/Users/USER/git.ignore
    
2. 创建项目本地库

Idea项目中VCS工具栏 ?? Create Git Repository创建Git仓库

3. Idea 集成 Git
  • 添加暂存区
    红色文件——未被追踪,没有添加到暂存区:

    文件/项目右键 ?? Git ?? Add

  • 提交本地库
    绿色文件——已添加到暂存区,未被提交到本地库:
    • 提交单独文件:文件 ?? Git ?? Commit File
      在这里插入图片描述
    • 提交整个项目:项目右键 ?? Git ?? Commit Directory 提交目录 ?? 选择文件 ?? 键入提交信息 ?? 提交
      在这里插入图片描述
  • 修改文件
    蓝色文件——被追踪过,但是发生了修改

    右键文件 ?? Add(因为之前追踪过,可跳过Add直接提交) ?? Commit

  • 版本控制
    • 查看版本:Idea左下角Git底栏 ?? Log日志 ?? 查看版本
    • 切换版本:版本右键 ?? Checkout Revision ‘版本号’ 签出修订指定版本 / Checkout master
  • 分支操作
    • 创建分支:
      * 1?? 项目右键 ?? Git ?? Repository ?? Branches ?? new Branch
      * 2?? Idea右下角master ?? New Branch
    • 切换分支:
      Idea右下角master ?? 选择分支 ?? Checkout
    • 合并分支:
      • 正常合并:
        Idea右下角master ?? 选择分支 ?? Merge into Current将指定分支合并到当前分支上;
        合并前:在这里插入图片描述
        合并后:在这里插入图片描述
        注:绿色hot-fix标签:hot-fix所在版本,绿色master标签:master所在版本
        黄色master标签:当前master分支Head指针所在位置;
      • 合并冲突:
        当我们两个分支对于同一文件同一位置都做出了新版本的更改时,会出现: 在这里插入图片描述
        此时选择Merge into Current后会发生冲突:在这里插入图片描述
      • 解决冲突:
        点击Merge ?? 人为选择代码 ?? Apply
        合并成了一个版本且自动提交到了本地库: 在这里插入图片描述
4. Idea 集成 GitHub
  • 设置GitHub账号
  • Setting ?? Version Control ?? GitHub
    在这里插入图片描述
  • ?? Log In via GitHub… 跳转浏览器登录GitHub授权
    ?? Log In with Token… 输入在账号中申请的Token
    注:两种方式皆可

  • Share项目到GitHub

    Git ?? GitHub ?? Share Preoject in GitHub ?? 输入远程库名、公开 / 私有、别名、通过哪个账号分享
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述注:这个操作相当于手动在GitHub里Create了远程库,并将项目Push到了远程库

  • 推送Push本地分支到远程库

    • 项目右键 ?? Git ?? Push
    • Git工具栏 ?? Push
      在这里插入图片描述这里带下划线的远程仓库名处可以点击选择连接方式(默认使用Https链接),选择Define Remote增加别名来使用SSH链接;
      另外,分支名为Push远程库中的目标分支,默认同名(GitHub中不存在则新建),可以点击修改来自定义:
      注意:Push的版本比远程库中的低时会被拒绝,所以实际生产中成熟的做法是,在动手改本地代码之前,先检查远程库和本地库代码的区别,如果本地代码版本已经落后,要先Pull拉取远程代码更新本地代码到最新后,再写业务再提交和Push;
  • 拉取Pull远程库内容

    右键 ?? Git ?? Pull选择要拉取的别名链接 ?? 选取要拉取的分支
    在这里插入图片描述
    注意:Pull拉取远程库代码时,会包含Merge操作,所以会涉及合并冲突的场景,这时需要手动解决冲突才能拉取成功;

  • 克隆clone远程库到本地

    • 在打开Idea时,在初始化页面选择Get from VCS
      在这里插入图片描述
    • 在URL栏输入远程库的HTTPS🔗或SSH🔗 在这里插入图片描述
    • 或者直接从绑定GitHub账号下选择远程库进行克隆;
    • 克隆成功后,会将远程库的代码包括分支、版本信息、日志信息都拉取过来,并且创建本地库,和自动起别名;

四、Gitee码云

必要性:

GitHub服务器在国外,🧱对国内用户不友好,Gitee码云服务器在国内,是开源中国基于GitHub推出的Git代码托管中心,使用方式和GitHub几乎一样,无🧱,操作更快更稳定,而且是中文版;

码云官网:https://gitee.com

1. 码云创建远程库

Gitee官网登陆状态下点击 + ?? 新建仓库
注:其他步骤和GitHub一样,参见上一章在这里插入图片描述注:截止目前最新的gitee不能直接创建公开的仓库了,必须在创建仓库后通过「仓库设置」修改为公开;

2. Idea集成Gitee码云
  • Idea的Plugins中安装Gitee插件
    在这里插入图片描述
  • 设置Gitee账号
    Setting ?? Version Control ?? Gitee ?? + Log In
    在这里插入图片描述

?? Log In via Gitee… 使用邮箱-密码登陆Gitee
在这里插入图片描述
?? Log In with Token… 输入在Gitee账号中申请的Token
注:两种方式皆可

  • Share项目到Gitee(参考GitHub)

  • 推送Push本地分支到Gitee远程库

    • Push ?? 选择Define Remote 增加别名来使用码云的Https或SSH链接进行Push;
  • 拉取Pull远程库内容(参考GitHub)

  • 克隆clone远程库到本地(参考GitHub)

3. 码云连接GitHub进行代码复制和迁移

特色功能:导入GitHub的项目到Gitee实现迁移;

  • 新建仓库时选择导入:
    在这里插入图片描述
  • URL处输入GitHub项目的HTTPS链接,即可导入:
    在这里插入图片描述
  • 优点:克服了GitHub网络原因可能导致的无法访问使用的问题,同时还可以便捷地强制更新Gitee上导入的GitHub项目,让它和GitHub保持同步;

在这里插入图片描述

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-04 07:29:38  更:2022-05-04 07:29:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:47:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码