Maison  >  Article  >  développement back-end  >  Explication détaillée de Git - l'équipe développe rapidement des artefacts

Explication détaillée de Git - l'équipe développe rapidement des artefacts

黄舟
黄舟original
2017-03-21 09:56:381416parcourir


Je suis un étudiant junior dans un collège de premier cycle. J'ai ma propre équipe d'étudiants à l'école. Pendant le développement du projet, afin d'améliorer l'efficacité du développement, j'ai utilisé la technologie Git. Maintenant, je vais résumer git, tout le monde est invité à communiquer entre eux.

Avant d'apprendre git, comprenons d'abord quelques concepts de base de git

1 Le workflow git est présenté dans la figure ci-dessous

.

Explication détaillée de Git - léquipe développe rapidement des artefacts

2. Quelques concepts de base

  • Répertoire .git : généré lors de l'utilisation de git init pour initialiser un entrepôt git. Le répertoire caché git stocke des informations telles que les enregistrements de modifications de fichiers de l'ensemble du projet.

  • Espace de travail : il peut être compris comme le répertoire où se trouve l'entrepôt git local, qui est également le répertoire du projet.

  • Zone de préparation : tous les fichiers ajoutés via la commande git add sont stockés dans la zone de préparation, qui est en fait le fichier d'index sous le répertoire .git.

  • Dépôt : c'est-à-dire l'intégralité de l'entrepôt git.

  • La relation entre les trois : l'espace de travail est votre répertoire de développement, tous les fichiers modifiés sont ajoutés à la zone de préparation via git add, puis soumis au référentiel git local via le git commit commande, puis Push vers le référentiel git distant via git push.

La structure habituelle de l'entrepôt git est la suivante

git@git.xxx.com:user/project_name.git
|-master (branche principale, synchronisée avec le code en ligne)
|-develop (branche de développement, une fois le développement de la fonction terminé, elle sera d'abord fusionnée avec develop, puis develop sera fusionnée avec master)
|-feature (branche temporaire (branche de fonction), par exemple, pour développer une certaine fonction, vous pouvez créer une nouvelle branche de fonctionnalités et fusionner la branche de fonctionnalités dans développer une fois terminé)
|———— feature/update_online_pay_api
|———— feature/add_new_feature..
|———— …
|-release (branche temporaire (branche de pré-version), après le développement et les tests, créez une nouvelle branche de version pour les tests, fusionnez-la dans master et développez une fois terminé)
|———— release/update_online_pay_api
|———— …
|-hotfix (branche temporaire (branche de modification à chaud), généralement utilisée pour la modification d'urgence de tâches à court terme telles que les branches de bugs, fusionnée dans master et développée une fois la modification terminée)

|———— hotfix /handler_pay_bug
|————…

À propos des règles de dénomination des branches : voir le nom et connaître le nom. Les branches temporaires peuvent être séparées par '/' ou '-', etc. Il n'y a aucune exigence obligatoire.

Lorsque vous recevez une exigence de produit et démarrez le développement, le processus git est le suivant :

Tout d'abord, vous devez synchroniser le projet dans l'entrepôt git distant avec votre entrepôt local. . Le processus est le suivant :

cd ~/workspace/git/ // 进入你个人的工作目录
mkdir project_name // 新建一个目录用于存放代码,名称可以和远程仓库名称一样
cd project_name // 进入你新建的目录
git init // 使用git初始化这个目录为一个git仓库
git remote add origin git@github.com:22th/oh-my-zsh.git // 关联本地仓库到一个远程仓库
git fetch --depth=1 // 更新远程仓库的一些信息到本地,比如分支信息等
git checkout -b master origin/master // 检出一个分支master并关联远程的master分支
git pull // 更新本地仓库代码

Grâce au processus ci-dessus, vous pouvez synchroniser le projet distant avec le projet local. Désormais, la valeur par défaut est la branche principale distante. Vous ne pouvez pas modifier le code dans la branche principale. De manière générale, vous ne disposez pas de cette autorisation. Après avoir synchronisé le code avec le local, vous devez créer une nouvelle branche de développement en fonction des besoins de l'entreprise. Le nom peut être ajusté en fonction de vos besoins. Par exemple, si vous souhaitez développer une nouvelle fonctionnalité, vous créez une fonctionnalité-xxx. branche. Si vous souhaitez résoudre un bug, vous pouvez créer une branche hotfix-xxx. Il n'est pas recommandé de créer une nouvelle branche localement. Vous devez créer une nouvelle branche à partir de l'arrière-plan de gestion de l'entrepôt git, puis la vérifier localement. Créer une nouvelle branche en arrière-plan de gestion est très simple, je n'entrerai donc pas dans les détails.
Ensuite, vous vérifiez localement votre branche nouvellement créée, la commande est la suivante : git checkout -b feature-xxx origin/feature-xxx

La prochaine étape est votre processus de développement heureux, développez sur votre propre branche, testez, puis soumettez, elle sera Les commandes git utilisées sont les suivantes :

git add <file> // 将工作区修改添加到暂存区,加上 --all 参数表示将所有修改添加到暂存区
git commit -m “msg” // 将暂存区的修改添加到版本库
git push -u origin feature-xxx // 将本地仓库中的修改推送到远程
git status // 查看当前工作区间状态
git log // 查看历史commit
git checkout -- <file> // 用最后一次commit的文件替换当前工作区间的文件
git reset --hard // 丢弃工作区间所有修改,回滚到上一个commit状态
git checkout <版本号> // 回滚到指定版本

Pour développer des fonctions, vous devez les tester et les publier en ligne :

1 Créer une nouvelle release-xxx. dans l'arrière-plan de gestion de l'entrepôt git, Branch, basé sur votre branche feature-xxx, est principalement utilisé pour les tests.

2. Une fois le test release-xxx terminé, vous pouvez le fusionner dans les branches master et développer. Généralement, vous soumettez une demande de fusion via l'arrière-plan de gestion de l'entrepôt git, attendez la confirmation du personnel de direction concerné. , fusionnez-le dans le maître et soumettez la demande de fusion. Avant, fusionnez d'abord la branche principale pour vous assurer que le code nouvellement modifié sur le maître est synchronisé avec vous. Des conflits peuvent survenir lors de la fusion du maître. Recherchez les fichiers en conflit, résolvez-les et validez. Le format du conflit est le suivant :

<<<<<<< HEADln -s ../statics xxx
=======ln -s ../statics statics
>>>>>>> master

où ««« master représente le code dans la branche master. Ensuite, le processus de résolution manuelle des conflits consiste à confirmer le code que vous souhaitez conserver et à supprimer l'autre C'est-à-dire que si vous souhaitez conserver votre code local, alors c'est comme ceci :

.
<<<<<<< HEAD (删除)
ln -s ../statics xxx (保留)
======= (删除)
ln -s ../statics statics (删除)
>>>>>>> master (删除)

保留 «««git commit -am “解决冲突”。
3、好了,其他的工作就是运维人员来处理了。一般是这样的,release-xxx分支测试完成并解决所有冲突后,运维发布人员merge到master分支,然后通过 git d<a href="http://www.php.cn/wiki/109.html" target="_blank">if</a>f 608e120 4abe32e --name-only | xargs zip update.zip 命令打包差异文件,然后发布这个差异文件包就可以啦,不需要所有文件都覆盖线上文件。


到这里,整个git项目开发流程就已经非常清楚了。git还有很多高级功能,比如文件对比、文件历史修改记录、关联多个远程仓库等等需要你慢慢去摸索了。使用git要灵活运用分支,因为git新建切换分支的成本非常低,因为git新建分支不是想svn那样吧整个目录复制一遍,然后通过索引文件等更高级的方式来处理,效率高太多。

在推荐个git图形化管理工具:
source tree, mac和windows都有。


If you liked this article and think others should read it, please follow webff

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn