0


Git 超详细使用教程

目录

1、介绍

1.1、Git 简介和优势

Git是一种分布式版本控制系统,用于跟踪文件和目录的变化,以及协调多个人员之间的代码协作。相比于传统的集中式版本控制系统,如SVN,Git具有许多优势:

  • 分布式: 每个开发者都有一份完整的代码仓库,可以在离线状态下工作,减少对中央服务器的依赖。
  • 高效性: Git对于历史版本的管理非常高效,基于快照而不是差异。
  • 分支管理: Git鼓励使用分支进行并行开发,方便实现不同功能和修复同时进行。
  • 易于协作: 多人协作时,可以轻松地合并和解决冲突。
  • 安全性: Git使用哈希值保证数据的完整性,避免了数据损坏。
  • 开源: Git本身是开源的,拥有庞大的社区支持。

1.2、版本控制基本概念

在使用Git之前,了解一些基本的版本控制概念是很重要的:

  • 仓库(Repository): 一个Git仓库是一个存储你项目所有文件和历史版本的地方。
  • 提交(Commit): 提交是保存代码更改的操作,每次提交会生成一个唯一的哈希值用于标识。
  • 分支(Branch): 分支是用来进行并行开发的,你可以在分支上进行实验性的更改而不影响主线。
  • 主分支(Main Branch): 通常是main或master分支,代表项目的稳定版本。
  • 合并(Merge): 将一个分支的更改合并到另一个分支。
  • 冲突(Conflict): 当多个分支的更改发生冲突时,需要手动解决。

2、安装 Git

在Windows上安装git
访问Git官网(https://git-scm.com/)。
下载适用于Windows的Git安装程序。
运行安装程序,按照提示完成安装。

3、配置 Git

在你安装了Git后,为了确保你的个人或项目特定的配置设置正确,你可以通过一些Git命令来进行配置。这些配置项将影响你在使用Git时的行为和体验。

3.1、配置用户信息(必要)

配置用户信息是非常重要的,因为每次你提交代码时都会有相应的提交者信息。

git config --global user.name "Your Name"git config --global user.email "[email protected]"

3.2、配置文本编辑器(非必要)

你可以配置一个默认的文本编辑器,以便你在进行提交信息或解决冲突时编辑文本。例如,如果你想使用Visual Studio Code:

git config --global core.editor "code --wait"

3.3、配置别名(非必要,新手不建议)

Git支持设置别名,使得你可以更快速地输入命令。比如,你可以设置一个别名"co"来代替"checkout"命令:

git config --global alias.co checkout

3.4、查看配置

你可以使用以下命令来查看当前的Git配置:

git config --list
这会列出所有的全局和本地配置设置。

3.5、配置忽略文件

有些文件你可能希望Git自动忽略,例如编译产生的临时文件或敏感数据文件。你可以创建一个名为.gitignore的文件,并将需要忽略的文件和模式添加到其中。

# 示例 .gitignore 文件
*.log
node_modules/
secret.txt

通过这些配置,你可以将Git按照你的喜好进行个性化设置,从而更好地适应你的工作流程。

4、创建仓库

Git仓库是用于存储你的项目代码和历史版本的地方。你可以在本地计算机上创建仓库,也可以在远程托管平台(如GitHub、GitLab、Gitee、Bitbucket等)上创建仓库。下面将分别介绍如何在本地和远程创建仓库。

4.1、在本地创建仓库

在本地创建一个新的Git仓库非常简单。首先,进入你的项目目录,然后使用以下命令:

git init

在这里插入图片描述

这会在当前目录下创建一个新的Git仓库。Git会在项目根目录下生成一个.git文件夹,用于存储版本历史和配置信息。

4.2、在远程托管平台创建仓库

远程托管平台如GitHub、GitLab等提供了创建远程仓库的功能。这允许你将你的代码与团队成员或其他开发者共享。以下是在GitLab上创建远程仓库的步骤:

(1)登录到你的GitLab账号。

(2)在GitLab的主页上,你会看到一个导航栏,导航栏上通常有一个加号(+)图标,点击它展开菜单。

(3)在菜单中,选择"New project"或类似的选项。

(4)在创建项目页面,填写以下信息:

  • Project name: 项目名称,这将是你的仓库的名称。
  • Project slug: 项目标识符,通常是项目名称的小写,可以包含连字符。
  • Project description: 项目描述,简要介绍项目的用途。
  • Visibility Level: 项目的可见性设置,可以选择"Public"(公开)或"Private"(私有)。
  • Initialize repository with a README: 是否在仓库中初始化一个README文件,你可以选择根据需要启用或禁用。 填写完毕后,点击"Create project"按钮。

(5)GitLab将为你创建一个新的远程仓库,并将你重定向到仓库页面。

(6)在仓库页面中,你将找到仓库的URL,这是你与远程仓库交互的链接。

4.3、关联远程仓库

在本地创建仓库或克隆已有仓库后,你可能想要将它与远程仓库关联起来,以便推送和拉取代码。

git remote add origin <remote-repository-url>

这里,origin是一个远程仓库的别名,你可以自己命名,是远程仓库的URL。

5、基本操作

5.1、初始化仓库

在一个目录中初始化一个Git仓库,使其成为Git可管理的仓库。

git init

5.2、查看工作目录和暂存区的当前状态

查看工作目录和暂存区的当前状态。获得有关你的代码库中文件的信息,包括已修改、已暂存和未跟踪的文件。

git status

例如,在本地仓库中新建一个文件1.txt,然后查看当前状态

在这里插入图片描述

5.3、添加文件到暂存区

在进行代码提交之前,需要将文件添加到Git的暂存区,以准备好提交。

//添加指定文件到暂存区
gitadd<filename>
//添加所有文件到暂存区
gitadd.

你也可以使用通配符来添加多个文件。

此时执行git status再次查看状态

在这里插入图片描述

5.4、提交更改

提交暂存区中的更改到版本库中

git commit -m"Commit message"

合理的提交信息能够清晰地说明你的更改内容。

此时执行git status再次查看状态

在这里插入图片描述

5.5、查看提交历史

查看项目的提交历史,了解每次提交的详细信息。

//查看提交历史
git log

//以精简形式显示提交历史
git log --oneline

在这里插入图片描述

5.6、比较工作目录和暂存区之间的差异

比较工作目录和暂存区之间的差异,或者比较两个提交之间的差异。

//比较工作目录和暂存区之间的差异
gitdiff

//比较暂存区和最新提交之间的差异
gitdiff--staged
//或
gitdiff--cached

//比较两个提交之间的差异
gitdiff<commit-hash-1><commit-hash-2>

//比较指定文件的差异
gitdiff<filename>

5.7、版本回退

新增两次提交

在这里插入图片描述

此时1.txt中的内容为:

在这里插入图片描述

此时想要进行版本回退有三种方式

//回退到上个版本
git reset --hard HEAD^

//回退到上上个版本
git reset --hard HEAD^^

//回退到前10个版本
git reset --hard HEAD~10

//回退到指定版本号的版本
git reset --hard a7f365c128827cdf1f0d796141ce3c644cc78770

执行命令回退到上个版本,此时已看不到第三次提交并且1.txt中内容也回退到了对应版本

在这里插入图片描述
在这里插入图片描述

如果此时我们还想要重新回到版本回退前的版本,则可以使用git reset --hard [版本号] 来实现

//查询版本号
git reflog

//回退版本
git reset --hard[版本号]

此时需要先获取到版本回退前的版本号,然后再执行版本回退

在这里插入图片描述

5.8、恢复工作目录中的更改

如果在修改添加到暂存区之前,想要撤销某个文件的修改可以使用以下命令

//将指定文件恢复到版本库中的版本
git restore <filename>

//将所有文件恢复到版本库中的版本
git restore .

//注意,旧版本不支持restore命令,需要使用该命令
git checkout -- <filename>

如果修改已经添加到暂存区,想要撤销某个文件的修改可以使用以下命令

//放弃指定文件修改
git reset HEAD <filename>

//放弃所有文件修改
git reset HEAD .

5.8、撤销提交

当你需要撤销之前的提交时,你可以使用git revert命令来创建一个新的提交,将之前的提交内容进行反转。这允许你保留之前的提交历史,同时也纠正了之前的更改。

//撤销一个提交
git revert [版本号]

//可以指定一个范围,撤销多个连续的提交
git revert <start-commit>..<end-commit>

6、分支管理

Git的分支管理功能允许你在不影响主线代码的情况下进行并行开发、实验性改动和问题修复。了解如何创建、切换和合并分支,以及如何解决分支冲突非常重要。

6.1、创建分支

创建一个新分支,用于开发新功能或修复问题,保持主线代码不受影响。

//创建一个分支
git branch <branch-name>

//创建并切换到分支
git branch -b<branch-name>

6.2、切换分支

切换到另一个分支,以便在不同的分支上进行不同的工作。

//切换分支
git checkout <branch-name>

//查看当前所在分支
git checkout

6.3、合并分支

将一个分支的更改合并到另一个分支中。

git merge <branch-name>

在合并时可能会遇到冲突,需要手动解决。

6.4、解决冲突

当两个分支有不同的更改并且产生冲突时,需要手动解决冲突。

  • 打开冲突文件,编辑并解决冲突。
  • 使用git add 标记冲突已解决。
  • 提交解决冲突的更改。

6.5、删除分支

当一个分支的工作已经完成,可以删除不再需要的分支。

git branch -d<branch-name>

请注意,如果分支中的更改尚未合并,删除分支时可能会出现警告。

7、远程仓库

将你的本地仓库与远程仓库进行关联,可以实现代码的共享和团队协作。在本节中,你将学习如何关联远程仓库、推送代码到远程仓库以及从远程仓库拉取代码更新。

7.1、关联远程仓库

将本地仓库与远程仓库关联起来,以便你可以推送和拉取代码。
注意:本地Git仓库和远程仓库之间的传输是通过SSH加密的,所以还需要将你的SSH密钥添加到远程仓库设置中。

git remote add origin <remote-repository-url>

在这里,<remote-repository-url>是远程仓库的URL。

7.2、推送代码到远程仓库

一旦关联了远程仓库,你可以将本地代码推送到远程仓库。

git push origin <branch-name>

这会将指定分支的代码推送到远程仓库。首次推送时,你可能需要使用 -u 参数来建立跟踪关系。

7.3、拉取代码

从远程仓库拉取代码更新,以保持你的本地代码同步。

git pull origin <branch-name>

这会将指定分支的最新代码拉取到你的本地仓库。

7.4、解决远程仓库冲突

在多人协作时,可能会遇到远程仓库的冲突。在推送代码之前,确保从远程仓库拉取最新的代码,以避免冲突。

7.5、查看远程仓库

你可以使用以下命令查看与本地仓库关联的远程仓库。

git remote -v

通过以上远程仓库操作,你可以实现代码的共享和协作,确保团队成员之间的代码同步。请根据你的实际项目需求和使用情况对上述内容进行编辑和扩展。

8、高级操作

除了基本操作外,Git还提供了一些高级操作,可以帮助你更灵活地管理代码和历史记录。在本节中,你将学习如何重写历史、使用储藏功能以及管理子模块。

8.1、重写历史

在某些情况下,你可能需要修改之前的提交历史,如合并、重新排序或删除提交。

  • 修改最近一次提交信息:git commit --amend
  • 交互式地修改提交历史:git rebase -i

8.2、使用储藏和恢复

储藏功能允许你将当前未提交的更改暂存起来,以便在切换分支或执行其他操作时恢复使用。

  • 储藏当前更改:git stash
  • 恢复储藏的更改:git stash apply 或 git stash pop

8.3、管理子模块

子模块允许你在一个Git仓库中嵌套另一个仓库,这对于依赖的管理非常有用。

  • 添加子模块:git submodule add
  • 更新子模块:git submodule update --init --recursive
  • 删除子模块:详见Git文档

通过高级操作,你可以更灵活地处理提交历史、更改管理以及子模块等复杂情况。请根据你的实际项目需求和使用情况对上述内容进行编辑和扩展。

9、团队协作

在团队中协作使用Git时,需要注意协调各种活动以确保代码的正确性、稳定性和一致性。本小节将介绍如何在团队中使用Git进行协作。

9.1、Git 团队协作流程

  • 使用主分支:主分支通常是稳定的版本,团队成员从这里创建自己的分支。
  • 特性分支:每个新功能或修复都应该在自己的分支上进行开发。
  • 提交和推送:团队成员定期提交并推送自己的分支更改。
  • 代码审查:使用代码审查工具(如Pull Request)确保代码质量和规范。
  • 合并:经过审查后,将特性分支合并到主分支。
  • 解决冲突:如果有冲突,团队协作解决冲突并保持代码稳定。

9.2、解决团队协作冲突

在团队协作中,当不同成员的更改冲突时,需要解决这些冲突。以下是一些解决冲突的步骤:

  • 拉取更新:在进行自己的更改之前,先拉取远程仓库的最新更新。
  • 处理冲突:如果出现冲突,打开文件并手动解决冲突。
  • 提交解决:将解决冲突后的文件提交到自己的分支。
  • 更新远程仓库:将解决冲突的分支推送到远程仓库。

9.3、代码审查

代码审查是团队协作中的重要环节,可以帮助发现潜在的问题并提高代码质量。通常使用Pull Request(PR)工具进行代码审查。

  • 创建PR:在特性分支开发完成后,创建一个Pull Request。
  • 代码审查:团队成员审查代码,并提供反馈和建议。
  • 更新和讨论:根据审查意见更新代码,并与团队成员讨论。
  • 合并PR:经过审查和讨论后,将PR合并到主分支。

9.4、分支保护和权限管理

在团队协作中,可以使用分支保护和权限管理来确保代码的质量和安全性。

  • 分支保护:限制谁可以直接将代码推送到主分支,只能通过PR合并。
  • 权限管理:根据团队成员的角色,分配合适的权限,如写权限、合并权限等。

10、附录

常用 Git 命令速查表

基本操作
  • 初始化仓库:git init
  • 克隆远程仓库:git clone <repository-url>
  • 查看状态:git status
  • 添加文件到暂存区:git add <filename>
  • 提交更改:git commit -m “Commit message”
  • 查看提交历史:git log
  • 查看文件差异:git diff <filename>
  • 查看远程仓库列表:git remote -v
  • 查看远程分支列表:git branch -r
分支操作
  • 创建分支:git branch <branch-name>
  • 切换分支:git checkout <branch-name> 或 git switch <branch-name>
  • 创建并切换分支:git checkout -b <branch-name> 或 git switch -c <branch-name>
  • 合并分支:git merge <branch-name>
  • 删除分支:git branch -d <branch-name>
远程仓库操作
  • 关联远程仓库:git remote add <remote-name> <repository-url>
  • 推送代码:git push <remote-name> <branch-name>
  • 拉取代码:git pull <remote-name> <branch-name>
  • 创建Pull Request:在远程仓库上操作
  • 获取远程仓库更新:git fetch
高级操作
  • 重写历史:git commit --amend、git rebase -i <commit-hash>
  • 使用储藏:git stash、git stash apply、git stash pop
  • 管理子模块:git submodule add <repository-url>
  • 重置和回退:git reset --soft <commit-hash>、git reset --hard <commit-hash>、git reflog
团队协作
  • 创建Pull Request:在远程仓库上操作
  • 代码审查:通过Pull Request 进行
  • 解决冲突:手动编辑文件解决冲突
  • 分支保护和权限管理:在远程仓库上设置
常见问题解决
  • 解决冲突:手动编辑冲突文件
  • 撤销错误提交:git reset --soft HEAD^、git reset --hard HEAD^、重写历史
  • 丢弃未提交更改:git restore <filename>
  • 追踪和忽略文件:git rm --cached <filename>、创建 .gitignore 文件
标签: git

本文转载自: https://blog.csdn.net/weixin_53902288/article/details/132456824
版权归原作者 霁月清风与谁同 所有, 如有侵权,请联系我们删除。

“Git 超详细使用教程”的评论:

还没有评论