敞开生长之旅!这是我参加「日新方案 2 月更文应战」的第 30 天,点击查看活动概况

前言

布景

因为本社新人并不常用Git,再加上国内的网络并不算好,在这样一个布景下,为了简化Git的运用,我在这里简略记录了一个关于 Git的教程,期望对大家有所协助。

关于本教程的编写环境

本文根据Windows10系统Mac系统的小伙伴可以测验Homebrew。因为本人手里并没有搭载MacOS的电脑,因而Homebrew相关的运用请自行测验。

关于运用 Windows11系统 的小伙伴,本文的教程是通用的,不过一些细节可能略有不同,这点期望小伙伴们留意一下

关于Git

Git 是一个开源的分布式版别操控系统,可以有用、快速的进行项目版别办理。Git 是 Linus Torvalds 为了协助办理 Linux 内核开发而开发的一个开放源码的版别操控软件。 ——来自 Git 简介 | 程序员大彬 (topjavaer.cn)

简略来说,Git 就是一个项目代码办理软件

关于本教程的谈论

这个教程根据我的个人实践,许多东西根据我个人的理解,所以有望大家多多指教。假如你发现了这个教程的过错之处,欢迎你经过邮箱或者QQ联系我,我会及时的进行改善。假如教程中有表述不清楚的地方,也请指出,或供给建议。

关于本教程的转载

任何个人或组织可以转载我的这个教程系列,乃至可以对其进行一些修正。但前提是要保证实时更新,而且保存本教程的版权信息,谢谢支撑,我也会不定时的更新这个系列的教程。

正文

Git装置与运用

具体装置教程可以看看这个系列的第一期:手把手教你用Git——Git运用教程(一) – ()

一个沉痛的事端

有两个开发人员(其间一个绝对不是我,呜呜呜)正在独立开发同一个功用,分别在featureAfeatureB分支上进行开发。他们都修正了同一个文件main.js的不同部分。为了将这两个功用兼并到master分支上,运用git merge指令进行兼并操作。

首先,开发人员A将featureA分支兼并到master分支上:

$ git checkout master
$ git merge featureA

此刻,Git会测验主动兼并featureA分支的修正。但是,因为开发人员B一起也修正了main.js文件,因而会产生兼并抵触。Git会提示用户手动处理抵触。假定处理抵触后,main.js文件的内容如下:

jsCopy code
function main() {
<<<<<<< HEAD
  console.log("Feature A");
=======
  console.log("Feature B");
>>>>>>> featureA
}

此刻,featureA分支的修正现已成功兼并到了master分支上。接下来,开发人员B也将featureB分支兼并到master分支上:

rubyCopy code
$ git checkout master
$ git merge featureB

因为featureA分支的修正现已兼并到了master分支上,因而这次兼并操作不会产生抵触。Git会主动将featureB分支的修正兼并到master分支上,并创立一个新的兼并提交。最终,master分支的提交前史记录如下:

*   Merge branch 'featureB'
|\  
| * Commit B2
| * Commit B1
* |   Merge branch 'featureA'
|\ \  
| * | Commit A2
| * | Commit A1
| |/  
* |   Commit M2
|/  
*     Commit M1

在这个比如中,假如开发人员A和B没有进行充沛的交流和协作,他们的修正可能会彼此抵触,导致代码过错或功用失效。

Git merge介绍

Git merge是Git版别操控系统中一种将两个或多个不同的分支兼并为一个新分支的操作。在软件开发中,团队成员通常会创立不同的分支,以便在不同的任务和特性上进行作业,这些分支在某些时分需求兼并到主分支或其他分支上,以保证代码的全体稳定性和一致性。

Git merge操作是将两个分支的前史记录兼并到一个新的提交中。当你履行merge操作时,Git会主动找到两个分支的最近共同先人节点,然后比较这些节点之间的差异,将这些差异兼并到一个新的提交中。这个新提交会包含两个分支的所有改变内容,并成为这两个分支的最新公共先人。

Git merge有两种首要的兼并战略:fast-forward和recursive。在fast-forward兼并战略中,假如一个分支的提交前史是另一个分支的子集,那么Git会简略地将当时分支指向另一个分支的最新提交,这样就完成了兼并操作。在recursive兼并战略中,Git会创立一个新的提交来表明兼并成果,这个提交会包含两个分支的所有改变内容。

在履行merge操作之前,通常需求先切换到方针分支,运用git checkout指令。然后,运用git merge指令将源分支兼并到方针分支上。假如兼并呈现抵触,Git会提示你手动处理抵触。最终,运用git push指令将兼并成果推送到远程库房上,以便让其他团队成员看到最新的代码。

运用

当你需求将一个分支兼并到当时分支时,可以运用git merge指令。该指令的基本用法如下:

git merge <source-branch>

其间,<source-branch>指定了要兼并的源分支的名称。

例如,假如你当时在master分支,并想将dev分支兼并到master分支上,可以履行以下指令:

git checkout master
git merge dev

在履行这个指令之前,你需求先切换到master分支上,运用git checkout指令。然后,履行git merge dev指令,将dev分支兼并到master分支上。

假如兼并成功,Git会创立一个新的提交来表明兼并成果,并将该提交添加到当时分支的提交前史中。假如兼并呈现抵触,Git会提示你手动处理抵触。

另外,git merge指令还支撑一些选项,用于操控兼并的行为。其间一些常用的选项包含:

  • --no-ff:禁用fast-forward兼并战略,强制Git创立一个新的兼并提交。
  • --squash:将兼并成果紧缩为一个提交,而且不会保存源分支的提交前史。
  • -m <message>:指定新的兼并提交的提交信息。

例如,假如你想要禁用fast-forward兼并战略并创立一个新的兼并提交,可以履行以下指令:

git merge --no-ff dev

假如你想要将兼并成果紧缩为一个提交,并指定兼并提交的提交信息,可以履行以下指令:

git merge --squash dev
git commit -m "Merge dev branch"

留意,当你运用--squash选项时,需求运用git commit指令手动提交兼并成果。因为该选项会禁止Git主动创立兼并提交。

如何尽量防止代码兼并事端?

  1. 坚持代码库干净和整齐,防止创立不必要的分支。应该尽可能削减并兼并分支,防止呈现太多的抵触。
  2. 在履行兼并操作之前,保证代码库和分支都现已进行了充沛的测验和检查。代码兼并之前需求进行全面的测验,而且应该遵从代码检查的最佳实践,保证代码的正确性和可靠性。
  3. 运用工具和技术来协助办理和减轻兼并抵触的风险,例如运用分支战略、代码审核和主动化测验等。运用Git等版别操控系统可以削减兼并代码时的人为过错,经过分支战略可以将风险最小化,并运用主动化测验来检测潜在的过错。
  4. 让团队成员坚持交流和协作,保证他们都了解兼并的风险和最佳实践。开发团队应该树立有用的交流机制,保证团队成员可以彼此交流,及时发现和处理问题。在项目开始之前,应该制定好兼并代码的规范和流程,保证团队成员都了解和遵从最佳实践。