Git的使用

目录

一.概述

1.优点

2.何为版本控制 

3.为什么需要版本控制 

4.工作机制

5.代码托管中心

二.git的使用

1.设置用户签名

2.初始化本地库

3.查看本地库状态

4.提交文件到远程库

5.历史版本

三.Git 分支操作 

1.什么是分支

2.分支的好处

1. 隔离开发

2. 并行开发

3. 实验新功能

4. 代码审查

5. 版本控制

6. 简化合并

7. 避免主分支混乱

8. 容易回滚

9. 灵活性

总结

3.分支的操作

1. git branch

2. git checkout

3. git merge

4. git rebase

5. git pull

4.产生冲突

1. 查看冲突标记

2. 决定处理方式

选项 1: 保留 HEAD 分支(当前分支)的代码

选项 2: 保留合并分支(branchB)的代码

3. 保存文件并完成合并

4. 推送更改

总结


一.概述

1.优点

Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种
项目。

Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作
流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。 

2.何为版本控制 

版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。 
版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,
方便版本切换。

3.为什么需要版本控制 

个人开发过渡到团队协作。

集中式版本控制工具

CVS、SVN(Subversion)、VSS…… 集中化的版本控制系统诸如 CVS、SVN 等,都有一个单一的集中管理的服务器。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。 

分布式版本控制工具 

Git、Mercurial、Bazaar、Darcs…… 
像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码
仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用
其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次
对整个文件仓库的完整备份。 

4.工作机制

5.代码托管中心

代码托管中心是为 Git 项目提供远程仓库的服务平台,帮助开发者更好地管理和协作。常见的代码托管平台包括:

  1. GitHub: GitHub 是全球最流行的代码托管平台之一,支持 Git 版本控制系统。它提供项目的托管服务,支持协作、代码审查、问题跟踪和 CI/CD 集成等功能。GitHub 还支持开源项目管理,很多知名的开源项目都托管在 GitHub 上。

  2. GitLab: GitLab 是另一个流行的代码托管平台,除了提供 Git 仓库管理,还提供 CI/CD、DevOps 集成等完整的解决方案。GitLab 提供社区版(开源)和企业版,开发者也可以自行托管 GitLab 服务(局域网)。

  3. Bitbucket: Bitbucket 是 Atlassian 旗下的代码托管平台,支持 Git 和 Mercurial 版本控制系统。Bitbucket 和 Jira、Confluence 等工具紧密集成,适合团队项目管理和协作。

  4. Gitee(码云): Gitee 是国内流行的代码托管平台,由开源中国提供服务。它与 GitHub 类似,提供仓库托管、协作、代码审查等功能,同时具有良好的本地化服务支持。

二.git的使用

1.设置用户签名

基本语法 

git config --global user.name 用户名 
git config --global user.email 邮箱 

签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看
到,以此确认本次提交是谁做的。Git 首次安装必须设置一下用户签名,否则无法提交代码。 
※注意:这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系。

2.初始化本地库

git init

注git的命令是基于linux的

3.查看本地库状态

git status

4.提交文件到远程库

git add 文件名
git status
git commit -m "注释" 文件名

注:当文件修改以及add时候git status发生改变

5.历史版本

git reflog  查看版本信息 
git log  查看版本详细信息 
git reset --hard 版本号  版本穿梭

 切换版本之后内容也随之改变

Git 切换版本,底层其实是移动的 HEAD 指针,具体原理如下图所示。

三.Git 分支操作 

  • 开始:从项目的初始状态开始。
  • 创建新分支:使用 git checkout -b new-branch 创建并切换到新分支。
  • 在新分支上开发:进行代码更改和开发。
  • 添加更改:使用 git add . 将更改暂存。
  • 提交更改:使用 git commit -m "提交信息" 进行提交。
  • 切换到主分支:通过 git checkout main 切回主分支。
  • 更新主分支:使用 git pull 获取远程主分支的最新更改。
  • 合并新分支:使用 git merge new-branch 合并新分支的更改。
  • 处理冲突:如果有冲突,解决冲突后继续合并。
  • 推送更新:通过 git push 将合并后的更改推送到远程仓库。
  • 结束:完成分支操作。

1.什么是分支

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独
分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时
候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是
一个单独的副本。(分支底层其实也是指针的引用)

2.分支的好处

1. 隔离开发

分支允许你在不同的上下文中工作,而不会干扰主分支或其他分支的代码。每个分支可以独立进行开发、测试和修改。

2. 并行开发

团队成员可以同时在不同的分支上工作,进行并行开发。这减少了团队成员之间的冲突,提高了工作效率。

3. 实验新功能

可以在新的分支上实验新功能或进行大规模的改动,而不影响主代码库。如果实验成功,可以将其合并到主分支;如果失败,可以轻松删除分支而不会留下任何痕迹。

4. 代码审查

通过创建分支,可以将功能开发完毕后的代码提交到代码审查流程中。团队成员可以在合并到主分支之前,查看和评论新代码,确保代码质量。

5. 版本控制

使用分支可以有效管理版本,例如,维护生产环境的稳定性,开发新版本,或修复旧版本的bug,而不会影响其他版本。

6. 简化合并

分支可以将特定的功能、修复或改进集中在一个地方,这使得合并操作更加简单和清晰。使用合并请求(Pull Request)或合并请求流程,可以确保更改经过审查后再合并。

7. 避免主分支混乱

主分支通常是稳定的生产版本,使用分支可以防止直接在主分支上进行频繁的提交和更改,保持主分支的整洁。

8. 容易回滚

如果某个分支上的更改不再需要或者引入了问题,可以方便地删除分支或回滚到先前的提交,减少了风险。

9. 灵活性

分支提供了灵活的开发模型,可以根据团队的需求,快速调整开发策略和工作流程。

总结

使用 Git 分支可以提高团队的开发效率,保持代码的整洁与稳定性,同时为功能的实验和开发提供安全的环境。

3.分支的操作

1. git branch
  • 功能:列出所有本地分支,或创建、删除分支。

    • 查看本地分支

      git branch

      解释:列出所有本地分支,当前所在分支前会有一个 * 号标识。

    • 创建新分支

      git branch new-branch

      解释:创建名为 new-branch 的新分支,但不会切换到该分支。

    • 删除分支

      git branch -d branch-name

      解释:删除 branch-name 分支(如果分支没有被合并,可能会提示错误,可以使用 -D 强制删除)。


2. git checkout
  • 功能:切换到指定分支,或基于某个分支创建并切换到新分支。

    • 切换到已有分支

      git checkout branch-name

      解释:切换到 branch-name 分支。

    • 创建并切换到新分支

      git checkout -b new-branch

      解释:基于当前分支创建并切换到 new-branch


3. git merge
  • 功能:将指定分支的更改合并到当前分支。

    • 合并分支

      git merge branch-name

      解释:将 branch-name 分支的更改合并到当前分支。

    • 解决冲突后完成合并

      git add . git commit

      解释:在合并过程中如有冲突,手动解决冲突后使用 git add 暂存解决冲突的文件,接着使用 git commit 完成合并。


4. git rebase
  • 功能:将一个分支的更改应用在另一个分支的基础之上,保持线性提交历史。

    • 基于另一个分支重置提交历史

      git rebase branch-name

      解释:将当前分支的提交应用在 branch-name 分支的基础上,从而重写当前分支的提交历史。

    • 解决冲突后继续变基

      git rebase --continue

      解释:在变基过程中遇到冲突并解决后,使用此命令继续变基。


5. git pull
  • 功能:从远程仓库拉取并合并最新的更改到当前分支。

    git pull

    解释:从远程仓库拉取最新更改,并将其合并到当前分支。

4.产生冲突

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替
我们决定使用哪一个。必须人为决定新代码内容。

1. 查看冲突标记

在 Git 冲突中,会看到如下标记:

<<<<<<< HEAD
# 当前分支的代码(例如:分支A)
return a + b  # 简单加法
=======
# 来自合并分支的代码(例如:分支B)
return a + b + 10  # 带有偏移量的加法
>>>>>>> branchB
2. 决定处理方式

根据项目的实际需求,你有三种选择:

选项 1: 保留 HEAD 分支(当前分支)的代码

删除标记和冲突部分中合并分支的代码,仅保留 HEAD 分支的内容:

def calculate_sum(a, b): return a + b # 保留当前分支的简单加法
选项 2: 保留合并分支(branchB)的代码

删除标记和 HEAD 的代码,只保留合并分支的内容:

def calculate_sum(a, b): return a + b + 10 # 保留带有偏移量的加法

选项 3: 结合两者进行修改

你可以手动编辑代码,将两者结合或根据需求进行调整。例如:

def calculate_sum(a, b): return (a + b) * 2 + 10 # 自定义修改,结合两者的逻辑
3. 保存文件并完成合并

编辑完成后,保存文件,并使用以下命令解决冲突:

git add <冲突文件> git commit

这将完成冲突解决并生成新的合并提交。

4. 推送更改

如果是在本地解决的冲突,最后你还需要将合并后的更改推送到远程仓库:

git push
总结

在合并冲突中,你需要手动修改代码,选择适合项目需求的方案,或者将两者结合。然后使用 git addgit commit 解决冲突,最后将更改推送到远程仓库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值