Maison >outils de développement >git >Résumer et organiser le guide d'étude du contrôle de version Git

Résumer et organiser le guide d'étude du contrôle de version Git

WBOY
WBOYavant
2022-03-03 17:36:461851parcourir

Cet article vous apporte des connaissances pertinentes sur Git, qui résume principalement les points de connaissance du contrôle de version. Jetons un coup d'œil au guide d'étude du contrôle de version Git. J'espère qu'il sera utile à tout le monde.

Résumer et organiser le guide d'étude du contrôle de version Git

Étude recommandée : "Tutoriel d'apprentissage Git"

L'origine du contrôle de version

  • De nos jours, les projets logiciels sont généralement analysés, conçus, codés, maintenus et testés par une équipe de recherche et développement
  • Pour les équipes Le développement doit résoudre les problèmes suivants :
    • Sauvegarde de plusieurs versions, ce qui prend du temps et de l'espace.
    • Il est difficile de restaurer la version correcte précédente
    • Il est difficile de résoudre les conflits de code
    • C'est difficile pour retracer le modificateur et l'heure de modification du code problématique
    • Impossible d'effectuer les autorisations Il est difficile de contrôler
    • sortie de la version du projet
  • L'outil de gestion du code source a vu le jour pour résoudre les problèmes ci-dessus

Contrôle de révision

  • est une pratique standard pour la maintenance des plans d'ingénierie, qui permet de suivre le plan d'ingénierie depuis sa naissance jusqu'au processus de finalisation. Il s'agit d'un système qui enregistre les modifications dans le contenu de plusieurs fichiers afin que vous puissiez vérifier l'état de révision d'une version spécifique à l'avenir. S'il s'agit d'un développement en équipe, l'utilisation du contrôle de version est obligatoire !
    • Si vous développez seul, il est également fortement recommandé de commencer à utiliser le contrôle de version dès maintenant
L'utilisation du contrôle de version peut :
  • Cela n'endommagera pas le travail existant
    • Cela n'augmentera pas la charge de travail !
    • Ajouter Lorsque de nouvelles fonctions seront étendues, cela deviendra plus facile
Outils de contrôle de version courants

CVS ouvre la porte au contrôle de version
  • CVS est né en 1990, l'outil de gestion de code source grand public dans les temps anciens
    SVN Le roi du contrôle de version centralisé
  • SVN : Également connu sous le nom de subversion, il est le successeur de CVS et un outil de gestion de code source centralisé. C'était autrefois l'outil de gestion de code (code Google) pour la plupart des logiciels open source. Au cours des dernières années, il était le plus couramment utilisé par les éditeurs de logiciels nationaux
    • 集中式源代码管理工具。曾经是绝大多数开源软件的代码管理工具(google code),前几年在国内软件企业使用最为普遍
  • GIT 分布式版本控制之伟大作品
    • GIT:一款分布式
    • GIT, un excellent travail de contrôle de version distribué
  • GIT : a distribué Outils de gestion de code source. À l'heure actuelle, presque toutes les entreprises nationales ont terminé la conversion de SVN en GIT

La plus grande différence entre distribué et centralisé est la suivante :
  • En mode centralisé, les développeurs ne peuvent que le faire. soumettre le code au serveur, en mode distribué, les développeurs peuvent le soumettre localement
    Sous serveurs centralisés, uniquement distants. Il y a une base de données de code sur l'ordinateur. En mode distribué, il y a une base de données de code sur la machine de chaque développeur


  • SVN ( centralisé)

  • GIT (distribué)

Une comparaison simple entre Git et SVN

  • Vitesse
    • Dans de nombreux cas, git est beaucoup plus rapide que SVN
  • Structure
    • SVN est une gestion centralisée, git est une gestion distribuée
  • Autres
    • SV N est maladroit d'utiliser des branches, git peut facilement avoir des branches illimitées
    • SVN doit être connecté à Internet pour fonctionner correctement, git prend en charge le contrôle de version local
    • L'ancienne version de SVN placera un .svn dans chaque répertoire, git uniquement Il y aura être un .git dans le répertoire racine

GIT Introduction

  • GIT est un système de contrôle de version distribué gratuit et open source pour agile et efficace Gérer tout projet, petit ou grand, 分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目
  • 在世界上所有的分布式版本控制工具中,git是最快、最简单、最流行的
  • 是Linux之父李纳斯的第二个伟大作品
    • 2005年由于BitKeeper软件公司对Linux社区停止了免费使用权。
    • Linus为了辅助Linux内核的开发(管理源代码),迫不得己自己开发了一个分布式版本控制工具,从而Git诞生了

GIT工作原理

  • 如果想学好GIT必须先了解GIT的工作原理
  • 工作区(Working Directory): 仓库文件夹里面, 除了.git目录以外的内容
  • 版本库(Repository):.git目录, 用于存储记录版本信息
    • 版本库中的暂缓区(staga):
    • 版本库中的分支(master): git自动创建的第一个分支
    • 版本库中的**HEAD指针:**用于指向当前分支

  • git add和git commit命名作用
    • git add: 把文件修改添加到暂缓区
    • git commit: 把暂缓区的所有内容提交到当前HEAD指针指向的分支

GIT使用环境

  • 多人开发时需要一个共享版本库, 单人开发初始化一个本地库即可
  • 共享版本库的形式:
    • 本地共享库: 文件夹/U盘/硬盘
    • 远程共享库: 自己搭建git服务器/托管到第三方平台(github/oschina等)
  • 无论是单人开发还是多人开发, 客户端都可以使用命令行或者图形化界面使用git

GIT命令-个人开发

  • git help :git指令帮助手册

    • 查看其他指令的做法:git help 其他指令
  • git init : 仓库初始化(个人仓库)

    • 仓库文件目录
    HEAD:	指向当前分支的一个提交
    description:	项目的描述信息
    config:	项目的配置信息
    info/:	里面有一个exclude文件,指定本项目要忽略的文件
    objects/:	Git对象库(commit/tree/blob/tag)
    refs/:	标识每个分支指向哪个提交
    hooks/:	默认的hook脚本
  • GIT设置配置信息

    • 配置用户名:git config user.name "用户名"(用于跟踪修改记录)
    • 配置邮箱:git config user.email "邮箱"(用于多人开发间的沟通)
    • git config -l : 查看配置信息
    • git config -e : 编辑配置信息
  • git status :查文件的状态

    • 查看某个文件的状态:git status 文件名
    • 查看当前路径所有文件的状态:git status
  • git add :将工作区的文件保存到暂缓区

    • 保存某个文件到暂缓区:git add 文件名
    • 保存当前路径的所有文件到暂缓区:git add .(注意,最后是一个点 . )
  • git commit:将暂缓区的文件提交到当前分支

    • 提交某个文件到分支:git commit -m ”注释” 文件名
    • 保存当前路径的所有文件到分支:git commit -m ”注释”
  • git log :查看文件的修改日志

    • 查看某个文件的修改日志:git log 文件名
    • 查看当前路径所有文件的修改日志:git log
    • 用一行的方式查看简单的日志信息:git log ––pretty=oneline
    • 查看最近的N次修改:git log –N(N是一个整数)
  • git diff :查看文件最新改动的地方

    • 查看某个文件的最新改动的地方:git diff 文件名
    • 查看当前路径所有文件最新改动的地方:git diff
  • git reflog :查看分支引用记录(能够查看所有的版本号)

  • git rm:删除文件(删完之后要进行commit操作,才能同步到版本库)

  • git reset

    Parmi tous les outils de contrôle de version distribués dans le monde, git est le plus rapide, le plus simple et le plus populaire 🎜🎜 C'est la deuxième grande œuvre de Linus, le père de Linux 🎜🎜En 2005, le logiciel BitKeeper La société a arrêté les droits d'utilisation gratuits pour la communauté Linux. 🎜🎜Afin d'aider au développement du noyau Linux (gérer le code source), Linus a dû développer lui-même un outil de contrôle de version distribué, et Git est né🎜🎜🎜🎜🎜🎜Comment fonctionne GIT🎜🎜🎜Si vous voulez apprendre Eh bien GIT, vous devez d'abord Comprendre le principe de fonctionnement de GIT🎜🎜Répertoire de travail : À l'intérieur du dossier Warehouse, à l'exception du répertoire .git🎜🎜Référentiel (Repository ) :Répertoire .git, utilisé pour stocker les informations de version enregistrées 🎜🎜Staga dans le référentiel :🎜🎜Branche (maître) dans le référentiel : strong> Le première branche créée automatiquement par git🎜🎜Le **pointeur HEAD dans le dépôt :** est utilisé pour pointer vers la branche actuelle🎜🎜🎜🎜🎜🎜🎜fonction de nommage git add et git commit🎜🎜git add : modifier le fichier Ajouter mettre en attente 🎜🎜🎜🎜git commit : Mettre en attente Tous le contenu de la zone est soumis à la branche pointée par le pointeur HEAD actuel🎜🎜🎜🎜🎜🎜🎜🎜Environnement d'utilisation GIT🎜🎜🎜 Une bibliothèque de versions partagées est requise pour le développement à plusieurs personnes. Pour le développement par une seule personne, une bibliothèque locale. code> peut être initialisé🎜🎜version partagée Formulaire de bibliothèque : 🎜🎜Bibliothèque partagée locale : dossier/disque U/disque dur 🎜🎜Bibliothèque partagée à distance : créez votre propre serveur git/hébergez-le sur une plateforme tierce (github/oschina, etc.)🎜🎜🎜🎜Qu'il s'agisse d'un développement unique ou de développements multiples Pour le développement humain, le client peut utiliser la ligne de commande ou l'interface graphique pour utiliser git🎜🎜🎜🎜Commande GIT - développement personnel🎜🎜🎜

    git help : manuel d'aide de la commande git🎜🎜🎜Voir les autres Comment utiliser la commande : git help Autres commandes🎜🎜🎜🎜

    git init : Initialisation de l'entrepôt (entrepôt personnel) 🎜🎜🎜Répertoire de fichiers d'entrepôt🎜🎜

    #               表示此为注释,将被Git忽略*.a             表示忽略所有 .a 结尾的文件!lib.a          表示但lib.a除外/TODO           表示仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
    build/          表示忽略 build/目录下的所有文件,过滤整个build文件夹;
    doc/*.txt       表示会忽略doc/notes.txt但不包括 doc/server/arch.txt
     
    bin/:           表示忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
    /bin:           表示忽略根目录下的bin文件
    /*.c:           表示忽略cat.c,不忽略 build/cat.c
    debug/*.obj:    表示忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj
    **/foo:         表示忽略/foo,a/foo,a/b/foo等
    a/**/b:         表示忽略a/b, a/x/b,a/x/y/b等!/bin/run.sh    表示不忽略bin目录下的run.sh文件*.log:          表示忽略所有 .log 文件
    config.php:     表示忽略当前路径的 config.php 文件 
    /mtk/           表示过滤整个文件夹*.zip           表示过滤所有.zip文件/mtk/do.c       表示过滤某个具体文件
     
    被过滤掉的文件就不会出现在git仓库中(gitlab或github)了,当然本地库中还有,只是push的时候不会上传。
     
    需要注意的是,gitignore还可以指定要将哪些文件添加到版本管理中,如下:!*.zip!/mtk/one.txt
     
    唯一的区别就是规则开头多了一个感叹号,Git会将满足这类规则的文件添加到版本管理中。为什么要有两种规则呢?
    想象一个场景:假如我们只需要管理/mtk/目录中的one.txt文件,这个目录中的其他文件都不需要管理,那么.gitignore规则应写为::/mtk/*
    !/mtk/one.txt
     
    假设我们只有过滤规则,而没有添加规则,那么我们就需要把/mtk/目录下除了one.txt以外的所有文件都写出来!
    注意上面的/mtk/*不能写为/mtk/,否则父目录被前面的规则排除掉了,one.txt文件虽然加了!过滤规则,也不会生效!
     
    ----------------------------------------------------------------------------------
    还有一些规则如下:
    fd1/*
    说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;
     
    /fd1/*
    说明:忽略根目录下的 /fd1/ 目录的全部内容;
     
    /*
    !.gitignore
    !/fw/ 
    /fw/*
    !/fw/bin/
    !/fw/sf/
    说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录;注意要先对bin/的父目录使用!规则,使其不被排除。
    🎜🎜

    Informations de configuration des paramètres GIT🎜 🎜🎜Configurer le nom d'utilisateur : git config user.name "username" (utilisé pour suivre les enregistrements de modifications) 🎜🎜Configurer l'e-mail : git config user.email "mailbox" (Utilisé pour la communication entre plusieurs développeurs)🎜🎜git config -l : Afficher les informations de configuration🎜🎜git config -e  : Modifier les informations de configuration🎜🎜🎜🎜

    git status : Vérifier l'état d'un fichier🎜🎜🎜Vérifier l'état d'un fichier : nom du fichier d'état git code>🎜🎜Vérifiez l'état de tous les fichiers dans le chemin actuel : <code>git status 🎜🎜🎜🎜

    git add : enregistrez les fichiers de l'espace de travail dans la zone tampon 🎜🎜🎜Enregistrez un fichier dans la zone tampon : git add file name code>🎜🎜Enregistrez tous les fichiers dans le chemin actuel vers la zone temporaire : git add . (remarque qu'il y a un point à la fin.) 🎜🎜🎜🎜

    git commit : Soumettez les fichiers dans la zone tampon à la branche actuelle🎜🎜🎜Soumettez un fichier à la branche : git commit -m "comment" nom du fichier🎜🎜Enregistrez tous les fichiers dans le chemin actuel vers la branche : git commit -m "comment"🎜🎜🎜🎜

    git log : Afficher le journal des modifications du fichier🎜🎜🎜Afficher le journal des modifications d'un certain fichier : git log file name 🎜🎜Afficher les journaux de modifications de tous les fichiers dans le courant chemin : git log🎜🎜Affichez les informations de journal simples sur une seule ligne : git log ––pretty=oneline 🎜🎜Affichez les N dernières modifications : git log –N (N est un entier) 🎜🎜🎜🎜

    git diff : Afficher les dernières modifications apportées au fichier🎜 🎜🎜L'endroit pour afficher les dernières modifications apportées à un fichier : nom du fichier git diff🎜🎜L'endroit où afficher les dernières modifications apportées à tous les fichiers dans le chemin actuel : git diff🎜🎜🎜🎜

    git reflog : Afficher les enregistrements de référence de branche (peut afficher tous les numéros de version) 🎜🎜🎜

    git rm : Supprimer les fichiers (une opération de validation est requise après la suppression) peut être synchronisé avec le référentiel) 🎜🎜🎜git reset : restauration de version (il est recommandé d'ajouter le paramètre --hard, git prend en charge les regrets illimités) 🎜

    • 回退到上一个版本:git reset ––hard HEAD^
    • 回退到上上一个版本:git reset ––hard HEAD^^
    • 回退到上N个版本:git reset ––hard HEAD~N(N是一个整数)
    • 回退到任意一个版本:git reset ––hard 版本号(版本号用7位即可)

  • Git忽略提交规则 - .gitignore配置

    • 别看了, 你想要的都在这企业开发专用链接
#               表示此为注释,将被Git忽略*.a             表示忽略所有 .a 结尾的文件!lib.a          表示但lib.a除外/TODO           表示仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/          表示忽略 build/目录下的所有文件,过滤整个build文件夹;
doc/*.txt       表示会忽略doc/notes.txt但不包括 doc/server/arch.txt
 
bin/:           表示忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
/bin:           表示忽略根目录下的bin文件
/*.c:           表示忽略cat.c,不忽略 build/cat.c
debug/*.obj:    表示忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj
**/foo:         表示忽略/foo,a/foo,a/b/foo等
a/**/b:         表示忽略a/b, a/x/b,a/x/y/b等!/bin/run.sh    表示不忽略bin目录下的run.sh文件*.log:          表示忽略所有 .log 文件
config.php:     表示忽略当前路径的 config.php 文件 
/mtk/           表示过滤整个文件夹*.zip           表示过滤所有.zip文件/mtk/do.c       表示过滤某个具体文件
 
被过滤掉的文件就不会出现在git仓库中(gitlab或github)了,当然本地库中还有,只是push的时候不会上传。
 
需要注意的是,gitignore还可以指定要将哪些文件添加到版本管理中,如下:!*.zip!/mtk/one.txt
 
唯一的区别就是规则开头多了一个感叹号,Git会将满足这类规则的文件添加到版本管理中。为什么要有两种规则呢?
想象一个场景:假如我们只需要管理/mtk/目录中的one.txt文件,这个目录中的其他文件都不需要管理,那么.gitignore规则应写为::/mtk/*
!/mtk/one.txt
 
假设我们只有过滤规则,而没有添加规则,那么我们就需要把/mtk/目录下除了one.txt以外的所有文件都写出来!
注意上面的/mtk/*不能写为/mtk/,否则父目录被前面的规则排除掉了,one.txt文件虽然加了!过滤规则,也不会生效!
 
----------------------------------------------------------------------------------
还有一些规则如下:
fd1/*
说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;
 
/fd1/*
说明:忽略根目录下的 /fd1/ 目录的全部内容;
 
/*
!.gitignore
!/fw/ 
/fw/*
!/fw/bin/
!/fw/sf/
说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录;注意要先对bin/的父目录使用!规则,使其不被排除。

GIT命令-团队开发

  • git init --bare : 仓库初始化(共享仓库)
    • 注意: 不要直接在共享仓库中编写代码
  • git clone:下载远程仓库到本地
    • 下载远程仓库到当前路径:git clone 仓库的URL
    • 下载远程仓库到特定路径:git clone 仓库的URL 存放仓库的路径
  • git pull:下载远程仓库的最新信息到本地仓库
  • git push:将本地的仓库信息推送到远程仓库
    • 提交时如果远程仓库有其它人提交的最新代码, 必须先pull, 再提交
  • 冲突解决:
    • 当多个人同时修改了同一个文件时, 后提交的需要先从服务器pull代码到问题, 手动解决完冲突之后再push到远程服务器
<<<<<<< HEAD
	你本地的新增的代码=======
	服务器上和你冲突的代码>>>>>>> e9609de28b65bf97539f94c6458cdebdf2711c9f

GIT经典协同模型

  • 中心仓库:包含master和develop两个分支

  • 分支分类

    • 主要分支:master和develop分支
    • 支持性分支:特性分支,发布分支,热补丁分支
  • 对于商业级项目,真正开发过程中都是基于develop分支进行的,develop分支是开发主线!

  • master分支中,只存放相对稳定的分支,例如:0.1版本, 0.2版本

  • 在实际产品开发中,需要“规划版本”,例如:将100个功能规划到5个不同的版本上

  • 发现bug,要基于“上一个最稳定的版本”进行修复,这是热补丁分支存在的意义!

  • 理解清楚版本管理分支的特性,是迭代式开发的重要基础!

  • git branch : 查看所有分支

  • git branch 分支名称 : 创建分支

  • 新创建的分支中的内容和master分支中的内容一样
  • git checkout 分支名称 : 切换到指定分支
  • git merge 分支名称 : 合并分支
    • 将当前所在分支和指定名称分支进行合并
  • git branch -d 分支名称 : 删除指定分支
  • 不能在当前分支中删除自己

使用GIT我们应该

  • 经常更新:降低冲突的可能性
  • 提交前需在本机测试通过:降低将问题代码传到版本库
  • 提交时一定写备注:方便其他员工查看和自己以后回顾
  • 对于不需要提交的文件不要提交到版本库

提示:

  • Mise à jour avant chaque soumission
  • Soumettez chaque jour le code compilé de la veille du travail
  • La première chose au travail chaque jour est de mettre à jour le code de la veille

GITHUB UTILISANT

  • 1 S'inscrire. un compte GitHub
  • 2. Connectez-vous à GitHub
  • 3. Cliquez sur votre référentiel
  • 4.
    5 .L'entrepôt nouvellement créé peut être téléchargé, mais la soumission nécessite un compte et un mot de passe
  • 6 Configurer la clé SSH
  • 6.1 Ouvrez l'outil de ligne de commande git
    • Entrez la commande ssh-keygen -t rsa -b 4096 -. C "votre_email@exemple.com"
    • ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    • 6.2复制刚才生成的公钥
    • 6.3将生成好的SSH Key 添加到GitHub
    • 6.4测试是否配置成功 ssh -T git@github.com
    • 6.2 Copiez la clé publique qui vient d'être générée
    • 6.3 Ajouter la clé SSH générée à GitHub

6.4 Tester si la configuration est réussie ssh -T git@github.com

    S'il apparaît plus tard : Salut *** * ! Vous vous êtes authentifié avec succès, mais GitHub ne fournit pas d'accès au shell. Succès prouvé

7. Utilisez la clé SSH pour faire fonctionner GitHub
Recommandé. apprentissage : "

Tutoriel Git🎜"🎜 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer