Notes d'étude de gestion de projet Git (cours vidéo sur l'éducation Qianfeng)

La plupart des informations proviennent de Qianfeng Education, et l'individu a apporté quelques modifications.
Intrusion et suppression.
Informations vidéo correspondantes: https://www.bilibili.com/video/BV1Mf4y117f3?p=1&spm_id_from=pageDriver

Introduction


  • Dans le processus de développement par une seule personne, la gestion des versions est nécessaire pour faciliter le contrôle de la progression du développement.

  • Dans le processus de développement multi-personnes, non seulement la gestion des versions est requise, mais également un contrôle collaboratif multi-personnes .

2. Présentation


  • Git est un système de contrôle de version distribué open source pour le traitement agile et efficace de tout petit ou grand projet.
  • Git est un logiciel de contrôle de version open source développé par Linus Torvalds pour aider à gérer le développement du noyau Linux.
  • Site officiel: https://git-scm.com/

Trois, installation de Git


3.1 Télécharger Git

Téléchargez Git https://git-scm.com/downloads

3.2 Installation

Installation, en plus de l'emplacement d'installation, l'autre peut être la prochaine étape

3.3 Configuration de base (définir les variables globales)

  • Après l'installation, ouvrez la fenêtre cmd de git et signalez votre domicile

  • Les informations suivantes seront utilisées lors de la soumission du code et enregistrées dans chacune de vos soumissions. Ce n'est que plus tard que je saurai qui a fait quelle soumission.

git config --global user.name "Your Name"  #用户名
git config --global user.email "[email protected]"  #邮箱
# 查看信息
git config -l 

3.4 Test

Test: exécuter dans cmd, vérifier la version de git

git version  

Quatre, l'architecture


  • Repository: Il y a un répertoire caché .git dans la zone de travail, ce répertoire n'appartient pas à la zone de travail, mais git 版本库, c'est tout le contenu géré par git

  • Zone de stockage temporaire: la bibliothèque de versions contient une zone temporaire pour enregistrer les fichiers à soumettre à l'étape suivante

  • Branche: le référentiel contient plusieurs branches et les fichiers soumis sont stockés dans la branche

Diagramme d'architecture
sLzrdk

Cinq, entrepôt


Le correspondant est un répertoire , tous les fichiers de ce répertoire sont gérés par git.

À l'avenir , le répertoire racine d' un projet sera utilisé comme entrepôt.

Les modifications apportées à chaque fichier du référentiel sont suivies par git.

5.1 Nouvel entrepôt

Sélectionnez un répertoire et exécutez la commande: git init

Nouvel entrepôt Catalogue d'entrepôt
[Échec du transfert de l'image du lien externe. Le site source dispose peut-être d'un mécanisme de liaison anti-sangsue. Il est recommandé d'enregistrer l'image et de la télécharger directement (img-37TmA3Vh-1613493411419) (/ Users / xwj / Library / Application Support / typora- user-images / image-20210216205341427 .png)] PU8ELh

5.2 Zone de travail

Le répertoire git init est exécuté est la zone de travail, comme dans l'exemple ci-dessus, le répertoire D: \ repo1 est la zone de travail [sans le répertoire .git ]

Tous les fichiers sont d'abord créés dans la zone de travail, puis peuvent être stockés dans l'entrepôt (bibliothèque de versions) pour le contrôle de version.

5.3 Zone de stockage temporaire

La zone de stockage temporaire se trouve également dans le répertoire .git . Lorsque les fichiers de la zone de travail entrent dans l'entrepôt, ils doivent d'abord entrer dans la zone de stockage temporaire.

5.4 Succursale

Le contrôle de version, pour faire simple, consiste à enregistrer de nombreuses versions d'un fichier, et la branche est l'emplacement d'enregistrement final de ces versions.

Six, opérations de base


6.1 Vérifier l'état de l'entrepôt

Exécutez git status pour voir l' état des fichiers dans l'espace de travail

Les fichiers non enregistrés ne sont pas suivis
[Échec du transfert de l'image du lien externe. Le site source dispose peut-être d'un mécanisme de liaison anti-sangsue. Il est recommandé d'enregistrer l'image et de la télécharger directement (img-ju4HiAcL-1613493411420) (http://xwjpics.gumptlu.work/qinniu_uPic/ xO3NjM.png)]

6.2 Fichier temporaire

Exécutez git add. Enregistrez tous les fichiers de l'espace de travail dans la zone de stockage temporaire

Enregistrez les fichiers de la zone de travail dans la zone de stockage temporaire
dQEOq0

6.3 Soumettre des documents

Exécutez git commit -m "Écrivez la description de la soumission ici" .Stockez tous les fichiers de la zone de stockage temporaire dans la brancheFormer une nouvelle version

Soumettre des documents pour former une version
bgbtO1

Seven, entrepôt éloigné


L'entrepôt du chapitre 5 est en fait un entrepôt local.

Lorsque plusieurs personnes développent en collaboration, chacun conserve la version dans son propre entrepôt local.

Mais le point important est que plusieurs personnes doivent partager le code et fusionner le code. Pour le moment, un entrepôt distant est nécessaire .

7.1 Mode de fonctionnement de l'entrepôt distant

Mode de fonctionnement de l'entrepôt à distance
9otguV

7.2 Sélection de l'entrepôt distant

  • Vous avez le choix entre de nombreux entrepôts distants, tels que github ( https://github.com/ ), code cloud ( https://gitee.com/ ). Notez que github ou code cloud ne sont pas des entrepôts distants mais des serveurs git. Construisez un entrepôt distant dessus ;

    Vous pouvez vous inscrire à ces deux types pour vos propres tests, mais s'il s'agit d'un projet commercial, vous devez payer pour plus d'assistance.

  • L'entreprise peut également faire construire un entrepôt distant par elle-même ( http://qianfeng.qfjava.cn:8087/users/sign_in ).

7.3 Fonctionnement de base

Chaque développeur devra faire face à des opérations de base face à un entrepôt distant.

7.3.1 Enregistrer un compte de serveur git

Dans le compte enregistré de nuage de code et connectez-vous.

Après être entré dans l'entreprise, il est susceptible d'utiliser le serveur git construit par l'entreprise elle-même, vous pouvez donc demander le compte au chef.

7.3.2 Créer un nouvel entrepôt distant

5kSA5g

7.3.3 Associer localement l'entrepôt distant

Dans ce document, l'adresse de protocole https de l'entrepôt est sélectionnée, et cette adresse est associée au git local

git remote add origin [https地址\ssh地址]Ajouter une adresse distante

git remote -vAfficher l'adresse actuellement associée à l'entrepôt local

Après cela, l '«origine» locale peut être utilisée pour faire référence à l'entrepôt distant
wXpCOC
Transférer les fichiers vers l'entrepôt distant

Transférez le contenu validé de l'entrepôt local vers l'entrepôt distant pour partager votre propre code.

pousser
[Échec du transfert de l'image du lien externe. Le site source dispose peut-être d'un mécanisme de liaison anti-sangsue. Il est recommandé d'enregistrer l'image et de la télécharger directement (img-RJBCBvGj-1613493411423) (http://xwjpics.gumptlu.work/qinniu_uPic/ bRdmkS.png)]
Afficher sur le serveur github
8ZpEC4
7.3.5 Cloner un entrepôt distant

Si l'entrepôt a été créé par quelqu'un d'autre et que nous avons besoin du contenu, nous pouvons le copier dans le local via git clone .

Créez un nouveau répertoire "repo2", puis exécutez git clone dedans
NHnMO2
7.3.6 Partage de code

Lorsque plusieurs personnes développent en collaboration, le git push du code écrit est téléchargé dans l'entrepôt distant; le git pull du code est nécessaire pour extraire le code.

Sauvegarder: Quelqu'un pousse le fichier local vers l'entrepôt distant:git push origin master

prendre: Important: à ce stade, si l'autre partie souhaite obtenir la mise à jour, elle doit effectuer une extraction git pull origin master

WkOGvK

7.3.7 Résumé des commandes
commander la description
git remote add adresse distante du nom distinctif (maître) Entrepôt distant associé localement
git push identifiant nom maître Télécharger le contenu de l'entrepôt local vers l'entrepôt distant
git pull identification nom maître Télécharger le contenu de l'entrepôt distant vers l'entrepôt local
adresse distante git clone Copiez l'entrepôt distant dans le local et formez automatiquement un entrepôt local

La différence entre git clone et git pull est la suivante: lorsque la zone locale est vide, git clone est utilisé pour la première fois et git pull est utilisé pour chaque mise à jour suivante.

Huit, branche


8.1 Présentation des succursales

  • La branche est l'emplacement où chaque version est finalement stockée.

  • Une branche est une chronologie. Chaque commit git forme une version, et les versions sont stockées tour à tour dans les points de commit de la branche.

La branche est composée de plusieurs points de validation, et il y aura un pointeur sur la branche, qui pointe toujours vers le dernier point de validation par défaut
SlW3Kr

Le contenu obsolète / le contenu non modifié de la nouvelle version soumise à chaque fois ne conservera qu'un de ses liens dans la nouvelle version au lieu de le copier. Il s'agit d'une méthode d'optimisation

8.2 Fonctionnement en succursale

8.2.1 Voir la branche
  • Afficher la branche de la branche git actuelle de l'entrepôt

  • Il n'y a que la succursale principale dans l'entrepôt par défaut

  • Lors de l'exécution de git commit , la valeur par défaut est d'enregistrer la version sur la branche master.

Seulement la branche principale par défaut
4MqN0F
8.2.2 Créer une branche
  • Lors du développement de projets commerciaux, nousNe sera pas facile fonctionner sur le maître branche.

  • nousUne nouvelle branche de développement sera créée et des enregistrements de version seront créés sur cette branche.

    Lorsqu'il n'y a pas de problème avec le code, la version de code mature sur la branche de développement sera ajoutée à la branche master .

  • Assurez -vous que la version peut être enregistrée dans le temps au cours du processus de développement, et que commettras chaque point sur le maître branche est une version stable.

  • git branch 新分支名

  • La branche avec * devant elle représente la branche actuellement utilisée, et la branche par défaut est la branche principale

Créer une branche
QZazBX
8.2.3 Changer de branche
  • Par défaut, la branche actuellement utilisée est la branche principale
  • Vous pouvez basculer vers la branche dev, et les commits git suivants créeront une nouvelle version sur la branche dev (point de commit)
  • git checkout 分支名
Changer de branche
FO5C0A
Vérifiez à nouveau la situation de la succursale
9rE8pI

8.3 Détails de la nouvelle succursale

Lors de la création d'une nouvelle branche, quel contenu la nouvelle branche a-t-elle par défaut? Quels commits sont inclus dans la branche?

8.3.1 Contenu initial de la nouvelle succursale

Chaque branche a un pointeur ,Pour créer une nouvelle branche, créez d'abord un nouveau pointeur .

而且新分支的指针会和当前分支指向同一个提交点

新分支包含的提交点就是从第一个提交点到分支指针指向的提交点。

每个分支都有一个指针,新建一个分支,首先是新建一个指针
xefRyi
8.3.2 多分支走向

在master分支和新分支,分别进行 git addgit commit

分支情况如下图:

master分支未动,在dev分支增加一次commit
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bCUoDN95-1613493411426)(http://xwjpics.gumptlu.work/qinniu_uPic/JvXtbD.png)]
master分支增加一个commit,dev分支再增加一个commit
CswXUi
8.3.3 分支提交日志

查看分支的提交日志,进而看到当前分支中提交点的详细情况

简略的查看 git log --oneline

详细的查看:git log

查看当前分支的提交日志
qZBQLz

8.4 分支合并

两个分支内容的合并

git merge 分支a 当前分支合并到分支a

合并的方式有两种:快速合并 和 三方合并

8.4.1 快速合并

如果分支A当前的修改,是完全基于分支B的修改而来,则B分支合并A分支,就是==移动指针即可==。

要求:主分支不动,其他分支一直更新

合并前分支状态
4FQKBX
快速合并效果(master 合并 dev)
ZueTRL
8.4.2 三方合并

在下图的情况下直接移动指针是不可以的,master会丢失自己原本的状态,所以需要三方合并

在不具备快速合并的条件下,会采用三方合并。

这个合并是git帮忙做的,其实我们是不用担心的

合并前,分支状态
Jmt6jL
三方合并,23的更改都累加在1上,形成新的提交点
awiIY2

三方合并,它是把两个分支的最新快照(2 和 3)以及二者最近的共同祖先(1)进行三方合并,合并的结果是生成一个新的快照(并提交)

8.4.3 合并冲突

两个分支进行合并,但它们含有对同一个文件的修改,则在合并时出现冲突,git无法决断该保留改文件哪个分支的修改。

8.4.3.1 冲突演示

场景模拟如下:

master分支修改hig.txt文件

dev分支修改hig.txt

对同一个文件做了不同的修改

然后在master分支 合并 dev分支

合并dev分支
3BpSsd

此时,打开hig.txt 文件:

冲突后,git会将两个分支的内容都展示在文件中
97live
8.4.3.2 冲突解决

出现冲突后,如要由两个开发人员当面协商,该如何取舍,为冲突文件定义最终内容。

解决方案:

  1. 保留某一方的,删除另一方的
  2. 保留双方的
  3. 但无论如何,要记得删除 <<<< ==== >>>> 这些
  4. 本质是两人协商为冲突的内容,定制出合理的内容。
  5. 根据协商,再次编辑文件
提交 再次编辑后的文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-byBj3jKu-1613493411429)(http://xwjpics.gumptlu.work/qinniu_uPic/8Thl31.png)]

九、IDE关联Git(以goland为例)


9.1 关联Git

File > Settings 关联过程是自动的

此处关联是Idea可以自动完成的
Foq2va

9.2 创建仓库

  • 新建项目后,将项目目录创建为git仓库

  • 注意: 要在建仓库,设置忽略文件 “.gitignore”

    作用:被忽略的文件会被版本记录忽略,版本中不包含它们。

    范围:不需要和其他开发共享的文件,具体见下图。

创建仓库前,先添加忽略文件
ZImtlk

9.3 提交-commit

创建好仓库后,做第一次提交。

sj1Kqh

9.4 创建分支

新建开发分支

点击右下角链接

9.5 上传到远程仓库(push)

  • 请首先参照第7章,创建一个远程仓库。

  • 要求是裸库,且建议库名和项目名同名。

9.6 复制到本地仓库(clone)

如果有建好的远程仓库,比如公司内已经在用的仓库,或者github,码云上的一些公开仓库,

可以将远程仓库的项目复制到本地使用。

9.7 更新本地项目

如果远程仓库有更新,则你的本地项目也需要一起更新。

9.8 冲突解决

合并分支时,如果出现冲突,则需要解决冲突。

当远端的文件与本地尚未上传远端的文件不同时,在本地拉取更新时就会造成冲突。

冲突出现,弹窗中可以选择如下
6fFLr8

两人协商保留什么代码然后修改即可

也可以直接修改冲突文件,然后commit即可

十、多人协同开发


多人开发协同,git操作

10.1 项目管理员( 项目经理 )

1> 由管理员负责创建一个远程库,初始的库中什么也没有,为裸库。库的名称建议和项目同名

2> 管理员会在idea中创建一个初始项目,其中包含.gitignore文件。

并在项目根目录下 建立本地库。并建立 dev分支。

3> 管理员将本地库上传到远程库

4> 将其他开发人员拉入远程库的 开发成员列表中 ,使得其他开发人员可以访问该远程库。

10.2 开发人员

  • 初始化:在idea中clone 远程库,获得项目。会建立本地库

  • Le développement ultérieur doit être effectué sur la branche dev. Après avoir développé une fonction et réussi le test, validez-la dans la branche de développement locale, puis téléchargez-la dans la branche de développement distante.

  • Lorsque le contenu du projet doit être mis à jour, extrayez le contenu de l'entrepôt distant via pull.

  • Remarque:Lors d'une collaboration à plusieurs personnes, à chaque fois avant de pousser vers la bibliothèque distante, effectuez d'abord une extraction, L'une consiste à fusionner le dernier contenu distant avec le contenu local et l'autre à vérifier si le contenu local est en conflit avec le contenu distant.

  • Le développement ultérieur recevra les tâches fonctionnelles une par une, et l'opération réciproque 2>, 3>, 4> n'est rien de plus que.

Onze problèmes classiques


Lorsque vous utilisez le protocole https pour le push, si vous avez utilisé Code Cloud, mais que le mot de passe a été modifié, une erreur sera signalée à ce moment

Les informations d'identification du compte précédent ne sont pas compatibles avec les nouvelles informations d'identification du compte git, les problèmes suivants se produiront donc:

Utilisez le protocole https pour signaler les erreurs
Iey1TN

Solution: Panneau de configuration "Credential Manager" Supprimez les informations d'identification correspondantes et vous serez invité à ressaisir le mot de passe lorsque vous l'utiliserez à nouveau.

Supprimez le certificat de cloud de code précédent, puis appuyez à nouveau

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43988498/article/details/113830336
conseillé
Classement