dev
pour le développement. À l'heure actuelle, les deux branches ont des enregistrements de soumission. Lorsque nous fusionnons, la situation normale devrait être de fusionner directement sur la base de main , au lieu d'ajouter une information de soumission supplémentaire de C7
, qui est la Merge branch
mentionnée ci-dessus. C'est évidemment un phénomène très déraisonnable (bien sûr, cela n'affecte pas le travail normal de git). . 🎜🎜
git rebase
, communément appelé rebase. 🎜下面我们先来看看变基以后git分支是什么样的了
可以看到,当dev
分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。
示例操作" >🎜fusion ou rebase🎜🎜🎜Pour les opérations de fusion mentionnées ci-dessus, nous fusionnons généralement une certaine branche directement via la branche git merge <branch name>
code. Examinons d'abord le problème de l'utilisation directe de git merge
. Il y a un message Merge branch
très désagréable, comme indiqué ci-dessous : 🎜🎜
🎜🎜L'image suivante est un organigramme après la fusion. Quand nous Le < La branche code>main extrait un dev
pour le développement. À l'heure actuelle, les deux branches ont des enregistrements de soumission. Lorsque nous fusionnons, la situation normale devrait être de fusionner directement sur la base de main , au lieu d'ajouter une information de soumission supplémentaire de C7
, qui est la Merge branch
mentionnée ci-dessus. C'est évidemment un phénomène très déraisonnable (bien sûr, cela n'affecte pas le travail normal de git). . 🎜🎜
🎜🎜Comment résoudre ce problème Quels sont les problèmes provoqués par le phénomène ? La réponse est git rebase
, communément appelé rebase. 🎜
下面我们先来看看变基以后git分支是什么样的了
可以看到,当dev
分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。
示例操作



Parlons de la façon d'extraire et de fusionner élégamment du code dans Gitlab
Comment extraire et fusionner du code avec élégance dans Gitlab ? L'article suivant vous présentera la méthode d'extraction et de fusion de code dans Gitlab. J'espère qu'il vous sera utile !
pull or fetch
Il existe deux formes d'opérations d'extraction de code, git pull
et git fetch
, alors quelle est la différence entre les deux ? ? git pull
和git fetch
,那么这两种有什么区别呢?
让我们先来看看一个架构图
图中展示一个完整的git流程,为了更清晰的了解每个区域,我们下来解释一下他们的功能:
- 工作区(working directory), 简言之就是你工作的区域。对于git而言,就是的本地工作目录。
-
暂存区(stage area, 又称为索引区index), 是把修改提交版本库前的一个过渡阶段。在工作目录下
.git
的目录里面有个index
文件,存储着关于暂存区的内容。git add命令将工作区内容添加到暂存区。 -
本地仓库(local repository), 版本控制系统的仓库,存在于本地。当执行git commit命令后,会将暂存区内容提交到仓库之中。
.git/objects
目录中存放了每一个提交的记录,而在.git/refs
目录下存放的是分支信息和tag信息。 - 远程版本库(remote repository), 与本地仓库概念基本一致,不同之处在于一个存在远程,可用于远程协作,一个却是存在于本地。通过push/pull可实现本地与远程的交互;
-
远程仓库副本, 可以理解为存在于本地的远程仓库缓存。当使用
git fetch
拉取远程代码仓库的时候,就相当于在本地有一个远程仓库的副本,你可以选择把这个副本合并到本地仓库中。
从图中可以看出来,当我们使用git pull
拉取代码的时候,是直接合并到了本地分支,而使用git fetch
拉取代码的时候,会先在本地生成一个远程仓库的副本,然后使用git merge
或者git rebase
合并到本地分支。
既然能直接git pull
何必多次一举呢?试想一个场景,当你想合并别人的代码,又不知道人家改了什么东西,是否能够跟你代码合并到一起,这时候通过git fetch
就能很轻易的实现。git fetch
以后实际并不会立马跟本地分支立马合并,在git fetch
以后,会显示如下图:
上图显示了远程新增了一个test2
分支,在test
分支上多了个一个提交信息,这时候在.git/refs/remotes/origin
目录下可以看到多了一个test2
分支。
使用git log origin/test
,可以查看具体的提交信息
如果想查看提交的内容是啥,只能通过新建一个分支,
git checkout -b test-origin git merge test
讲到这里,相信你已经明白了git pull
和git fetch
的区别了吧。总结一下:
git fetch 更安全,更人性化
git pull 更激进,破坏性更强
一般的Leader在管理项目的时候都是习惯性的使用git fetch
查看最近新增了哪些分支,做了哪些修改,从而对项目做出更好的把控。
merge or rebase
上面提到的合并操作,一般我们直接是通过git merge <分支名>
去合并某个分支的代码。先看看直接使用git merge
的问题,有一条看着很不顺眼的Merge branch
信息,如下图所示:
下图是合并后的一个流程图,当我们在main
分支拉一个dev
进行开发,这时候两个分支都有提交记录,当我们合并的时候,正常情况应该是在main的基础上,直接合并,而不是多了一个C7
的提交信息,也就是上面提到的Merge branch
,这显然是一个很不合理的现象(当然这也不影响git正常工作)。
那如何解决这个现象导致的问题呢?答案就是git rebase

- 🎜Répertoire de travail, 🎜 Simple En d'autres termes, c'est la zone. où vous travaillez. Pour git, c'est le répertoire de travail local.
- 🎜Staging zone (stage zone, également appelée zone d'index), 🎜 est une étape de transition avant de soumettre les modifications au référentiel. Il existe un fichier
index
dans le répertoire.git
sous le répertoire de travail, qui stocke le contenu de la zone de stockage temporaire. La commande git add ajoute le contenu de l'espace de travail à la zone de préparation. - 🎜Référentiel local, 🎜 Le référentiel du système de contrôle de version, existe localement. Lorsque la commande git commit est exécutée, le contenu de la zone de transit sera soumis à l'entrepôt. Le répertoire
.git/objects
stocke les enregistrements de chaque soumission, tandis que le répertoire.git/refs
stocke les informations sur les branches et les balises. - 🎜Le référentiel distant, 🎜 est fondamentalement le même concept que l'entrepôt local. La différence est que l'un existe à distance et peut être utilisé pour la collaboration à distance, tandis que l'autre existe localement. L'interaction locale et à distance peut être obtenue via push/pull ;
- 🎜Copie d'entrepôt distant, 🎜 peut être comprise comme un cache d'entrepôt distant qui existe localement. Lorsque vous utilisez
git fetch
pour extraire un référentiel de code distant, cela équivaut à avoir une copie du référentiel distant localement. Vous pouvez choisir de fusionner cette copie dans le référentiel local.
git pull
pour extraire le code, il est directement fusionné dans la branche locale, tout en utilisant git fetch </code code>Lors de l'extraction du code, il générera d'abord une copie de l'entrepôt distant localement, puis utilisera <code>git merge
ou git rebase
pour le fusionner dans la branche locale. . 🎜🎜Pourquoi s'embêter à le faire plusieurs fois quand vous pouvez git pull
directement ? Imaginez un scénario. Lorsque vous souhaitez fusionner le code d'autres personnes, mais que vous ne savez pas ce qu'ils ont modifié et s'il peut être fusionné avec votre code, cela peut être facilement réalisé via git fetch
. git fetch
ne sera pas fusionné avec la branche locale immédiatement. Après git fetch
, l'image suivante s'affichera : 🎜🎜
test2</code est ajouté à distance > branche, il y a une information de soumission supplémentaire sur la branche <code>test
. À ce stade, vous pouvez voir un autre dans le répertoire <code>.git/refs/remotes/origin
. . branche test2. 🎜🎜Utilisez git log origin/test
pour afficher des informations de soumission spécifiques🎜🎜
# 拉取main分支代码 git fetch origin main # 合并到dev git rebase origin/main
git Quelle est la différence entre pull
et git fetch
? Pour résumer : 🎜- 🎜git fetch est plus sûr et plus convivial🎜
- 🎜git pull est plus agressif et destructeur🎜
git fetch
pour vérifier quelles branches ont été récemment ajoutées et quelles modifications ont été apportées, afin de mieux contrôler le projet. 🎜🎜fusion ou rebase🎜🎜🎜Pour les opérations de fusion mentionnées ci-dessus, nous fusionnons généralement une certaine branche directement via la branche git merge <branch name>
code. Examinons d'abord le problème de l'utilisation directe de git merge
. Il y a un message Merge branch
très désagréable, comme indiqué ci-dessous : 🎜🎜
🎜🎜L'image suivante est un organigramme après la fusion. Quand nous Le < La branche code>main extrait un dev
pour le développement. À l'heure actuelle, les deux branches ont des enregistrements de soumission. Lorsque nous fusionnons, la situation normale devrait être de fusionner directement sur la base de main , au lieu d'ajouter une information de soumission supplémentaire de C7
, qui est la Merge branch
mentionnée ci-dessus. C'est évidemment un phénomène très déraisonnable (bien sûr, cela n'affecte pas le travail normal de git). . 🎜🎜
🎜🎜Comment résoudre ce problème Quels sont les problèmes provoqués par le phénomène ? La réponse est git rebase
, communément appelé rebase. 🎜
下面我们先来看看变基以后git分支是什么样的了
可以看到,当dev
分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。
示例操作
上面讲了这么多,现在让我们来实际操作一下。
场景:远程有一个main
分支上有内容更新,现在我们需要把更新的内容合并到本地dev
分支上,然后push
到远程dev
分支,当前分支实在dev分支。
简单实现(就是很朴实无华):
# 拉取main分支代码 git fetch origin main # 合并到dev git rebase origin/main
上面的git rebase
还有个快捷的操作,直接一行命令搞定
# 拉取test分支代码合并到dev git pull --rebase origin test
如果你不想每次都添加rebase
,可以在终端中输入下面的命令:
git config --global pull.rebase true
这个配置就是告诉git在每次pull前先进行rebase操作
其他命令参考
# 查看本地分支 git branch # 查看远程分支 git branch -r # 查看所有分支 git branch -a # 拉取所有远程分支代码 git fetch # 拉取origin源上所有分支代码 git fetch origin # 拉取orign源上main分支代码 git fetch origin main # 拉取远程分支到新建的一个本地分支并 git checkout -b newBrach origin/master # 合并远程分支到本地 git pull --rebase origin master # 查看提交日志 git log --oneline # 查看某个人提交的日志 git log --author=xiumubai --oneline # 查看某个文件提交的记录 git blame README.md # 查看某次提交的内容 git show <commitid> # 查看最近几次的提交 git log -p -n
(学习视频分享:编程基础视频)
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Pour supprimer un référentiel GIT, suivez ces étapes: Confirmez le référentiel que vous souhaitez supprimer. Suppression locale du référentiel: utilisez la commande RM -RF pour supprimer son dossier. Supprimer à distance un entrepôt: accédez à l'entrepôt, trouvez l'option "Supprimer l'entrepôt" et confirmez l'opération.

Git Commit est une commande qui enregistre le fichier qui passe à un référentiel GIT pour enregistrer un instantané de l'état actuel du projet. Comment l'utiliser est comme suit: Ajoutez des modifications à la zone de stockage temporaire Écrivez un message de soumission concis et informatif pour enregistrer et quitter le message de soumission pour compléter la soumission éventuellement: Ajoutez une signature pour le journal GIT Utilisez le contenu de soumission pour afficher le contenu de soumission

La connexion d'un serveur GIT au réseau public comprend cinq étapes: 1. Configurer l'adresse IP publique; 2. Ouvrez le port de pare-feu (22, 9418, 80/443); 3. Configurer l'accès SSH (générer des paires de clés, créer des utilisateurs); 4. Configurer l'accès HTTP / HTTPS (installer les serveurs, configurer les autorisations); 5. Testez la connexion (en utilisant les commandes SSH Client ou GIT).

Pour détecter SSH via GIT, vous devez effectuer les étapes suivantes: générer une paire de clés SSH. Ajoutez la clé publique au serveur GIT. Configurez Git pour utiliser SSH. Testez la connexion SSH. Résoudre les problèmes possibles en fonction des conditions réelles.

Pour télécharger des projets localement via GIT, suivez ces étapes: installer Git. Accédez au répertoire du projet. Clonage du référentiel distant à l'aide de la commande suivante: Git Clone https://github.com/username/repository-name.git

Résolve: lorsque la vitesse de téléchargement GIT est lente, vous pouvez prendre les étapes suivantes: Vérifiez la connexion réseau et essayez de changer la méthode de connexion. Optimiser la configuration GIT: augmenter la taille du tampon post (Git Config - Global Http.PostBuffer 524288000) et réduire la limite à basse vitesse (Git Config - Global Http.LowspeedLimit 1000). Utilisez un proxy GIT (comme Git-Proxy ou Git-LFS-Proxy). Essayez d'utiliser un client GIT différent (comme SourceTree ou GitHub Desktop). Vérifiez la protection contre les incendies

Lors du développement d'un site Web de commerce électronique, j'ai rencontré un problème difficile: comment atteindre des fonctions de recherche efficaces en grande quantité de données de produit? Les recherches traditionnelles de base de données sont inefficaces et ont une mauvaise expérience utilisateur. Après quelques recherches, j'ai découvert le moteur de recherche TypeSense et résolu ce problème grâce à son client PHP officiel TypeSense / TypeSen-PHP, ce qui a considérablement amélioré les performances de recherche.

Pour retomber un engagement Git, vous pouvez utiliser la commande git reset - hard ~ n, où n représente le nombre de validations à se replier. Les étapes détaillées comprennent: déterminer le nombre de validations à faire reculer. Utilisez l'option - dure pour forcer une secours. Exécutez la commande pour retomber à l'engagement spécifié.
