Git入门:从零开始的版本控制之旅

简介: 本文介绍了基于Git的版本控制基础知识,包括初始化仓库、提交变更、分支管理和协作开发等关键概念。通过学习这些操作,你将能够高效地跟踪代码变化,保护代码质量,并与团队成员协作开发。这是一次深入浅出的Git入门之旅,让你轻松掌握版本控制的精髓。

一、个人实验环境

1、虚拟机VMware安装Ubuntu
2、ubuntu安装openssh-server:

    sudo apt-get install openssh-server

3、ubuntu安装最新版git:

    sudo add-apt-repository ppa:git-core/ppa
    sudo apt update
    sudo apt-get install git

4、生成本地密钥(主要为了生成.ssh目录):

ssh-keygen -t rsa

5、创建authorized_keys文件:

touch authorized_keys

6、本地windows安装git
7、本地安装xshell软件

二、Git版本控制概述

定义:
git是分布式版本管理工具,github是免费的代码托管平台,一般公司自己有代码托管平台,如gitlab。

git的作用:
1、保存文件的所有修改历史记录
2、可随时查看历史版本记录
3、可回退到指定历史版本
4、对比不同版本的文件差异
5、使用版本号进行区分

git的意义:
1、多人协作开发大型项目。
2、为协作开发而生,大势所趋。
3、每个人都从代码库下载代码,然后修改,将所有人的代码合并后统一上传到平台。
4、每个公司都有自己的代码托管平台,github是免费的、开源的托管平台。

三、仓库

3.1、创建远端仓库

在远端创建裸仓库,实验环境就是虚拟机的Ubuntu中创建。

mkdir mathlib
cd mathlib
git init --bare

3.2、本地仓库

拉取远端仓库到本地,格式如下:

git clone ssh://username@ipaddress:path name
# 例如:git clone ssh://FLY@192.168.1.1:/home/wokspace/mathlib myMathlib

如果不指定文件夹名称,则将会创建一个和远端仓库同名的文件夹。拉取的文件夹名称可以随意修改,里面的.git目录是本地仓库

四、相关配置

4.1、配置git用户名和邮箱

#局部配置
git config user.name name
git config user.email email@email.com
#全局配置
git config --global user.name name
git config --global user.email email@email.com

局部配置 只会在当前仓库目录有效,查看配置信息使用:git config --local -l。配置信息保存在当前仓库的.git/config。
全局配置 可以对所有仓库目录有效,查看配置信息使用:git cofig -l。配置信息保持在系统盘的用户目录里的.git/config

4.2、设置免密访问远端仓库、

使用ssh协议,需要生成公钥和私钥;公钥放在远端服务器,私钥用于登录验证。使用如下命令生成公私钥:

ssh-keygen -t rsa

产生的文件位于系统盘的用户目录里的.ssh文件夹,id_rsa.pub就是公钥文件,id_rsa就是私钥文件。将id_rsa.pub里的内容复制到远端服务器的.ssh/authorized_keys里即可免密访问远端仓库。

五、git命令基础

5.1、查看状态

git status

untracked files......表示文件还没被管理

5.2、添加到暂存区--index

SVN是没有暂存区的,git可以把多次修改放在暂存区。

# 格式:
git add filename
# 示例:
# 当前的所有修改添加到暂存区
git add .
# 指定文件添加到暂存区
git add newfile.c api.h

5.3、提交到本地仓库--repository

一般格式:

git commit file -m "message"

示例:将当前暂存区文件全部提交的本地仓库管理。

git commit . -m "feat:new file"
  • .表示当前目录所有文件,也可以指定文件
  • -m 跟着字符串表示提交描述

    5.4、推送到远端仓库--remote

    git push origin master
    
  • origin是服务器地址的别名
  • master是分支

    5.5、拉取远端仓库到工作目录--workspace

    git pull
    

    5.6、查看提交日志

    # 查看最近记录
    git log
    #查看所有历史
    git reflog
    

    5.7、head符号引用

    在 HEAD 后面加 ^ 或者 ~ 就是以 HEAD 为基准,来表示之前的版本,因为 HEAD 被认为是当前分支的最新版本,那么 HEAD~ 和 HEAD^ 都是指次新版本,也就是当前版本的上一个版本,HEAD~~ 和 HEAD^^ 都是指次次新版本,也就是倒数第三个版本,以此类推。也可以后面跟数字指定后退多少个版本。

    六、git逆向操作命令

    6.1、暂存区到工作区index-->workspace

    git restore -S filename
    
    撤消工作区的修改返回到最近一次add(暂存区)的版本或者最近一次commit的版本

    6.2、本地仓库到暂存区repository-->index

    git restore --soft version
    
    示例:回退到上一个版本。
    git restore --soft head^
    
    head^表示上一次的提交。

    6.3、本地仓库到工作区 repository --> workspace

    git restore --mixed version
    
    示例:回退到上一个版本。
    git restore --mixed head^
    
    head^表示上一次的提交。

    6.4、本地仓库中删除提交repository --> NULL

    git restore --hard version
    # 删除上一个版本
    git restore --hard head^
    
    head^表示上一次的提交。

    6.5、restore不带参数默认是--mixed

    git restore vesrion
    
    等同于
    git restore --mixed version
    

    6.6、工作区撤销修改workspace--> NULL

    # 放弃工作区所有修改
    git checkout .
    # 放弃指定文件修改
    git checkout --file
    # 放弃暂存区和工作区的所有修改
    git checkout -f .
    
    类似于重置,清除修改标志,撤销已有文件修改的地方,但不会删除新增的文件(需要手动去删除)。

    七、git 本地仓库整理

    7.1、整理上次提交

    git commit –-amend
    
    把当前暂存区里的内容合并到上一次commit里,而且还可以修改上一次提交的message信息

    7.2、修改任意的提交

    # 修改hash1之后的提交信息(不包含hash1)
    git rebase -i hash1
    # 修改hash1到hash2的提交信息(不包含hash1)
    git rebase -i hash1 hash2
    
    这是一种左开右闭的区间,hash1 hash2分别表示版本号,如果后面不跟版本号,那么默认是最近的两次,此时进入vi编辑:
      输入相应参数,比如输入p和e
      然后编辑要修改的文件
      再通过add添加到暂存区
      再通过 git commit --amend整理进去
      最后 git rebase --continue完成整理
    
    如果在修改前所有的commit都已经push到远程仓库的话,需要使用:
    git push --force
    
    强制推送到远程仓库。
    注意: 一定是个人分支整理,否则可能会修改别人的依赖引起其他人的冲突,因为每次提交的hash值都是不同的。

    八、git分支操作

    分支的作用是使分支独立变化,互不依赖。

    8.1、查看分支

    # 列出本地仓库分支
    git branch
    #列出本地和远端的分支
    git branch -a
    

    8.2、创建分支

    # 创建分支
    git branch develop
    # 创建并切换分支
    git checkout -b develop
    
    develop是分支名称。

    8.3、切换分支

      git checkout name
      git switch name
    
    name表示分支的名称。

    8.4、合并分支

    步骤:
      # 切到master
      git pull
      # 解决冲突(解决master的冲突,保证代码最新)
      git add  .
      git merge --continue //(git update-ref -d MERGE_HEAD)
      git commit . -m "message"
      git merge develop
      # 解决冲突(解决两个分支的冲突,实现合并)
      git add  .
      git merge --continue //(git update-ref -d MERGE_HEAD)
      git commit . -m "message"
      git push origin master
    

    8.5、删除分支

    # 删除本地分支
    git branch -d develop
    # 删除远端分支
    git push origin -d develop
    
    develop表示分支的名称。

    总结

  1. 版本控制的重要性:版本控制是开发过程中必不可少的工具,它可以帮助我们追踪文件的变化,协作开发,并保护代码免受意外错误的影响。

  2. Git基础概念:我们了解了Git的三个核心区域,即工作目录、暂存区和仓库。每个区域都有特定的作用,帮助我们管理代码的变化。

  3. 初始化仓库:通过使用git init命令,我们可以将一个目录初始化为Git仓库,开始进行版本控制。

  4. 提交与记录变更:使用git add命令将文件添加到暂存区,然后使用git commit命令将暂存区的变更提交到仓库,并附上一条有意义的提交消息。

  5. 分支管理:Git的分支功能让我们能够轻松创建、切换和合并分支。这样可以在开发过程中方便地实验新功能,同时不影响主线代码。

  6. 远程仓库与协作:通过使用远程仓库,我们可以与团队成员协作开发。常见的操作包括克隆远程仓库、拉取最新代码、推送自己的变更等。

  7. 撤销与回退:Git提供了多种方式来撤销或回退操作,例如使用git resetgit revert命令。这些命令能够帮助我们修复错误或不必要的提交。

通过掌握这些基本操作和概念,具备使用Git进行版本控制的基础知识。继续实践和学习,将能够更好地管理和保护代码,并更加高效地与团队合作。
image.png

目录
相关文章
|
1月前
|
存储 开发工具 数据安全/隐私保护
「Mac畅玩鸿蒙与硬件9」鸿蒙开发环境配置篇9 - 使用 Git 进行版本控制
在 HarmonyOS 项目开发中,Git 版本控制可以帮助开发者规范地管理代码变更,确保协作流程顺畅。本篇将详细介绍从创建项目、提交代码到 Git 远程仓库,再到修改、推送更新的完整操作流程,重点演示如何使用 Git 和 GitHub 进行身份验证和版本管理。
65 3
「Mac畅玩鸿蒙与硬件9」鸿蒙开发环境配置篇9 - 使用 Git 进行版本控制
|
1月前
|
缓存 Java Shell
[Git]入门及其常用命令
本文介绍了 Git 的基本概念和常用命令,包括配置、分支管理、日志查看、版本回退等。特别讲解了如何部分拉取代码、暂存代码、删除日志等特殊需求的操作。通过实例和图解,帮助读者更好地理解和使用 Git。文章强调了 Git 的细节和注意事项,适合初学者和有一定基础的开发者参考。
48 1
[Git]入门及其常用命令
|
2月前
|
Linux 开发工具 git
掌握 Git:版本控制的艺术
Git 是由 Linus Torvalds 开发的分布式版本控制系统,广泛用于代码管理和团队协作。其核心价值在于分布式特性、数据完整性和支持非线性开发。本文介绍 Git 的安装、仓库初始化、文件管理、分支管理、远程仓库操作及撤销操作等基础与高级技巧,助你掌握版本控制的艺术。通过实践,你将能更高效地利用 Git 进行代码管理和团队协作。
|
21天前
|
测试技术 持续交付 开发工具
Git版本控制在团队协作中具有重要作用
Git版本控制在团队协作中具有重要作用
21 1
|
1月前
|
Ubuntu 开发工具 git
Git高手必备:掌握这些版本控制最佳实践,让你的代码管理效率翻倍!
【10月更文挑战第25天】使用 Git 进行版本控制是现代软件开发的重要部分。本文详细介绍了 Git 的安装、配置、基本操作、分支管理、冲突解决及常用命令,帮助开发者提高工作效率,确保代码质量和团队协作的顺利进行。通过合理使用 Git,可以有效管理代码变更,支持多人协作,并追踪历史记录。
66 4
|
1月前
|
开发工具 C# git
C#一分钟浅谈:Git 版本控制与 GitFlow 工作流
【10月更文挑战第22天】本文介绍了 Git 和 GitFlow 的结合使用,从基础概念到具体操作,涵盖了安装配置、基本命令、GitFlow 工作流的核心分支和流程示例。同时,文章还讨论了常见的问题和易错点,如忽略文件、冲突解决、回退提交和分支命名规范,并提供了代码案例。通过学习本文,读者可以更好地理解和应用 Git 及 GitFlow,提高团队协作效率。
51 1
|
27天前
|
开发工具 git
掌握Git版本控制,提升团队协作效率
掌握Git版本控制,提升团队协作效率
|
1月前
|
开发工具 git 开发者
|
2月前
|
编译器 开发工具 数据安全/隐私保护
Git——多人协作/版本控制,在一个gitee仓库下开发(Gitee版教程)手把手教学,包好用的!
本文提供了一个关于如何在Gitee上进行多人协作和版本控制的详细教程,包括新建和初始化仓库、克隆仓库、邀请好友共同管理仓库以及注意事项,旨在帮助用户顺利进行代码协作开发。
302 0
Git——多人协作/版本控制,在一个gitee仓库下开发(Gitee版教程)手把手教学,包好用的!
|
2月前
|
数据可视化 项目管理 开发工具
Git 可视化的实现:提升版本控制体验的利器
Git是最流行的分布式版本控制系统,广泛用于软件开发和项目管理。但其命令行操作复杂,难以直观理解,尤其是涉及分支和合并时。为此,Git可视化工具应运而生,通过图形界面帮助开发者更清晰地理解项目历史、分支结构及变更情况。本文将探讨Git可视化的概念背景、技术方法及相关工具,包括GitKraken、Sourcetree、Gitg、Git Extensions和Tig等,帮助读者掌握其在日常工作中的应用,提升版本管理效率。此外,还将介绍如何结合可视化项目管理工具,如板栗看板,实现更高效的团队协作和任务管理。
46 0