快速上手Git

Git相关概念

Git是一个开源的分布式版本控制系统,由Linus Torvalds在2005年创建,用于有效、高速地处理从小到大的项目版本管理。它是由 Linux 之父 Linus Torvalds 开发的,并已经成为了现代软件开发领域中最流行的版本控制系统之一。

git的工作模式

不同于SVN的集中式两层模式,Git在整体架构上是三层数据交换,即workspace、Respository、Remote。

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

Workspace:工作区

工作区是你当前电脑中的一个目录,它包含了你正在工作的项目的文件。也就是我们本地操作的文件,处于工作区的文件的更改在提交之前不会记录在Git的版本历史中。

Index / Stage:暂存区

暂存区是工作区和仓库区之间的一个中间区域,用于准备下一次提交。我们日常使用时,新增文件,再未执行add命令之前,它是属于工作区的,当add之后,则是属于暂存区。

Repository:仓库区(或本地仓库)

这是git在本地生成的一片区域,用来存放执行了commit之后的内容,Git用仓库区来保存项目历史,这里包含了项目的完整历史记录,包括所有的提交、分支、标签等。

仓库区是本地的,不与远程仓库直接交互。也就说在未进行push之前,你的所有改动、调整都还是在你的本机中,并未同步到远端,也不会影响其他人

Remote:远程仓库

远程仓库是托管在服务器上的版本库,主要用于多个开发者之间的协作,这里远程仓库才相当于SVN的服务端,可以理解为最终存放稳定代码的地方。

总体来看,git进行文件管理的流程是:

  • 先在本地初始化本地仓库(包含了暂存区)
  • 编辑文件
    • 协作场景:使用fetch或clone,将远程仓库内容同步到本地仓库中,然后checkout到工作区
    • 新增场景:直接在本地(工作区)新增文件
  • 将文件 add 到 暂存区
  • 使用commit,将暂存区文件同步到本地仓库
  • 使用pull,将本地仓库中的内容同步到远程仓库

git的分支

相比于svn的一个分支即一个目录的管理方式,git的分支管理则更为强大。

  • master:主分支,负责记录上线版本的迭代,该分支代码与线上代码是完全一致的。
  • develop :开发分支,该分支记录相对稳定的版本,所有的 feature 分支和 bugfix 分支都从该分支创建。
  • release :发布分支,用于代码上线准备,该分支从 develop 分支创建,创建之后由测试人员发布到测试环境进行测试,测试过程中发现 bug 需要开发人员在该 release 分支上进行 bug 修复,修复完成自测没问题后,在上线之前,需要合并该 release 分支到 master 分支,同时需要再合并该分支到 develop 分支。

平时开发工作中,会根据需要由开发人员创建几类临时分支:

  • feature :特性(功能)分支,用于开发某个特定的功能,该分支从 develop 分支创建 ,不同的功能创建不同的功能分支,开发完成自测没问题后,需要合并该分支到 develop 分支,之后删除该分支。
  • hotfix :热修复分支,用于修复某个紧急的 bug,该分支只有在紧急情况下使用,该分支从 master 分支创建,用于紧急修复线上的 bug,修复完成自测没问题后,需要合并该分支到 master 分支,以便上线,同时需要再合并该分支到 develop 分支,之后删除该分支。

Git常用实操

安装连接Git

安装

首先本地安装Git客户端,直接去 Git 官网下载对应系统的软件了,下载地址为 git-scm.com

下载后傻瓜式 "next" 安装git即可。

安装后,可在菜单路径找到:

右键随处打开git的命令行,执行 git -v后,出现版本,至此,客户端安装完成。

远程仓库认证连接

进行全局配置

首先,设置全局账号、邮箱配置

javascript 复制代码
//--global 表示对所有git工程都有效
//设置用户名:
git config --global user.name 用户名 
//设置邮箱: 
git config --global user.email 邮箱

此部分的配置存放在当前用户主目录下:C:\Users\admin\.gitconfig下 ,可直接进行修改

配置ssh key

本地Git仓库和GitHub仓库之间的传输是通过SSH加密传输的,所以需要配置ssh key

打开git客户端命令行

bash 复制代码
ssh-keygen -t rsa -C ${上一步配置的邮箱}

生成ssh key 文件,一般存放于用户的根目录下。

.ssh目录下存放SSH Key的秘钥对:id_rsa是私钥,不能泄露;id_rsa.pub是公钥,可以公开。

git仓库认证

这里我以外网公共服务Gitee - 基于 Git 的代码托管和研发协作平台 作为远端代码管理仓库为例,将本地的git与远端关联。

登录Gitee后,找到个人账号设置,找到公钥SSH:

根据要求将id_rsa.pub文件内容填写到相应位置

最常使用

拉取项目

初始化本地仓库

在拉取远端仓库里的项目之前,需要先在本地新建或者找一个空的文件夹,用来充当本地仓库

对选定的文件夹执行初始化命令:

bash 复制代码
git init

初始化后,所选文件夹下会出现.git隐藏目录,此时说明初始化本地仓库完成

进行项目拉取

此时你的团队团队告知项目远程仓库的地址,需要将项目从远程仓库拉取到本地仓库

bash 复制代码
git clone https://XXXXXX/xxx/xx.git

分支操作

进入到你拉取的项目目录后:

查看分支
bash 复制代码
//查看本地仓库和远程仓库对于该项目的全部分支
git branch -a 

//查看远程仓库该项目的全部分支
git branch -r 

绿色则代表本地记录了该分支,红色则表示该分支目前仅在远程仓库,并未到本地仓库

切换分支

看到项目后,我们一般是master分支(main分支),我们开发一般是使用feature分支,此时需要切换所在分支,使用checkout命令

javascript 复制代码
//单纯切换为远端的分支
git checkout [远端分支名]

//拉取远端分支到本地仓库,并且自定义该分支在本地仓库中的名称,然后切换到该分支
git checkout -b [本地分支自定义名] [远端分支名]

更新项目

  • 远程分支被别人更新了,你需要更新代码
bash 复制代码
$ git pull origin <branch-name>
  • 本地有修改,不能直接git pull
bash 复制代码
$ git stash # 工作区修改暂存
$ git pull  # 更新分支
$ git stash pop # 暂存修改恢复到工作区

提交

首先,需要查看文件的状态,可以在项目目录下使用git status命令:

这个命令会显示当前工作目录中未提交(uncommitted)的更改,包括以下几个方面:

  1. 未跟踪的文件(Untracked files):这些是新创建的文件,Git 还没有将其纳入版本控制。(如果想提交,需要先执行 git add,再commit)
  2. 已修改的文件(Modified files):这些文件已经被修改,但尚未添加到暂存区(提交时,直接commt即可)。
  3. 已暂存的文件(Staged files):这些文件的更改已经被添加到暂存区,准备在下一次提交时被包括进去。(已经commit的文件)
  4. 冲突的文件(Conflicted files):如果在合并过程中出现冲突,这些文件会在解决冲突之前显示为冲突状态。
bash 复制代码
# 查看目录下文件状态
$ git status


# 执行add后,文件状态改变为已跟踪未提交
$ git add --all # 当前项目下的所有更改
$ git add .  # 当前目录下的所有更改
$ git add xx/xx.py xx/xx2.java  # 添加某几个文件

# 执行commit 后,文件状态改为已提交
$ git commit -m"<这里写commit的描述>"


# 执行push 后,文件状态为已推送
$ git push -u origin master #第一次需要关联上
$ git push #之后再推送就不用指明应该推送的远程分支了

推荐一个git命令练习工具: Learn Git Branching

相关推荐
Anlici1 小时前
大厂怎么用Git命令
git
用户2404817096211 小时前
Git 使用指南:版本控制与团队协作的艺术
github
学习路上_write2 小时前
FPGA/Verilog,Quartus环境下if-else语句和case语句RT视图对比/学习记录
单片机·嵌入式硬件·qt·学习·fpga开发·github·硬件工程
谎言西西里2 小时前
Git入门指南:掌握基本概念与日常操作
git·github
程序员buddha3 小时前
git版本工具使用教程
git
Algorithm15763 小时前
mac上使用docker搭建gitlab
macos·docker·gitlab
tian-ming8 小时前
技术栈2:Git分布式版本控制工具
git
算你狠 - ZGX9 小时前
Git - 日志
git
CherishTaoTao9 小时前
Git别名设置
大数据·git
Python私教9 小时前
git配置用户信息
git