Présentation
git est un système de contrôle de version distribué
Centralisé et distribué: centralisé dispose d'un serveur central, qui nécessite un fonctionnement en réseau. Distribué, tout le monde a un référentiel
1. Installez git
-
Téléchargez git-> find git bash une fois l'installation terminée, open est une ligne de commande (indiquant une installation réussie)
-
Entrez ce qui suit sur la ligne de commande
引号内部填自己信息
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
2. Créez un référentiel
Le référentiel est également connu sous le nom d'entrepôt, nom anglaisrepository
Pour utiliser
Git a trois zones, une zone de travail, une zone temporaire et une bibliothèque de versions. L'espace de travail entre dans la zone de stockage temporaire après l'ajout et les fichiers dans la zone de stockage temporaire entrent dans le référentiel après la validation
1. Ajoutez
Remarque: les noms de fichiers suivants sont suffixés
git add "文件名"
2. Soumettre
Remarque: Soumettre consiste à soumettre tous les fichiers de la zone de stockage temporaire au référentiel
git commit -m "操作名称"
3. Vérifiez l'état
git status
4. Affichez le contenu du fichier
cat "文件名"
5. Afficher les journaux git
git log
Tels que: Commit est suivi du numéro de version, généré aléatoirement
commit 980993de744a8886692ed79fc7f4cdd00ec15959 (HEAD -> master)
Author: zouyou <>
Date: Sat Apr 11 14:35:04 2020 +0800
update commit
commit ea799348f2b1ccc7d046f8bd61c6b193b79bdc18
Author: zouyou <>
Date: Sat Apr 11 14:33:07 2020 +0800
git tracks changes
-Version arrière :
- Utilisez HEAD
git reset --hard HEAD^ HEAD^:上个版本 HEAD^^:上上版本
- Utilisez le numéro de version, écrivez simplement les premiers chiffres
git reset --hard ea799348f
Si vous avez oublié le numéro de version, vous pouvez utiliser reflog pour afficher les modifications de l'historique, qu'il y ait ou non une restauration
git reflog
6. Afficher les modifications de fichier
git diff
7. Annuler la modification
- L'annulation de la modification de la zone de travail équivaut à l'exploitation directe du fichier et à l'annulation des modifications.
git restore 文件名
- Annuler la soumission de la zone de stockage temporaire et revenir à la zone de travail, mais le fichier est toujours modifié. Pour annuler la modification du fichier, répétez 1 étape
git resore --staged 文件名
8. Supprimer des fichiers
- Pour supprimer l'espace de travail et la bibliothèque de versions en même temps, vous pouvez supprimer manuellement l'espace de travail. . Ce qui suit est de supprimer le référentiel
git rm 文件名
- Le fichier d'espace de travail a été supprimé par erreur, mais il a été téléchargé dans le référentiel et peut être restauré via le référentiel
git checkout 文件名
9. Entrepôt distant: github
- Créez un référentiel sur github, souvenez-vous du code ssh ou de l'adresse https
- Entrez les informations suivantes pour créer une connexion à distance, il y aura un mot de passe de compte d'entrée
$ git remote add origin (ssh码)/(hhtps)
- Téléchargez le fichier sur github
$ git push -u origin master
Remarque: Étant donné que la bibliothèque distante est vide, lorsque nous avons poussé la master
branche pour la première fois , avec les -u
paramètres ajoutés , Git poussera non seulement master
la nouvelle master
branche distante du contenu de la branche locale , mais associera également la master
branche locale à la master
branche distante . Les commandes peuvent être simplifiées lorsque vous poussez ou tirez à l'avenir.
Une fois le téléchargement terminé, tant que la validation locale est effectuée, vous pouvez utiliser la commande suivante
git push origin master //这里与上面是差不多一样的语法
Résumé: pour associer une bibliothèque distante, créez d'abord une bibliothèque à distance, souvenez-vous du code SSH, puis connectez-vous git remote add origin ssh码
Ajouter: La première fois que vous téléchargez git push origin -u master
, et il ne pas ajouter -u
desgit push origin master
Dans ces commandes, l'origine est en fait le nom de l'entrepôt distant, généralement nommé origine
- Clonage du référentiel distant vers le local
Trouvez d'abord un dépôt sur github et copiez son code ssh, entrez la ligne de commande sur git bash
git clone ssh码
Remarque: git bash s'est ouvert dans quel dossier est cloné sous quel dossier.
10. Gestion des succursales
1. Présentation de la succursale
La branche peut être implémentée de manière similaire à la version de développement du système, puis poussée vers le tronc une fois terminé, qui est un système stable. Comme suit, les deux branches sont fusionnées dans le tronc
Dans git, la master
branche est le tronc. Au début, elle master
pointe vers cette ligne principale, head
pointant master
, donc elle head
agit comme un pointeur sur le point courant, qui peut pointer sur le tronc ou la branche.
Afficher les branches, afficher toutes les branches, il y aura * avant la branche actuelle
git branch
2. Création d'une succursale
Créer une branche dev
et passer à cette branche -b
le rôle de » est de créer et commutateur
git checkout -b dev
等价于
git branch dev //创建分支dev
git checout dev // 切换到分支dev
Remarque: La zone de travail, la zone intermédiaire et la bibliothèque de versions de chaque branche sont indépendantes et seront différentes après le changement de branche.
Git encourage l'utilisation intensive des branches:
Voir la branche:git branch
Créez une branche:git branch
Changer de branche: git checkout
ougit switch
Créer + changer de branche: git checkout -b
ougit switch -c
Fusionner une branche dans la branche actuelle:git merge
Supprimez la branche:git branch -d
Afficher le diagramme de branche:git log --graph
- Conflit de fichier
Dans ce cas, les deux branches ne peuvent pas être fusionnées et doivent être résolues manuellement.
$ git merge feature1
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
git status
Vous pouvez également afficher les fichiers en conflit. Vous pouvez voir la marque lorsque vous ouvrez le fichier en conflit.
Git utilise <<<<<<<
, =======
pour >>>>>>>
marquer le contenu de différentes branches
3. La branche des bogues
Lorsqu'un travail est en cours sur la branche dev, soudainement un bug doit être corrigé (comme sur le tronc), il est donc nécessaire de masquer le travail effectué par dev en premier et de corriger le bogue en premier. Git fournit également une stash
fonction pour "stocker" le site de travail actuel et continuer à travailler après avoir restauré le site plus tard:
git stash //可以将在暂存区的文件(还未提交)隐藏,使用status也看不到
Vous pouvez interroger les choses cachées dans la cachette
git stash //=>例如:stash@{0}: WIP on dev: f52c633 add merge
Après avoir corrigé le bug principal, restaurez le site de développement:
git stash aplly //对现场进行恢复,此时stash里还有,需要进一步
git stash drop //对stash里的东西删除
同时还可以从stash里一步步恢复:git stash apply stash@{0}
等价于一句话
git stash pop
Remarque: étant donné que dev est à l'origine une branche de master, dev peut également avoir un bogue que le tronc vient de corriger, donc git a une fonction pour implémenter la réparation et la réplication de bogues. Cela peut être introduit, vous pouvez résoudre le bug dans la branche et le copier dans le coffre
git cherry-pick <版本号>
这里的版本好就是刚刚在主干修复bug后commit之后的版本号
Pour développer une nouvelle fonctionnalité, il est préférable de créer une nouvelle branche, similaire à la branche de bogue;
Si vous souhaitez git branch -D
supprimer une branche qui n'a pas été fusionnée, vous pouvez la supprimer de force.
4. Coopération à distance
Pour afficher les informations de la bibliothèque distante, utilisez
git remote //通常远程库是origin
Peut également être utilisé git remote -v
, peut renvoyer l'adresse de ramper et de pousser, comme suit
origin https://github.com/zy116/first-blog.git (fetch)
origin https://github.com/zy116/first-blog.git (push)
-Branches poussées
git push origin dev //推送分支
git push origin master //推送主干
Cependant, il n'est pas nécessaire de pousser la branche locale vers la télécommande, donc quelles branches doivent être poussées et lesquelles ne le font pas?
master
La branche est la branche principale, elle doit donc être synchronisée avec la télécommande à tout moment;dev
La branche est une branche de développement, tous les membres de l'équipe doivent y travailler, elle doit donc également être synchronisée avec la télécommande;- La branche des bogues n'est utilisée que pour corriger les bogues localement, il n'est donc pas nécessaire de pousser vers la télécommande, sauf si le patron veut voir combien de bogues vous avez corrigés chaque semaine;
- Que la branche de fonctionnalité soit poussée vers la télécommande dépend de si vous travaillez dessus avec votre petit partenaire.
Bref, dans Git, la branche peut être cachée et jouée localement, qu'elle soit poussée, selon votre humeur!
-Prenez la branche
Habituellement , dans master
et dev
branches poussent leurs propres changements quand une personne a mis leurs branches sont poussés vers le haut, vers le bas , un autre clone ne peut voir que la branche principale, si vous voulez dev
développer sur une branche, il faut établir une distance à une branche locale
git switch -c dev origin/dev
Quand une autre personne pousse quelque chose, vous devez également pousser, et à ce moment il y aura des conflits. La dernière soumission d'une autre personne est en conflit avec la soumission que vous avez essayé de pousser.
À ce moment, vous serez invité à git pull
opérer, mais vous serez invité à indiquer des erreurs.
Vous devez spécifier la locale dev
branche et à distance origin/dev
branche de liaison, mis en place dev
et des origin/dev
liens
git branch --set-upstream-to=origin dev
Tirez à nouveau
git pull
À ce stade, l'extraction est réussie et sera marquée dans le fichier de conflit, qui doit être résolu manuellement
Par conséquent, le mode de travail de la collaboration entre plusieurs personnes est généralement le suivant:
- Tout d'abord, vous pouvez essayer de
git push origin <branch>
pousser vos propres modifications; - Si la transmission échoue, car la branche distante est plus récente que votre section locale, vous devez d'abord
git pull
essayer de fusionner; - S'il y a un conflit dans la fusion, résolvez le conflit et soumettez-le localement;
- Une fois qu'il n'y a pas de conflit ou que le conflit est résolu,
git push origin
vous pouvez utiliser push pour réussir!
Si git pull
vous y êtes invité no tracking information
, la relation de liaison entre la branche locale et la branche distante n'a pas été créée. Utilisez la commande git branch --set-upstream-to origin/
.
Résumé :
- Afficher les informations de la bibliothèque distante, utiliser
git remote -v
; - Si la branche nouvellement créée n'est pas poussée vers la télécommande, elle sera invisible pour les autres;
- Poussez la branche du local, utilisez
git push origin branch-name
, si le push échoue,git pull
saisissez d' abord la nouvelle soumission distante; - Créez
git checkout -b branch-name origin/branch-name
localement une branche correspondant à la branche distante et utilisez le même nom pour les branches locales et distantes; - Établir la relation entre la branche locale et la branche distante, utilisez
git branch --set-upstream branch-name origin/branch-name
; - Récupérez la branche de la télécommande et utilisez-la
git pull
. En cas de conflit, le conflit doit être traité en premier.