快速上手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

相关推荐
特种加菲猫1 小时前
构建完整工具链:GCC/G++ + Makefile + Git 自动化开发流程
linux·笔记·git·自动化
咚咚?5 小时前
基于gitlab 构建CICD发布到K8S 平台
容器·kubernetes·gitlab
Franklin12 小时前
VS 版本更新git安全保护问题的解决
git
我是一只代码狗16 小时前
idea中合并git分支
git
我是一只代码狗16 小时前
idea中使用git
git·gitee·github
恋喵大鲤鱼16 小时前
git restore
git·git restore
李少兄17 小时前
Git Commit Message写错后如何修改?已Push的提交如何安全修复?
git·安全
Fireworkitte17 小时前
git stash
git
产品经理独孤虾18 小时前
GitHub Copilot:产品经理提升工作效率的AI助手
github·copilot·产品经理·原型设计·ai工具·效率提升·prd
杜莱19 小时前
IDEA 安装AI代码助手GitHub Copilot和简单使用体验
人工智能·github·intellij-idea