Maison > outils de développement > git > Introduction détaillée à l'utilisation de git

Introduction détaillée à l'utilisation de git

coldplay.xixi
Libérer: 2021-04-28 17:08:56
avant
3423 Les gens l'ont consulté

Introduction détaillée à l'utilisation de git

1、Git概念

1.1. Git库中由三部

Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目

1) 工作目录:用户本地的

2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为

3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次

推荐(免费):git

1.2. 使用Git时的

1.2.1. Git初始

1) 配置使用git仓库的人

git config --global user.name "Your Name Comes He

2) 配置使用git仓库的人员em

git config --global user.email you@yourdomain.example.

1.2.2. Git文档忽

工作目录中有一些文件是不希望接受Git 管理的,譬如程序编译时生成的中间文件等等。Git 提供了文档忽略机制,可以将工作目录中不希望接受Git 管理的文档信息写到同一目录下的.gitignore 文

例如:工作目录下有个zh目录,如果不想把它加入到Git管理中,则

echo “zh” > .gitign

git ad

有关gitignore 文件的诸多细节知识可阅读其使用手册:man gitign

1.3. Git与Repo

Git操作一般对应一个仓库,而Repo操作一般对应一个项目,即一个项目会由若干仓库

例如,在操作整个Recket项目时使用Repo,而操作其中的某个仓库时使用Git。在包含隐藏目录.git的目录下执行git

2. Gi

Git help 获取git基

(如果要知道某个特定命令的使用方法,例如:使用Git help clone,来获取git clone的使用

3. Git本地

3.1. Git i

或者使用git init-

创建一个空的Git库。在当前目录中产生一个.git 的子目录。以后,所有的文件变化信息都会保存到这个目录下,而不像CVS那样,会在每个目录和子目录下都创建一个CVS

在.git目录下有一个config文件,可以修改其中的配置

3.2. Git 

将当前工作目录中更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示记入了版本历史中,这也是提交之前所需要执行的

可以递归添加,即如果后面跟的是一个目录作为参数,则会递归添加整个目录中的所有子目录和文件。

git add dir1 ( 添加dir1这个目录,目录下的所有文件都被加

Git add f1 f2 ( 添加f1,f2

git add . ( 添加当前目录下的所有文件和子目

3.3. Git

从当前的工作目录中和索引中删除

可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件。

git rm –r * (Entrez un répertoire et exécutez cette instruction pour supprimer tous les fichiers et sous-répertoires du répertoire.

git rm f1 (Supprimez le fichier f1, y compris ce fichier dans le répertoire local et index.Fichier

git rm --ached f1 (Supprimez le fichier f1, le fichier du répertoire local ne sera pas supprimé, seul l'enregistrement du fichier dans l'index sera supprimé ; le fichier qui a été ajouté par git sera supprimé. au cache, afin qu'il ne soit pas supprimé lors de la validation. La soumission de ce fichier convient aux situations où vous avez ajouté beaucoup de fichiers à la fois, mais souhaitez en exclure quelques-uns

3.4.

Soumettre les modifications au répertoire de travail actuel

Appelez directement la commande git commit et vous serez invité à remplir le commentaire. Remplissez le commentaire de validation sur la ligne de commande comme suit : git commit. -m "Commit initial du dépôt gittutor". Notez que contrairement à CVS, le commentaire git commit ne doit pas être vide, sinon il sera soumis

git commit a également un paramètre -a, qui peut forcer la soumission des modifications. qui ne sont pas identifiés par git add, mais il n'est pas recommandé d'utiliser ceci

à chaque fois que vous soumettez, git créera un code d'identification de validation unique pour le code global. L'utilisateur peut utiliser la commande git reset pour restaurer. le

git commit –-amend –m « message » (dans un identifiant de commit Modifier en continu le

3.5. Git sta

soumis pour vérifier l'état du référentiel. Vous pouvez savoir quels fichiers ont changé, quels fichiers n'ont pas été ajoutés à la bibliothèque git, etc. Il est recommandé à chaque fois avant de valider, vous devez utiliser cette commande pour confirmer la bibliothèque

La mauvaise opération la plus courante est. pour modifier un fichier et appeler directement l'opération de validation sans appeler git add pour informer la bibliothèque git que le fichier a été modifié, provoquant ainsi la modification du fichier. Il n'y a pas de soumission réelle si le développeur pense que le fichier a été soumis et continue. pour modifier ou même supprimer le fichier, alors le contenu modifié ne sera pas géré par la version. Si vous utilisez git status pour le vérifier avant de le soumettre, vous pouvez trouver ce genre d'erreur. Par conséquent, si vous appelez la commande git status, vous pouvez le faire. doit accorder une attention particulière aux fichiers avec l'invite "Modifié mais non mis à jour :". Ces fichiers ont changé par rapport au dernier commit, mais ils ne l'ont pas fait. Consultez le journal historique via l'identifiant git add

, y compris. chaque changement de version correspondant à un commit

Git log

-1 signifie qu'un seul commit sera affiché. Si vous souhaitez afficher 5 commits, juste -5. S'il n'est pas spécifié, git log démarrera à partir du commit jusqu'au début

Git log --stat –summary (afficher les détails de chaque version

Dans les informations du journal du projet, le responsable de chaque journal La ligne (c'est-à-dire la chaîne de caractères) est le nom de la soumission de la mise à jour de version. Nous pouvons comprendre ce nom comme le numéro de version du projet. Le numéro de version du projet doit être unique et est automatiquement généré par Git par défaut pour l'identifier. une certaine mise à jour du projet. Si nous utilisons le numéro de version du projet comme paramètre de la commande git-show, nous pouvons afficher les détails de la mise à jour de la version du projet. >En fait, la commande ci-dessus n'est pas une véritable personnalisation du numéro de version. , il crée simplement un objet tag. Ceci est utilisé lors de la publication de la version du projet vers le monde extérieur

3.7 Git me

mettre le serveur Le code téléchargé est fusionné avec le code local. Ou branche

Par exemple : actuellement sur la branche master, si vous souhaitez fusionner la branche dev dans la branche master, alors git merge

Remarque : git merge nov/eclair_eocket (c'est pour fusionner le serveur git Fusionne la branche eclair_eocket de la bibliothèque dans la branche locale

git rebase nov/eclair_eocket (mappe la branche eclair_eocket de la bibliothèque git du serveur à une branche temporaire locale, puis fusionne les modifications sur la branche locale dans cette branche temporaire, puis utilisez cette branche temporaire pour initialiser le

3.8 Git d

compare le code local avec le code de l'index, ou compare le code de l'index avec le. code dans l'entrepôt local

1) Git d

compare le répertoire de travail avec

dans Index

2) Git diff - - cac

Comparez l'index avec

3.9. Git check

3.9.1.

1) Créer un nouvelle branche et passez à

Git checkout –b new

2) Basculez vers une branche locale déjà établie local_bra

Git checkout local_bra

(Après en utilisant cat .git/HEAD, il affiche refs:refs/heads/ local_bran

3) Basculer vers une branche sur le serveur remote_bra

Git checkout remote_bra

(Branche distante remote_branch peut être basculé vers un commit via git branch –r

4)

Git checkout commit

(après avoir utilisé cat .git/HEAD , affichez commit_

5) Basculez vers un certain

Git checkout

(après avoir utilisé cat .git/HEAD, il affichera t


Remarque : à l'exception de 1) et 2), les trois autres sont simplement passés à un état temporaire (pas de branche) (cette tête est détachée. À ce stade, vous pouvez utiliser git branch pour voir qu'elle est dans (pas de branche). Activé, cat .git/HEAD voit pointer vers l'identifiant de validation correspondant. Cette (pas de succursale) n'existe que temporairement et n'est pas une succursale véritablement établie. Si 2) est exécuté à ce moment, celle-ci (pas de branche) disparaîtra automatiquement ; si 1) est exécutée, une nouvelle branche sera créée, et celle-ci (pas de branche) sera attachée à cette nouvelle branche à ce moment. , cat .git/ refs/heads/new_branch peut voir qu'il pointe vers le commit tout à l'heure


3.9.2 Initialiser avec la branche existante


Exécutez la commande suivante pour créer une nouvelle branche new_branch et connectez-vous à cette nouvelle branche tout en basculant vers une branche locale établie ou une branche distante ou un identifiant de commit ou une balise


1) Basculez vers une branche locale déjà établie local_branch et utilisez cette branche pour initialiser une nouvelle branche new_bran


git checkout –b new_branch local_bra


2) Basculez vers une branche distante remote_branch, et utilisez cette branche pour initialiser une nouvelle branche new_bran


Git checkout –b new_branch remote_bra


3) Basculez vers un identifiant de commit et créez une nouvelle branche new_bra


Git checkout – b new_branch commit


4) Basculez vers une certaine balise et créez une nouvelle branche new_bra


Git checkout –b new_branch


3.9.3 Également


Par exemple, « git checkout app/model/user.rb ». mettez à jour le fichier user.rb à partir de la dernière version soumise, et tout le contenu du répertoire de travail non validé sera




3.10. Git-ls


Voir quels

se trouvent dans le référentiel git actuel

3.11. Git


Renommer un fichier, un répertoire ou


Par exemple : Git mv helloworld.c helloworld1.c (renommer le fichier helloworld.c en helloworld1


3.12. Git bra


3.12.1.


Le coût de création d'une branche dans le dépôt git est presque nul, alors ne soyez pas avare d'en créer quelques-unes plus de branches. La première fois que vous exécutez git init, le système créera une branche nommée "master", tandis que d'autres branches sont créées manuellement


Voici quelques branches courantes. >


Créez votre propre branche de travail personnelle pour éviter trop d'interférences avec le maître de branche principale et pour faciliter la communication avec les autres


Lorsque vous effectuez un travail à haut risque, créez une branche expérimentale


Lors de la fusion du travail d'autres personnes, il est préférable de créer une branche temporaire pour la fusion, une fois la fusion terminée, " récupérer" dans le vôtre


pour ajouter, supprimer, vérifier, etc. des succursales


Remarque : les informations sur la succursale sont généralement dans le répertoire .git/refs/, où le répertoire heads est la branche locale, remotes est la branche sur le serveur correspondant, et les balises sont


3.12.2 . Cochez


git branch pour lister toutes les branches de la bibliothèque git locale, s'il y a * avant le nom de la branche, cela signifie que cette branche est la. current


git branch –r répertorie tous les


de la bibliothèque git du serveur (vous pouvez continuer à utiliser la commande "git checkout -b local Branch name server branch name" pour obtenir le texte de code d'une certaine branche sur le serveur


3.12.3. Vérifiez laquelle


cat .git/H


3.12.4 Créer un

1) git branch

Bien que la branche soit créée, la branche de travail actuelle ne sera pas basculée vers la branche nouvellement créée. Par conséquent, la commande "git checkout branch name" est également nécessaire pour

2) git checout –b

non seulement crée une branche, mais change également la branche de travail actuelle vers cette branche

3.12.5. Passer à une branche : git checkout

Passer à la branche branche principale : git checkout mas

3.12.6 Supprimer

git branch –D

Remarque : Après la suppression, toutes les modifications survenues sur la branche ne peuvent pas être restaurées. Forcer la suppression de ceci


3.12.7 Comparez les fichiers sur deux branches


nom de la branche principale git diff ( Comparez le master et la


3.12.8 d'une autre branche


git-show-branch ( Afficher la branche commit les commentaires de la branche actuelle et


git-show-branch -all (Afficher les commentaires de commit et les informations de toutes les branches)


* [dev]


! >* [dev^]


* [dev~2]

*+ [maître]

Dans l'exemple ci-dessus, les deux lignes au-dessus de "--" indiquent qu'il y a deux branches dev et master, et le dernier journal validé sur la branche dev est "d2", master Le dernier commit sur la branche est "m2". Les lignes sous "--" représentent l'historique de l'évolution de la branche, où dev représente le dernier commit effectué sur la branche dev et dev^ représente l'avant-dernier commit effectué sur la branche dev. dev~2 représente l'avant-dernière occurrence sur la branche dev

3.12.9 Afficher les opérations de la branche actuelle

git whatchan


3.12.10



git merge « Remarque » La branche cible fusionnée est fusionnée à partir de

S'il y a un conflit dans la fusion, git aura


Par exemple : git checkout master (passer à master


git merge HEAD dev~2 (fusionner la branche master et dev ~2 branche) ou : git merge master de



git pull La branche cible fusionnée est fusionné

Par exemple : git checkout master (passer à master


git pull . dev~2 (fusionner le branche actuelle et dev~2


3.13 Git reb


est généralement utilisé lors de la fusion du dernier contenu du serveur vers le local, par exemple : dans la version C Lorsque je récupère le contenu du serveur vers le local et que je modifie le contenu local, je souhaite soumettre le contenu modifié localement au serveur mais je trouve que la version sur le serveur ; a changé en G. À ce stade, je dois d'abord effectuer un rebase Git pour rebaser le serveur. La dernière version sur


sera expliquée plus clairement avec les deux images suivantes. . Une fois la commande rebase exécutée, le point de branchement est en fait déplacé de C vers G. , de sorte que la branche ait également



.

de C à G 3.14.
>

En plus de réinitialiser certains codes R&D abandonnés, l'inversion et la restauration de la bibliothèque jouent également un rôle important.Par exemple, nous clonons une bibliothèque de code à distance.Après le développement local, elle est prête à être soumise à distance.Cependant, lorsque la base de code locale est développée, il y a des validations fonctionnelles, et il y a également des validations pour. à des fins de sauvegarde. En bref, il y a beaucoup de journaux inutiles dans le journal de validation, et nous ne voulons pas conserver ces journaux. Il est également soumis à la bibliothèque lorsqu'il est renvoyé à la télécommande. Par conséquent, git res
<.>


Le concept de git reset est plus compliqué : git reset [-. -mixed | --hard] [



de la commande

--mixed C'est l'option par défaut. Par exemple, git reset [--mixed] dev^ (pour la définition de dev^, veuillez vous référer à 2.6.5). Sa fonction est uniquement de réinitialiser le statut de la branche à dev1^, mais elle ne modifie pas le contenu des fichiers de travail. Autrement dit, toutes les modifications de fichiers de dev1^ à dev1 sont conservées, mais tous les journaux de validation entre dev1^ et dev1 sont effacés, et le contenu du fichier modifié n'est pas identifié par git add, si vous souhaitez ré-engager, vous devez également faites un git add sur les fichiers modifiés. De cette façon, après la validation, vous obtiendrez un enregistrement de validation très propre. (Revenir en arrière


dans l'index et l'entrepôt - soft équivaut à faire git reset –mixed, puis à faire git add sur les fichiers modifiés. Si vous utilisez With this option, vous pouvez valider directement. (L'annulation de la commande


--hard entraînera la restauration de toutes les informations, y compris le contenu du fichier. Elle n'est généralement utilisée que lors de la réinitialisation d'un abandon. Après l'exécution, le contenu du fichier ne peut pas être restauré (les




Passer au split utilisé


git réinitialiser HEAD^ rollback d'abord


git réinitialiser HEAD~2 Annulez le deuxième


Si vous souhaitez restaurer les fichiers du répertoire de travail, utilisez git reset - - hard HEAD^ Revenez au premier


git reset - - hard HEAD~2 Revenir à la seconde


Vous pouvez également utiliser ce qui suit


pour restaurer complètement le répertoire de travail actuel au numéro de version spécifié. Supposons que, comme indiqué ci-dessous, nous ayons des versions soumises cinq fois de A à G, où le numéro de version de C. est bbaf6fb5060b4875b18ff9ff637ce118256d6f20. Nous avons exécuté 'git reset bbaf6fb5060b4875b18ff9ff637ce118256d6f20' et le résultat était qu'il ne restait plus que trois commits A-C




3.15. Git r


Restaurer une certaine modification de la version, par exemple : git revert commit_id (commit_id est généré lorsque le code est validé) Un unique word


Par exemple : (en 3.6) git revert dfb02e6e4f2f7b573337763e5c0013802e392818 (Exécutez cette opération pour restaurer le


du dernier commit 3.16. Git con


Utilisez cette commande pour ajouter et modifier divers paramètres Git, tels que "git config branch.master.remote origin" Définissez le référentiel distant du maître sur un alias. appelée version d'origine


3.17 Git s


affiche les différences entre les objets


3.18. Git


Créer, lister, supprimer ou vérifier un objet tag (signé avec GPG


Vous pouvez baliser une version spécifique, vous n'avez donc pas besoin de vous souvenir de la chaîne de valeur de hachage complexe du numéro de version. Par exemple, vous pouvez utiliser "git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20" pour marquer la version que vous avez restaurée, puis quand vous le souhaitez. pour afficher la version dans le futur, vous pouvez utiliser le nom de la balise revert_version au lieu du hachage




4. Commande d'opération du serveur Git (similaire à


4.1. Git cl


Sortez le code de l'entrepôt du serveur dans un répertoire créé localement (avec le serveur


Récupérez la bibliothèque git distante via git clone Ensuite, les informations du développeur dans .git/config ne seront pas clonées ensemble. Les informations du développeur doivent toujours être ajoutées au fichier .git/config de la bibliothèque locale. De plus, les développeurs doivent également ajouter .gitignore

.

.

La bibliothèque git distante obtenue via git clone contient uniquement la branche de travail actuelle de la bibliothèque git distante. Si vous souhaitez obtenir d'autres informations sur la branche, vous devez utiliser "git branch -. r" pour l'afficher. Si vous avez besoin d'obtenir d'autres codes de succursale distante, vous pouvez utiliser la commande "git checkout -b nom de la branche locale nom de la branche distante", où le nom de la branche distante est "git branch -r" et la branche le nom indiqué est généralement tel que « origine/nom de la succursale ». Si le nom de la succursale locale existe déjà, "-b" n'est pas nécessaire






4.2.Git


obtient le code. à partir du référentiel du serveur et fusion du code local. (Interagissez avec le serveur et téléchargez le dernier code depuis le serveur, ce qui équivaut à : Git fetch + Git mer


depuis d'autres référentiels (peuvent être distants) Il peut aussi être local) pour mettre à jour le code localement, par exemple : "git pull origin master" consiste à mettre à jour le code du référentiel d'origine vers le maître local


git Pull peut obtenir le contenu d'une branche à partir de n'importe quel référentiel git. Utilisation


git pull username@ipaddr : nom du référentiel distant, nom de la branche locale. La commande obtiendra le nom de la branche distante de la bibliothèque git distante vers une branche locale de la bibliothèque git locale. Si le nom de la branche locale n'est pas écrit, il sera extrait vers le


par défaut.

Il convient de noter que git pull peut également être utilisé pour fusionner des branches. Cela a le même effet que git merge. Par conséquent, si votre branche locale a déjà du contenu, git pull fusionnera ces fichiers. il y a des conflits,














4


Mettre à jour le code de commit local vers le le référentiel distant, tel que " git push origin " mettra à jour le code local vers la version distante nommée org


git push et git pull sont exactement le contraire, ce sont le contenu d'une succursale locale. Soumettre à une succursale distante. Utilisation : git pushusername@ipaddr : nom du référentiel distant nom de la branche locale nom de la branche distante. Cette commande pousse une branche locale de la bibliothèque git locale vers une branche distante de la bibliothèque git distante


Il convient de noter que git push ne semble pas fusionner automatiquement les fichiers. . Par conséquent, si un conflit survient pendant git push, il sera écrasé de force par le contenu du fichier poussé ultérieurement sans aucune invite. Ceci est très dangereux lors du développement collaboratif






4.4.Git


Téléchargez le code depuis le référentiel du serveur. (Interagir avec le serveur, télécharger la dernière


depuis le serveur équivaut à obtenir la dernière version de la télécommande vers le local, elle ne fusionnera pas automatiquement et est plus sûre que Git pull


Utilisez cette méthode pour obtenir le


sur le serveur. Par exemple : Si vous utilisez git. checkout nov/eclair_rocket (nov/eclair_rocket est le nom de la branche), il s'agit d'obtenir le code téléchargé depuis le serveur lors de la dernière utilisation de la commande git fetch ; si vous utilisez d'abord git fetch, puis utilisez git checkout nov/eclair_rocket ; obtiendra d'abord les dernières informations de mise à jour du serveur, puis les téléchargera depuis le serveur )h:.




 :. . :. ) l:. . )e mutuelle). . g. w. g))t本:enregistrer enregistrer enregistrer enregistrer;:))):]. t. :e)) Branche : 2). Branche : branche d'enregistrement. 2012-22 :) Histoire) Adieu. Nom de la branche r nom. Nom, nom de la branche D. . . bifurquer. . . ;;:. Décrit h). v. es. codeghdhh. h. . bifurquer. )gg)dd)hh)hh le nom a une branche supérieure t. d. f. f))v. e. wg :). 1. g. . s). . . . t))):. m))):. d. . . t commande) commander lp. . Comparez e.e :. Faire ml" élément de réglage du nom ...;. devenir...) h :.




:. )) Branche : 2012-22 : Nom de la branche : v. es. . ;. devenir. . . )h:.




 :. . :. ) l:. . )e mutuelle). . g. w. g))t本:enregistrer enregistrer enregistrer enregistrer;:))):]. t. :e)) Branche : 2). Branche : branche d'enregistrement. 2012-22 :) Histoire) Adieu. Nom de la branche r nom. Nom, nom de la branche D. . . bifurquer. . . ;;:. Décrit h). v. es. codeghdhh. h. . bifurquer. )gg)dd)hh)hh le nom a une branche supérieure t. d. f. f))v. e. wg :). 1. g. . s). . . . t))):. m))):. d. . . commande t) commander lp. . Comparez e.e :. Faire ml" élément de réglage du nom ...;. devenir...) h :.




:. )) Branche : 2012-22 : Nom de la branche : v. es. . ;. devenir. . . )h:.




 :. . :. ) l:. . )e mutuelle). . g. w. g))t本:enregistrer enregistrer enregistrer enregistrer;:))):]. t. :e)) Branche : 2). Branche : branche d'enregistrement. 2012-22 :) Histoire) Adieu. Nom de la branche r nom. Nom, nom de la branche D. . . bifurquer. . . ;;:. Décrit h). v. es. codeghdhh. h. . bifurquer. )gg)dd)hh)hh le nom a une branche supérieure t. d. f. f))v. e. wg :). 1. g. . s). . . . t))):. m))):. d. . . t commande) commander lp. . Comparez e.e :. Faire ml" élément de réglage du nom ...;. devenir...) h :.




:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成。。。)h:。




:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成。。。)h:。




:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成。。。)h:。




:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成Git

1.1. Git库中由三部分组

Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内

1) 工作目录:用户本地的目录

2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为索引

3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次更新


1.2. 使用Git时的初始化事

1.2.1. Git初始化配

1) 配置使用git仓库的人员姓

git config --global user.name "Your Name Comes Here

2) 配置使用git仓库的人员emai

git config --global user.email you@yourdomain.example.co

1.2.2. Git文档忽略机

工作目录中有一些文件是不希望接受Git 管理的,譬如程序编译时生成的中间文件等等。Git 提供了文档忽略机制,可以将工作目录中不希望接受Git 管理的文档信息写到同一目录下的.gitignore 文件中

例如:工作目录下有个zh目录,如果不想把它加入到Git管理中,则执行

echo “zh” > .gitignor

git add 

有关gitignore 文件的诸多细节知识可阅读其使用手册:man gitignor

1.3. Le ratio entre Git et Repo

Les opérations Git correspondent généralement à un entrepôt, tandis que les opérations Repo correspondent généralement à un projet, c'est-à-dire qu'un projet sera composé de plusieurs entrepôts

Par exemple, lors de l'exploitation, l'intégralité du Repo est utilisée lorsque l'on travaille sur le projet Recket, et Git est utilisé lors de l'exploitation de l'un des entrepôts. Effectuez des opérations git dans le répertoire contenant le répertoire caché .git


2. Git il

Git help Obtenez les commandes git de base

( Si vous voulez savoir comment utiliser une commande spécifique, par exemple : utilisez Git help clone pour savoir comment utiliser git clone


3.

3.1. Git ini

ou utilisez git init-db

pour créer un sous-répertoire .git dans le répertoire actuel. Ensuite, toutes les informations de modification de fichier seront générées. ce répertoire, contrairement à CVS, qui créera un répertoire CVS dans chaque répertoire et sous-répertoire

Il y a un fichier de configuration dans le répertoire .git, et les informations de configuration qu'il contient peuvent être modifiées

3.2 . Git ad

Ajouter les fichiers modifiés ou ajoutés dans le répertoire de travail actuel à l'index Git Les ajouter à l'index Git signifie qu'ils sont enregistrés dans l'historique des versions, ce qui est également un commit L'étape précédente <.>

peut être ajouté de manière récursive, c'est-à-dire que s'il est suivi d'un répertoire en tant que paramètre, tous les sous-répertoires et fichiers de l'ensemble du répertoire seront ajoutés de manière récursive. Par exemple,

git dir1. (Ajoutez le répertoire dir1, tous les fichiers du répertoire sont ajoutés

Git add f1 f2 (Ajoutez les fichiers f1, f2

git add . (Ajoutez tous les fichiers et sous-répertoires dans le répertoire actuel

3.3. Git r

Supprimer les fichiers du répertoire de travail actuel et l'index

peut être supprimé de manière récursive, c'est-à-dire que s'il est suivi d'un répertoire en tant que paramètre, alors Tous les sous-répertoires et les fichiers de l'ensemble du répertoire seront supprimés de manière récursive. Par exemple,

git rm –r * (entrer dans un répertoire et exécuter cette instruction supprimera tous les fichiers et sous-répertoires du répertoire

<.> git rm f1 (supprimer le fichier f1, y compris l'enregistrement du fichier dans le répertoire local et l'index

git rm --ached f1 (supprimer le fichier f1, les fichiers du répertoire local ne seront pas supprimés, seuls les fichiers de l'index sera supprimé) Enregistrez ; supprimez le fichier qui a été ajouté au cache, afin que le fichier ne soit pas soumis lors de la validation. Cela convient aux situations où de nombreux fichiers sont ajoutés en même temps, mais vous souhaitez en exclure un. quelques-uns d'entre eux

3.4. Git commit

Soumettez les modifications dans le répertoire de travail actuel

Appelez directement la commande git commit et vous serez invité à remplir le champ. commente sur la ligne de commande comme suit : git commit -m " Validation initiale du référentiel gittutor". Notez que contrairement à CVS, le commentaire git commit ne doit pas être vide, sinon la soumission échouera.

git commit a également un paramètre -a, qui peut soumettre de force des modifications qui n'ont pas été identifiées par git add , mais. il n'est pas recommandé d'utiliser cette méthode

Chaque fois qu'une soumission est effectuée, git créera un code d'identification de validation unique pour le code global. L'utilisateur peut restaurer le code de n'importe quelle soumission via la commande git reset

git commit –-amend –m « message » (modifier continuellement le contenu soumis sur un identifiant de commit

3.5. Git statut

Afficher l'état du référentiel. Vous pouvez savoir quels fichiers des modifications ont eu lieu, quels fichiers n'ont pas été ajoutés à la bibliothèque git, etc. Il est recommandé de confirmer l'état de la bibliothèque via cette commande avant chaque commit

.

L'erreur d'opération la plus courante consiste à modifier un fichier et à appeler directement l'opération de validation sans appeler git add pour informer la bibliothèque git que le fichier a changé, ce qui entraîne que le fichier n'est pas réellement soumis. À ce stade, si le développeur pense que le fichier a été soumis et continue de modifier ou même de supprimer le fichier, alors le contenu modifié ne sera pas géré en version. Si vous utilisez git status pour vérifier à chaque fois avant de soumettre, vous pouvez trouver cette erreur. Par conséquent, si vous appelez la commande git status, vous devez accorder une attention particulière à ces fichiers avec l'invite « Modifié mais non mis à jour : ». Ces fichiers sont tous des fichiers qui ont changé par rapport au dernier commit, mais qui n'ont pas été identifiés par git add

3.6 Git lo

Consultez le journal historique, y compris chaque changement de version. Chaque changement de version correspond à un identifiant de commit

Git log -

-1 signifie qu'un seul commit est affiché. Si vous souhaitez en afficher 5, juste -5. S'il n'est pas spécifié, git log affichera

Git log --stat –summary (affichera les modifications détaillées de chaque version

dans les informations du journal du projet, chaque journal La première ligne de (c'est-à-dire, la chaîne de caractères) est le nom de la soumission de mise à jour de version. Nous pouvons comprendre ce nom comme le numéro de version du projet doit être unique et est automatiquement généré par Git One pour identifier une certaine partie du projet. update. Si nous utilisons le numéro de version du projet comme paramètre de la commande git-show, nous pouvons afficher les détails de mise à jour de la version du projet. Par exemple,


2. ) Git sho


En fait, la commande ci-dessus ne personnalise pas vraiment le numéro de version, elle crée simplement un objet tag, qui est en cours C'est plus utile lorsque la version du projet est diffusé vers le monde extérieur

3.7. Git merge

Fusionne le code téléchargé depuis le serveur avec le code local. Ou effectuez une fusion de branche

Par exemple : actuellement sur la branche master, si vous souhaitez fusionner la branche dev dans master, alors git merge de

Remarque : git merge nov/eclair_eocket (c'est à merge Fusionne la branche eclair_eocket de la bibliothèque git du serveur dans la branche locale

git rebase nov/eclair_eocket (mappe la branche eclair_eocket de la bibliothèque git du serveur à une branche temporaire locale, puis fusionne les modifications sur la branche locale dans cette branche temporaire, puis utilisez cette branche temporaire pour initialiser la branche locale

3.8 Git dif

Comparez le code local avec le code dans l'index, ou comparez le code dans l'index. avec l'entrepôt local Comparez le code dans

1) Git dif

Comparez le code dans le répertoire de travail et l'index

2) Git diff - - cache

Comparez l'index et le code dans l'entrepôt local

3.9. Git checkou

3.9.1 Passer à la branche

1) Créez une nouvelle branche et passez à the branch

Git checkout –b new branch

2) Basculez vers une branche locale déjà établie local_branc

Git checkout local_branc

(après avoir utilisé cat . git/HEAD , display refs:refs/heads/ local_branch

3) Basculer vers une branche sur le serveur remote_branc

Git checkout remote_branc

(la branche distante remote_branch peut être branche git passée – r List

4) Passer à un commit i

Git checkout commit_i

(après avoir utilisé cat .git/HEAD, commit_id

5 s'affiche) Passer à un certain ta

Git checkout ta

(après avoir utilisé cat .git/HEAD, la balise

s'affiche

Remarque : à l'exception de 1) et 2), les trois autres sont simplement passés à un état temporaire (pas de branche) (cette tête est détachée. À ce stade, vous pouvez utiliser git branch pour voir qu'elle est activée (). aucune branche). cat .git/HEAD voit qu'il pointe vers l'identifiant de validation correspondant. Cette (pas de succursale) n'existe que temporairement et n'est pas une succursale véritablement établie. Si 2) est exécuté à ce moment, celle-ci (pas de branche) disparaîtra automatiquement ; si 1) est exécutée, une nouvelle branche sera créée, et celle-ci (pas de branche) sera attachée à cette nouvelle branche à ce moment. , cat .git/ refs/heads/new_branch Vous pouvez voir qu'il a pointé vers l'identifiant de commit tout à l'heure

3.9.2 Initialiser la nouvelle branche avec la branche existante

Exécuter ce qui suit. commande, et basculer sur une branche déjà établie En même temps que la branche locale ou une branche distante ou un commit id ou un tag, créer une nouvelle branche new_branch et l'accrocher sur cette nouvelle branche

1) Switch à une branche locale déjà établie local_branch , et utilisez cette branche pour initialiser une nouvelle branche new_branch

git checkout –b new_branch local_branc

2) Basculez vers une branche distante remote_branch et utilisez cette branche pour initialiser une nouvelle branche new_branch

Git checkout –b new_branch remote_branc

3) Basculer vers un identifiant de commit et créer une nouvelle branche new_branc

Git checkout –b new_branch commit_i

4) Basculer Accédez à une certaine balise et créez une nouvelle branche new_branc

Git checkout –b new_branch ta

3.9.3 Restaurer le code

Pour. Par exemple, « git checkout app/model/user. rb » mettra à jour le fichier user.rb à partir de la dernière version soumise, et tout le contenu du répertoire de travail non validé sera écrasé


3.10. Git -ls-fil

Afficher les fichiers dans la bibliothèque git actuelle

3.11. Git m

Renommer un fichier, un répertoire ou un lien

Par exemple : Git mv helloworld.c helloworld1.c (Renommer le fichier helloworld.c en helloworld1.c

3.12. Git branc

3.12.1. Total

dans git Le coût de création d'une branche dans le référentiel est presque nul, il n'est donc pas nécessaire d'être avare de création de quelques branches supplémentaires Lorsque git init est exécuté pour la première fois, le système créera une branche nommée. "maître". Les autres branches sont créées manuellement

Voici quelques stratégies de branche courantes

Créez votre propre branche de travail personnelle pour éviter trop d'interférences avec le maître de branche principal et pour faciliter la communication avec Communiquer et collaborer avec les autres

Lorsque vous effectuez un travail à haut risque, créez une branche expérimentale

Lors de la fusion du travail d'autres personnes, il est préférable de créer une branche temporaire pour la fusion, et la fusion est terminée. Ensuite, "récupérez" pour votre propre branche

Ajouter, supprimer, vérifier et autres opérations sur la branche

Remarque : les informations sur la branche se trouvent généralement dans le répertoire .git/refs/, parmi lesquels le répertoire heads est les branches locales, les télécommandes sont des branches sur le serveur correspondant et les balises sont des balises

3.12.2 Points de vue

git branch répertorie toutes les branches de la bibliothèque git locale. Parmi les branches listées, s'il y a * avant le nom de la branche, cela signifie que cette branche est la branche actuelle

git branch –r liste toutes les branches de la bibliothèque git du serveur

(vous pouvez continuez à utiliser la commande " git checkout -b local branch name server branch name" pour obtenir le fichier de code d'une certaine branche sur le serveur)

3.12.3 Vérifiez sur quelle branche vous vous trouvez actuellement

.

cat .git/HEA

3.12.4. Créer une branche

1) git branch branch

Bien que la branche soit créée, la branche de travail actuelle ne le sera pas être basculé vers la branche nouvellement créée. Par conséquent, vous avez également besoin de la commande "git checkout branch name" pour basculer

2) git checkout –b branch

Non seulement créé une branche, mais a également basculé la branche de travail actuelle vers la branche

3.12.5 Passer à une branche : git checkout Branche

Passer à la branche principale : git. checkout mast

3.12.6. Supprimer la branche

git branch –D branch

Remarque : après la suppression, toutes les modifications qui se produisent dans cette branche ne peuvent pas être récupérées. Supprimez de force cette branche

3.12.7. Comparez les fichiers sur les deux branches

git diff master branch name (comparez la différence entre la branche master et une autre branche

3.12. .8. Afficher l'historique de la branche

git-show-branch (Afficher les commentaires et les informations de validation de la branche actuelle)

git-show-branch -all (Afficher les commentaires et les informations de validation de toutes les branches) Par exemple

* [dev] d

[master] m

-

* [dev] d

* [dev ^] d

* [dev~2] d

*+ [master] m

Dans l'exemple ci-dessus, les deux lignes ci-dessus "- -" indique qu'il y a deux branches, dev et master, et le dernier journal soumis sur la branche dev est "d2", et le dernier journal soumis sur la branche master est "m2". Les lignes sous "--" représente l'historique de l'évolution de la branche. Où dev représente le dernier commit survenu sur la branche dev, dev^ représente l'avant-dernier commit survenu sur la branche dev dev~2 représente l'avant-dernier commit survenu sur la branche dev

<.>3.12 .9. Afficher les notes d'opération de la branche actuelle

git whatchange

3.12.10 Fusionner les points

Méthode 1

git merge. « Commentaires » fusionnés La source de la fusion de la branche cible

S'il y a un conflit dans la fusion, git vous le demandera

Par exemple : git checkout master (passer à la branche principale

git merge HEAD dev~2 (Fusionner la branche master et dev~2 branches) ou : git merge master dev~

Méthode 2

git pull La branche source de la cible fusionnée la branche est fusionnée

Par exemple : git checkout master (passer à la branche master

git pull . dev~2 (fusionner la branche actuelle et la branche dev~2

3.13. Git rebas

fusionne généralement le dernier contenu du serveur) Utilisé lors du passage au local Par exemple : dans la version C, le contenu est obtenu du serveur vers le local, et le contenu local est modifié. . À ce stade, je souhaite soumettre le contenu modifié localement au serveur, mais je constate que la version sur le serveur est passée à G. Cette fois, vous devez d'abord exécuter Git rebase pour fusionner la dernière version sur le serveur avec celle-ci. local. Par exemple,

sera expliqué plus clairement avec les deux images suivantes. Une fois la commande rebase exécutée, le point de branchement est en fait déplacé de C. Après avoir atteint G, la branche a également la fonction de C. à G


3.14. Git rese

L'inversion et la récupération de la bibliothèque ne sont pas seulement utilisées pour effectuer certaines En plus de réinitialiser les codes R&D abandonnés, il joue également un rôle important. Par exemple, nous clonons une base de code à distance, la développons localement et nous préparons à la soumettre à distance. Cependant, lorsque la base de code locale est développée, il existe des commits fonctionnels, des commits à des fins de sauvegarde, etc. En bref, il y a beaucoup de journaux inutiles dans le journal de validation, et nous ne voulons pas soumettre ces journaux à la bibliothèque lorsqu'ils sont renvoyés à la télécommande. Par conséquent, vous devez utiliser git reset

Le concept de git reset est relativement compliqué. Sa forme de commande : git reset [--mixed | --soft | --hard] [

Options de commande

--mixed C'est l'option par défaut. Par exemple, git reset [--mixed] dev^ (pour la définition de dev^, veuillez vous référer à 2.6.5). Sa fonction est uniquement de réinitialiser le statut de la branche à dev1^, mais elle ne modifie pas le contenu des fichiers de travail. Autrement dit, toutes les modifications de fichiers de dev1^ à dev1 sont conservées, mais tous les journaux de validation entre dev1^ et dev1 sont effacés, et le contenu du fichier modifié n'est pas identifié par git add, si vous souhaitez ré-engager, vous devez également faites un git add sur les fichiers modifiés. De cette façon, après la validation, vous obtiendrez un enregistrement de validation très propre. (Rétablir le contenu de l'index et de l'entrepôt

--soft équivaut à faire git reset –mixed, puis à faire git add sur les fichiers modifiés. Si vous utilisez cette option, vous pouvez valider directement (Rétablir le contenu de l'entrepôt

--hard entraînera la restauration de toutes les informations, y compris le contenu du fichier. Généralement, il n'est utilisé que lors de la réinitialisation du code abandonné. Après l'exécution, le contenu du fichier ne peut pas être restauré (le contenu du fichier). le contenu du répertoire de travail, de l'index et de l'entrepôt est annulé

Par exemple,

passez à la branche utilisée

git reset HEAD^. >

git reset HEAD~2 Annulez la deuxième note

Si vous souhaitez restaurer les fichiers du répertoire de travail, utilisez git reset - - hard HEAD^ Annulez le premier enregistrement

git reset - - hard HEAD~2 Restaurez le deuxième enregistrement

Vous pouvez également utiliser la méthode suivante

pour restaurer complètement le répertoire de travail actuel. Faites défiler jusqu'au numéro de version spécifié Supposons que. montré ci-dessous que nous avons cinq versions soumises par A-G. Le numéro de version de C est bbaf6fb5060b4875b18ff9ff637ce118256d6f20. Nous avons ensuite exécuté 'git reset bbaf6fb5060b4875b18ff9ff637ce118256d6f20'. Le résultat est donc seulement trois versions soumises par A-C

<.>


3.15. Git rever

restaure une certaine modification de la version, par exemple : git revert commit_id (où commit_id est une représentation unique générée lors de la validation du code String

Par exemple : (dans 3.6) git revert dfb02e6e4f2f7b573337763e5c0013802e392818 (L'exécution de cette opération restaurera la dernière opération de validation

3.16. Git confi

Utilisez cette commande pour créer un nouvel ajout et modifier divers paramètres Git, tels que "git config branch.master.remote origin" pour définir le référentiel distant du maître comme un alias appelé référentiel d'origine

3.17. Git sho

Afficher différents types d'objets

3.18. Git ta

Créer, lister, supprimer ou vérifier un objet tag (signé avec GPG)

Vous pouvez convertir un tag spécifique en version afin que vous n'ayez pas besoin de vous souvenir de la valeur de hachage complexe du numéro de version Par exemple, vous pouvez utiliser "git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20" pour marquer la version que vous avez restaurée. Ensuite, lorsque vous souhaitez afficher la version à l'avenir, vous pouvez simplement utiliser le nom de la balise revert_version au lieu de la valeur de hachage

<.>

4. Commande d'opération du serveur Git (échange avec le serveur

4.1. Git clon

Supprimer le code de l'entrepôt du serveur dans un répertoire créé localement (interagir avec le serveur

Après avoir obtenu la bibliothèque git distante via git clone, les informations du développeur dans .git/config ne seront pas clonées ensemble. . Vous devez toujours ajouter des informations sur le développeur au fichier .git/config de la bibliothèque locale. De plus, les développeurs doivent également ajouter eux-mêmes le fichier .gitignore

La bibliothèque git distante obtenue via git clone ne contient que la branche de travail actuelle de la bibliothèque git distante. Si vous souhaitez obtenir d'autres informations sur la branche, vous devez utiliser "git branch -r" pour les afficher. Si vous avez besoin d'obtenir d'autres codes de branche distante, vous pouvez utiliser la commande "git checkout -b nom de la branche locale nom de la branche distante". , où la branche distante. Le nom de la branche répertorié dans "git branch -r" est généralement quelque chose comme "nom d'origine/branche". Si le nom de la branche locale existe déjà, le paramètre "-b" n'est pas obligatoire

par exemple

Git pul
.

Récupérez le code du référentiel du serveur et fusionnez-le avec le code local. (Interagissez avec le serveur et téléchargez le dernier code depuis le serveur, ce qui équivaut à : Git fetch + Git merge

Mettez à jour le code en local à partir d'autres référentiels (distants ou locaux), par exemple : " git pull origin master" consiste à mettre à jour le code du référentiel d'origine vers la branche principale locale

Git pull peut obtenir le contenu d'une branche à partir de n'importe quelle bibliothèque git. L'utilisation est la suivante

git pull username@ipaddr : nom du référentiel distant, nom de la branche distante, nom de la branche locale. Cette commande obtiendra le nom de la branche distante de la bibliothèque git distante dans une branche locale de la bibliothèque git locale si vous n'écrivez pas le nom de la branche locale. . nom de la branche, la valeur par défaut est de tirer vers la branche locale actuelle

Il convient de noter que git pull peut également être utilisé pour fusionner des branches. Par conséquent, si votre branche locale a déjà du contenu, git pull fusionnera. ces fichiers et alertera

en cas de conflit, tel que






4.3. Git push

Mettez à jour le code de validation local vers le référentiel distant, par exemple, "git push origin" le fera. le code local est mis à jour dans le référentiel distant nommé org

Git push et git pull sont exactement le contraire. Ils valident le contenu d'une branche locale dans une branche distante. Utilisation : git pushusername@. local branch name remote branch name. Cette commande pousse une branche locale de la bibliothèque git locale vers le nom de branche distante de la bibliothèque git distante

Il convient de noter que git Push ne semble pas fusionner automatiquement les fichiers. , si un conflit survient pendant git push, il sera écrasé de force par le contenu du fichier après le push, et il n'y a pas d'invite lors du développement collaboratif

Par exemple

<.>


4.4. Git fetc

Téléchargez le code depuis le référentiel du serveur (interagissez avec le serveur et téléchargez le dernier code depuis le serveur

<.>Équivalent à obtenir la dernière version du distant vers le local, elle ne fusionnera pas automatiquement et est plus sûre que Git pull

Utilisez cette méthode pour obtenir des mises à jour sur le serveur

Par exemple : si vous utilisez git checkout nov/eclair_rocket (nov/eclair_rocket est le nom de la branche sur le serveur), consiste à obtenir le code téléchargé depuis le serveur lors de la dernière utilisation de la commande git fetch si vous utilisez d'abord git fetch, puis utilisez git checkout nov/ ; eclair_rocket, il s'agit d'abord d'obtenir les dernières informations de mise à jour du serveur, puis de télécharger le dernier code du serveur. . . )h:. . .



 :. . :. ) l:. . )e mutuelle). . g. w. g))t本:enregistrer enregistrer enregistrer enregistrer;:))):]. t. :e)) Branche : 2). Branche : branche d'enregistrement. 2012-22 :) Histoire) Adieu. Nom de la branche r nom. Nom, nom de la branche D. . . bifurquer. . . ;;:. Décrit h). v. es. codeghdhh. h. . bifurquer. )gg)dd)hh)hh le nom a une branche supérieure t. d. f. f))v. e. wg :). 1. g. . s). . . . t))):. m))):. d. . . t commande) commander lp. . Comparez e.e :. Créer un élément de réglage du nom ml"...;. Devenir un concept................. ..Mettre à jour tout le code fec, par exemple, le nom de la tâche dans la bibliothèque. 3. Git push, par exemple, la branche d'alarme est la suivante : branche ge pul, par exemple, interaction du fichier de paramètres sur la valeur d'échange du serveur) ta tapez ho bibliothèque fi opérateur chaîne chaque version méthode. Notez chaque note, chaque note, par exemple, contenu contenu option h>etrese fonction, par exemple, comme méthode de division de source de branche deux v ~ méthode de division de source d'invite de branche. ensemble divisé ge note commit m d dd

- m d例如信息支历区别的区分支分支除分te分支支上分支切换分支个分EA分支件)分支分支看分标签操作分支分支协作策略创建 总nc.c链接 m文件-fil覆盖原代tanc_incncchncch支上新分idagtataid_i i列出ncncchncnc分支分支到分ou代码he代码if比较if分支支上de合并rg比较有用 sholo例如变化显示 -idlo文件状态tu内容代码方式失败内容mi况.记录目录例如文件 r录 文件入 例如一步ad信息目录dbni操作基本方法本命t he操作组成的比ord or执行件中略机coaire员姓化配初始化事更新索引目录录内分组Git概念

1.1. Git库中由三部分组

Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内

1) 工作目录:用户本地的目录

2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为索引

3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次更新


1.2. 使用Git时的初始化事

1.2.1. Git初始化配

1) 配置使用git仓库的人员姓

git config --global user.name "Your Name Comes Here

2) 配置使用git仓库的人员emai

git config --global user.email you@yourdomain.example.co

1.2.2. Git文档忽略机

工作目录中有一些文件是不希望接受Git 管理的,譬如程序编译时生成的中间文件等等。Git 提供了文档忽略机制,可以将工作目录中不希望接受Git 管理的文档信息写到同一目录下的.gitignore 文件中

例如:工作目录下有个zh目录,如果不想把它加入到Git管理中,则执行

echo “zh” > .gitignor

git add 

有关gitignore 文件的诸多细节知识可阅读其使用手册:man gitignor

1.3. Le ratio entre Git et Repo

Les opérations Git correspondent généralement à un entrepôt, tandis que les opérations Repo correspondent généralement à un projet, c'est-à-dire qu'un projet sera composé de plusieurs entrepôts

Par exemple, lors de l'exploitation, l'intégralité du Repo est utilisée lorsque l'on travaille sur le projet Recket, et Git est utilisé lors de l'exploitation de l'un des entrepôts. Effectuez des opérations git dans le répertoire contenant le répertoire caché .git


2. Git il

Git help Obtenez les commandes git de base

( Si vous voulez savoir comment utiliser une commande spécifique, par exemple : utilisez Git help clone pour savoir comment utiliser git clone


3.

3.1. Git ini

ou utilisez git init-db

pour créer un sous-répertoire .git dans le répertoire actuel. Ensuite, toutes les informations de modification de fichier seront générées. ce répertoire, contrairement à CVS, qui créera un répertoire CVS dans chaque répertoire et sous-répertoire

Il y a un fichier de configuration dans le répertoire .git, et les informations de configuration qu'il contient peuvent être modifiées

3.2 . Git ad

Ajouter les fichiers modifiés ou ajoutés dans le répertoire de travail actuel à l'index Git Les ajouter à l'index Git signifie qu'ils sont enregistrés dans l'historique des versions, ce qui est également un commit L'étape précédente <.>

peut être ajouté de manière récursive, c'est-à-dire que s'il est suivi d'un répertoire en tant que paramètre, tous les sous-répertoires et fichiers de l'ensemble du répertoire seront ajoutés de manière récursive. Par exemple,

git dir1. (Ajoutez le répertoire dir1, tous les fichiers du répertoire sont ajoutés

Git add f1 f2 (Ajoutez les fichiers f1, f2

git add . (Ajoutez tous les fichiers et sous-répertoires dans le répertoire actuel

3.3. Git r

Supprimer les fichiers du répertoire de travail actuel et l'index

peut être supprimé de manière récursive, c'est-à-dire que s'il est suivi d'un répertoire en tant que paramètre, alors Tous les sous-répertoires et les fichiers de l'ensemble du répertoire seront supprimés de manière récursive. Par exemple,

git rm –r * (entrer dans un répertoire et exécuter cette instruction supprimera tous les fichiers et sous-répertoires du répertoire

<.> git rm f1 (supprimer le fichier f1, y compris l'enregistrement du fichier dans le répertoire local et l'index

git rm --ached f1 (supprimer le fichier f1, les fichiers du répertoire local ne seront pas supprimés, seuls les fichiers de l'index sera supprimé) Enregistrez ; supprimez le fichier qui a été ajouté au cache, afin que le fichier ne soit pas soumis lors de la validation. Cela convient aux situations où de nombreux fichiers sont ajoutés en même temps, mais vous souhaitez en exclure un. quelques-uns d'entre eux

3.4. Git commit

Soumettez les modifications dans le répertoire de travail actuel

Appelez directement la commande git commit et vous serez invité à remplir le champ. commente sur la ligne de commande comme suit : git commit -m " Validation initiale du référentiel gittutor". Notez que contrairement à CVS, le commentaire git commit ne doit pas être vide, sinon la soumission échouera.

git commit a également un paramètre -a, qui peut soumettre de force des modifications qui n'ont pas été identifiées par git add , mais. il n'est pas recommandé d'utiliser cette méthode

Chaque fois qu'une soumission est effectuée, git créera un code d'identification de validation unique pour le code global. L'utilisateur peut restaurer le code de n'importe quelle soumission via la commande git reset

git commit –-amend –m « message » (modifier continuellement le contenu soumis sur un identifiant de commit

3.5. Git statut

Afficher l'état du référentiel. Vous pouvez savoir quels fichiers des modifications ont eu lieu, quels fichiers n'ont pas été ajoutés à la bibliothèque git, etc. Il est recommandé de confirmer l'état de la bibliothèque via cette commande avant chaque commit

.

L'erreur d'opération la plus courante consiste à modifier un fichier et à appeler directement l'opération de validation sans appeler git add pour informer la bibliothèque git que le fichier a changé, ce qui entraîne que le fichier n'est pas réellement soumis. À ce stade, si le développeur pense que le fichier a été soumis et continue de modifier ou même de supprimer le fichier, alors le contenu modifié ne sera pas géré en version. Si vous utilisez git status pour vérifier à chaque fois avant de soumettre, vous pouvez trouver cette erreur. Par conséquent, si vous appelez la commande git status, vous devez accorder une attention particulière à ces fichiers avec l'invite « Modifié mais non mis à jour : ». Ces fichiers sont tous des fichiers qui ont changé par rapport au dernier commit, mais qui n'ont pas été identifiés par git add

3.6 Git lo

Consultez le journal historique, y compris chaque changement de version. Chaque changement de version correspond à un identifiant de commit

Git log -

-1 signifie qu'un seul commit est affiché. Si vous souhaitez en afficher 5, juste -5. S'il n'est pas spécifié, git log affichera

Git log --stat –summary (affichera les modifications détaillées de chaque version

dans les informations du journal du projet, chaque journal La première ligne de (c'est-à-dire, la chaîne de caractères) est le nom de la soumission de mise à jour de version. Nous pouvons comprendre ce nom comme le numéro de version du projet doit être unique et est automatiquement généré par Git One pour identifier une certaine partie du projet. update. Si nous utilisons le numéro de version du projet comme paramètre de la commande git-show, nous pouvons afficher les détails de mise à jour de la version du projet. Par exemple,


2. ) Git sho


En fait, la commande ci-dessus ne personnalise pas vraiment le numéro de version, elle crée simplement un objet tag, qui est en cours C'est plus utile lorsque la version du projet est diffusé vers le monde extérieur

3.7. Git merge

Fusionne le code téléchargé depuis le serveur avec le code local. Ou effectuez une fusion de branche

Par exemple : actuellement sur la branche master, si vous souhaitez fusionner la branche dev dans master, alors git merge de

Remarque : git merge nov/eclair_eocket (c'est à merge Fusionne la branche eclair_eocket de la bibliothèque git du serveur dans la branche locale

git rebase nov/eclair_eocket (mappe la branche eclair_eocket de la bibliothèque git du serveur à une branche temporaire locale, puis fusionne les modifications sur la branche locale dans cette branche temporaire, puis utilisez cette branche temporaire pour initialiser la branche locale

3.8 Git dif

Comparez le code local avec le code dans l'index, ou comparez le code dans l'index. avec l'entrepôt local Comparez le code dans

1) Git dif

Comparez le code dans le répertoire de travail et l'index

2) Git diff - - cache

Comparez l'index et le code dans l'entrepôt local

3.9. Git checkou

3.9.1 Passer à la branche

1) Créez une nouvelle branche et passez à the branch

Git checkout –b new branch

2) Basculez vers une branche locale déjà établie local_branc

Git checkout local_branc

(après avoir utilisé cat . git/HEAD , display refs:refs/heads/ local_branch

3) Basculer vers une branche sur le serveur remote_branc

Git checkout remote_branc

(la branche distante remote_branch peut être branche git passée – r List

4) Passer à un commit i

Git checkout commit_i

(après avoir utilisé cat .git/HEAD, commit_id

5 s'affiche) Passer à un certain ta

Git checkout ta

(après avoir utilisé cat .git/HEAD, la balise

s'affiche

Remarque : à l'exception de 1) et 2), les trois autres sont simplement passés à un état temporaire (pas de branche) (cette tête est détachée. À ce stade, vous pouvez utiliser git branch pour voir qu'elle est activée (). aucune branche). cat .git/HEAD voit qu'il pointe vers l'identifiant de validation correspondant. Cette (pas de succursale) n'existe que temporairement et n'est pas une succursale véritablement établie. Si 2) est exécuté à ce moment, celle-ci (pas de branche) disparaîtra automatiquement ; si 1) est exécutée, une nouvelle branche sera créée, et celle-ci (pas de branche) sera attachée à cette nouvelle branche à ce moment. , cat .git/ refs/heads/new_branch Vous pouvez voir qu'il a pointé vers l'identifiant de commit tout à l'heure

3.9.2 Initialiser la nouvelle branche avec la branche existante

Exécuter ce qui suit. commande, et basculer sur une branche déjà établie En même temps que la branche locale ou une branche distante ou un commit id ou un tag, créer une nouvelle branche new_branch et l'accrocher sur cette nouvelle branche

1) Switch à une branche locale déjà établie local_branch , et utilisez cette branche pour initialiser une nouvelle branche new_branch

git checkout –b new_branch local_branc

2) Basculez vers une branche distante remote_branch et utilisez cette branche pour initialiser une nouvelle branche new_branch

Git checkout –b new_branch remote_branc

3) Basculer vers un identifiant de commit et créer une nouvelle branche new_branc

Git checkout –b new_branch commit_i

4) Basculer Accédez à une certaine balise et créez une nouvelle branche new_branc

Git checkout –b new_branch ta

3.9.3 Restaurer le code

Pour. Par exemple, « git checkout app/model/user. rb » mettra à jour le fichier user.rb à partir de la dernière version soumise, et tout le contenu du répertoire de travail non validé sera écrasé


3.10. Git -ls-fil

Afficher les fichiers dans la bibliothèque git actuelle

3.11. Git m

Renommer un fichier, un répertoire ou un lien

Par exemple : Git mv helloworld.c helloworld1.c (Renommer le fichier helloworld.c en helloworld1.c

3.12. Git branc

3.12.1. Total

dans git Le coût de création d'une branche dans le référentiel est presque nul, il n'est donc pas nécessaire d'être avare de création de quelques branches supplémentaires Lorsque git init est exécuté pour la première fois, le système créera une branche nommée. "maître". Les autres branches sont créées manuellement

Voici quelques stratégies de branche courantes

Créez votre propre branche de travail personnelle pour éviter trop d'interférences avec le maître de branche principal et pour faciliter la communication avec Communiquer et collaborer avec les autres

Lorsque vous effectuez un travail à haut risque, créez une branche expérimentale

Lors de la fusion du travail d'autres personnes, il est préférable de créer une branche temporaire pour la fusion, et la fusion est terminée. Ensuite, "récupérez" pour votre propre branche

Ajouter, supprimer, vérifier et autres opérations sur la branche

Remarque : les informations sur la branche se trouvent généralement dans le répertoire .git/refs/, parmi lesquels le répertoire heads est les branches locales, les télécommandes sont des branches sur le serveur correspondant et les balises sont des balises

3.12.2 Points de vue

git branch répertorie toutes les branches de la bibliothèque git locale. Parmi les branches listées, s'il y a * avant le nom de la branche, cela signifie que cette branche est la branche actuelle

git branch –r liste toutes les branches de la bibliothèque git du serveur

(vous pouvez continuez à utiliser la commande " git checkout -b local branch name server branch name" pour obtenir le fichier de code d'une certaine branche sur le serveur)

3.12.3 Vérifiez sur quelle branche vous vous trouvez actuellement

.

cat .git/HEA

3.12.4. Créer une branche

1) git branch branch

Bien que la branche soit créée, la branche de travail actuelle ne le sera pas être basculé vers la branche nouvellement créée. Par conséquent, vous avez également besoin de la commande "git checkout branch name" pour basculer

2) git checkout –b branch

Non seulement créé une branche, mais a également basculé la branche de travail actuelle vers la branche

3.12.5 Passer à une branche : git checkout Branche

Passer à la branche principale : git. checkout mast

3.12.6. Supprimer la branche

git branch –D branch

Remarque : après la suppression, toutes les modifications qui se produisent dans cette branche ne peuvent pas être récupérées. Supprimez de force cette branche

3.12.7. Comparez les fichiers sur les deux branches

git diff master branch name (comparez la différence entre la branche master et une autre branche

3.12. .8. Afficher l'historique de la branche

git-show-branch (Afficher les commentaires et les informations de validation de la branche actuelle)

git-show-branch -all (Afficher les commentaires et les informations de validation de toutes les branches) Par exemple

* [dev] d

[master] m

-

* [dev] d

* [dev ^] d

* [dev~2] d

*+ [master] m

Dans l'exemple ci-dessus, les deux lignes ci-dessus "- -" indique qu'il y a deux branches, dev et master, et le dernier journal soumis sur la branche dev est "d2", et le dernier journal soumis sur la branche master est "m2". Les lignes sous "--" représente l'historique de l'évolution de la branche. Où dev représente le dernier commit survenu sur la branche dev, dev^ représente l'avant-dernier commit survenu sur la branche dev dev~2 représente l'avant-dernier commit survenu sur la branche dev

<.>3.12 .9. Afficher les notes d'opération de la branche actuelle

git whatchange

3.12.10 Fusionner les points

Méthode 1

git merge. « Commentaires » fusionnés La source de la fusion de la branche cible

S'il y a un conflit dans la fusion, git vous le demandera

Par exemple : git checkout master (passer à la branche principale

git merge HEAD dev~2 (Fusionner la branche master et dev~2 branches) ou : git merge master dev~

Méthode 2

git pull La branche source de la cible fusionnée la branche est fusionnée

Par exemple : git checkout master (passer à la branche master

git pull . dev~2 (fusionner la branche actuelle et la branche dev~2

3.13. Git rebas

fusionne généralement le dernier contenu du serveur) Utilisé lors du passage au local Par exemple : dans la version C, le contenu est obtenu du serveur vers le local, et le contenu local est modifié. . À ce stade, je souhaite soumettre le contenu modifié localement au serveur, mais je constate que la version sur le serveur est passée à G. Cette fois, vous devez d'abord exécuter Git rebase pour fusionner la dernière version sur le serveur avec celle-ci. local. Par exemple,

sera expliqué plus clairement avec les deux images suivantes. Une fois la commande rebase exécutée, le point de branchement est en fait déplacé de C. Après avoir atteint G, la branche a également la fonction de C. à G


3.14. Git rese

L'inversion et la récupération de la bibliothèque ne sont pas seulement utilisées pour effectuer certaines En plus de réinitialiser les codes R&D abandonnés, il joue également un rôle important. Par exemple, nous clonons une base de code à distance, la développons localement et nous préparons à la soumettre à distance. Cependant, lorsque la base de code locale est développée, il existe des commits fonctionnels, des commits à des fins de sauvegarde, etc. En bref, il y a beaucoup de journaux inutiles dans le journal de validation, et nous ne voulons pas soumettre ces journaux à la bibliothèque lorsqu'ils sont renvoyés à la télécommande. Par conséquent, vous devez utiliser git reset

Le concept de git reset est relativement compliqué. Sa forme de commande : git reset [--mixed | --soft | --hard] [

Options de commande

--mixed C'est l'option par défaut. Par exemple, git reset [--mixed] dev^ (pour la définition de dev^, veuillez vous référer à 2.6.5). Sa fonction est uniquement de réinitialiser le statut de la branche à dev1^, mais elle ne modifie pas le contenu des fichiers de travail. Autrement dit, toutes les modifications de fichiers de dev1^ à dev1 sont conservées, mais tous les journaux de validation entre dev1^ et dev1 sont effacés, et le contenu du fichier modifié n'est pas identifié par git add, si vous souhaitez ré-engager, vous devez également faites un git add sur les fichiers modifiés. De cette façon, après la validation, vous obtiendrez un enregistrement de validation très propre. (Rétablir le contenu de l'index et de l'entrepôt

--soft équivaut à faire git reset –mixed, puis à faire git add sur les fichiers modifiés. Si vous utilisez cette option, vous pouvez valider directement (Rétablir le contenu de l'entrepôt

--hard entraînera la restauration de toutes les informations, y compris le contenu du fichier. Généralement, il n'est utilisé que lors de la réinitialisation du code abandonné. Après l'exécution, le contenu du fichier ne peut pas être restauré (le contenu du fichier). le contenu du répertoire de travail, de l'index et de l'entrepôt est annulé

Par exemple,

passez à la branche utilisée

git reset HEAD^. >

git reset HEAD~2 Annulez la deuxième note

Si vous souhaitez restaurer les fichiers du répertoire de travail, utilisez git reset - - hard HEAD^ Annulez le premier enregistrement

git reset - - hard HEAD~2 Restaurez le deuxième enregistrement

Vous pouvez également utiliser la méthode suivante

pour restaurer complètement le répertoire de travail actuel. Faites défiler jusqu'au numéro de version spécifié Supposons que. montré ci-dessous que nous avons cinq versions soumises par A-G. Le numéro de version de C est bbaf6fb5060b4875b18ff9ff637ce118256d6f20. Nous avons ensuite exécuté 'git reset bbaf6fb5060b4875b18ff9ff637ce118256d6f20'. Le résultat est donc seulement trois versions soumises par A-C

<.>


3.15. Git rever

restaure une certaine modification de la version, par exemple : git revert commit_id (où commit_id est une représentation unique générée lors de la validation du code String

Par exemple : (dans 3.6) git revert dfb02e6e4f2f7b573337763e5c0013802e392818 (L'exécution de cette opération restaurera la dernière opération de validation

3.16. Git confi

Utilisez cette commande pour créer un nouvel ajout et modifier divers paramètres Git, tels que "git config branch.master.remote origin" pour définir le référentiel distant du maître comme un alias appelé référentiel d'origine

3.17. Git sho

Afficher différents types d'objets

3.18. Git ta

Créer, lister, supprimer ou vérifier un objet tag (signé avec GPG)

Vous pouvez convertir un tag spécifique en version afin que vous n'ayez pas besoin de vous souvenir de la valeur de hachage complexe du numéro de version Par exemple, vous pouvez utiliser "git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20" pour marquer la version que vous avez restaurée. Ensuite, lorsque vous souhaitez afficher la version à l'avenir, vous pouvez simplement utiliser le nom de la balise revert_version au lieu de la valeur de hachage

<.>

4. Commande d'opération du serveur Git (échange avec le serveur

4.1. Git clon

Supprimer le code de l'entrepôt du serveur dans un répertoire créé localement (interagir avec le serveur

Après avoir obtenu la bibliothèque git distante via git clone, les informations du développeur dans .git/config ne seront pas clonées ensemble. . Vous devez toujours ajouter des informations sur le développeur au fichier .git/config de la bibliothèque locale. De plus, les développeurs doivent également ajouter eux-mêmes le fichier .gitignore

La bibliothèque git distante obtenue via git clone ne contient que la branche de travail actuelle de la bibliothèque git distante. Si vous souhaitez obtenir d'autres informations sur la branche, vous devez utiliser "git branch -r" pour les afficher. Si vous avez besoin d'obtenir d'autres codes de branche distante, vous pouvez utiliser la commande "git checkout -b nom de la branche locale nom de la branche distante". , où la branche distante. Le nom de la branche répertorié dans "git branch -r" est généralement quelque chose comme "nom d'origine/branche". Si le nom de la branche locale existe déjà, le paramètre "-b" n'est pas obligatoire

par exemple

Git pul
.

从服务器的仓库中获取代码,和本地代码合并。(与服务器交互,从服务器上下载最新代码,等同于: Git fetch + Git merge

从其它的版本库(既可以是远程的也可以是本地的)将代码更新到本地,例如:“git pull origin master ”就是将origin这个版本库的代码更新到本地的master主分支

git pull可以从任意一个git库获取某个分支的内容。用法如下

git pull  username@ipaddr:远端repository名远端分支名 本地分支名。这条命令将从远端git库的远端分支名获取到本地git库的一个本地分支中。其中,如果不写本地分支名,则默认pull到本地当前分支

需要注意的是,git pull也可以用来合并分支。 和git merge的作用相同。 因此,如果你的本地分支已经有内容,则git pull会合并这些文件,如果有冲突会报警

例如






4.3. Git push

将本地commit的代码更新到远程版本库中,例如 “git push origin”就会将本地的代码更新到名为orgin的远程版本库中

git push和git pull正好想反,是将本地某个分支的内容提交到远端某个分支上。用法: git pushusername@ipaddr:远端repository名本地分支名 远端分支名。这条命令将本地git库的一个本地分支push到远端git库的远端分支名中

需要格外注意的是,git push好像不会自动合并文件。因此,如果git push时,发生了冲突,就会被后push的文件内容强行覆盖,而且没有什么提示。 这在合作开发时是很危险的事情

例如


4.4. Git fetc

从服务器的仓库中下载代码。(与服务器交互,从服务器上下载最新代码

相当于从远程获取最新版本到本地,不会自动merge,比Git pull更安全些

使用此方法来获取服务器上的更新

Par exemple : si vous utilisez git checkout nov/eclair_rocket (nov/eclair_rocket est le nom de la branche sur le serveur), vous obtiendrez le code téléchargé depuis le serveur lors de votre dernière utilisation de la commande git fetch si vous utilisez git fetch ; d'abord, puis utilisez git Checkout nov/eclair_rocket obtient d'abord les dernières informations de mise à jour du serveur, puis télécharge le dernier code du serveur. . . )h:. . .



 :. . :. ) l:. . )e mutuelle). . g. w. g))t本:enregistrer enregistrer enregistrer enregistrer;:))):]. t. :e)) Branche : 2). Branche : branche d'enregistrement. 2012-22 :) Histoire) Adieu. Nom de la branche r nom. Nom, nom de la branche D. . . bifurquer. . . ;;:. Décrit h). v. es. codeghdhh. h. . bifurquer. )gg)dd)hh)hh le nom a une branche supérieure t. d. f. f))v. e. wg :). 1. g. . s). . . . t))):. m))):. d. . . t commande) commander lp. . Comparez e.e :. Faire de l'élément de réglage du nom ml" ...;. en...) h:...



:...:.) l:. ..) e mutuelle). g. ) Branche.;: .hh nom t. . ;. devenir. . . )h:. . .



 :. . :. ) l:. . )e mutuelle). . g. w. g))t本:enregistrer enregistrer enregistrer enregistrer;:))):]. t. :e)) Branche : 2). Branche : branche d'enregistrement. 2012-22 :) Histoire) Adieu. Nom de la branche r nom. Nom, nom de la branche D. . . bifurquer. . . ;;:. Décrit h). v. es. codeghdhh. h. . bifurquer. )gg)dd)hh)hh le nom a une branche supérieure t. d. f. f))v. e. wg :). 1. g. . s). . . . t))):. m))):. d. . . t commande) commander lp. . Comparez e.e :. Faire de l'élément de réglage du nom ml" ...;. en...) h:...



:...:.) l:. ..) e mutuelle). g.) Branche.;: .hh nom t. . ;. devenir. . . )h:. . .



 :. . :. ) l:. . )e mutuelle). . g. w. g))t本:enregistrer enregistrer enregistrer enregistrer;:))):]. t. :e)) Branche : 2). Branche : branche d'enregistrement. 2012-22 :) Histoire) Adieu. Nom de la branche r nom. Nom, nom de la branche D. . . bifurquer. . . ;;:. Décrit h). v. es. codeghdhh. h. . bifurquer. )gg)dd)hh)hh le nom a une branche supérieure t. d. f. f))v. e. wg :). 1. g. . s). . . . t))):. m))):. d. . . t commande) commander lp. . Comparez e.e :. Faire de l'élément de réglage du nom ml" ...;. en...) h:...



:...:.) l:. ..) e mutuelle). g.) Branche.;: .hh nom t. . ;. devenir. . . )h:. . .



 :. . :. ) l:. . )e mutuelle). . g. w. g))t本:enregistrer enregistrer enregistrer enregistrer;:))):]. t. :e)) Branche : 2). Branche : branche d'enregistrement. 2012-22 :) Histoire) Adieu. Nom de la branche r nom. Nom, nom de la branche D. . . bifurquer. . . ;;:. Décrit h). v. es. codeghdhh. h. . bifurquer. )gg)dd)hh)hh le nom a une branche supérieure t. d. f. f))v. e. wg :). 1. g. . s). . . . t))):. m))):. d. . . t commande) commander lp. . Comparez e.e :. Faire ml" élément de réglage du nom ...;. devenir...) h :...



:. . :. ) l:. . )e mutuelle). . g. w. g))t本:enregistrer enregistrer enregistrer enregistrer;:))):]. t. :e)) Branche : 2). Branche : branche d'enregistrement. 2012-22 :) Histoire) Adieu. Nom de la branche r nom. Nom, nom de la branche D. . . bifurquer. . . ;;:. Décrit h). v. es. codeghdhh. h. . bifurquer. )gg)dd)hh)hh le nom a une branche supérieure t. d. f. f))v. e. wg :). 1. g. . s). . . . t))):. m))):. d. . . t commande) commander lp. . Comparez e.e :. Faire ml" élément de réglage du nom ...;. devenir...) h :...



:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成Git概念
1.1. Git库中由三部分组成
Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内。
1) 工作目录:用户本地的目录;
2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为索引。
3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次更新。
Introduction détaillée à lutilisation de git
1.2. 使用Git时的初始化事项
1.2.1. Git初始化配置
1) 配置使用git仓库的人员姓名
git config --global user.name "Your Name Comes Here"
2) 配置使用git仓库的人员email
git config --global user.email you@yourdomain.example.com
1.2.2. Git文档忽略机制
工作目录中有一些文件是不希望接受Git 管理的,譬如程序编译时生成的中间文件等等。Git 提供了文档忽略机制,可以将工作目录中不希望接受Git 管理的文档信息写到同一目录下的.gitignore 文件中。
例如:工作目录下有个zh目录,如果不想把它加入到Git管理中,则执行:
echo “zh” > .gitignore
git add .
有关gitignore 文件的诸多细节知识可阅读其使用手册:man gitignore
1.3. Git与Repo的比较
Git操作一般对应一个仓库,而Repo操作一般对应一个项目,即一个项目会由若干仓库组成。
例如,在操作整个Recket项目时使用Repo,而操作其中的某个仓库时使用Git。在包含隐藏目录.git的目录下执行git操作。

2. Git help
Git help obtient les commandes git de base
(Si vous voulez savoir comment utiliser une commande spécifique, par exemple : utilisez Git help clone pour savoir comment utiliser git clone)

3. Commandes d'opération locales de base de Git
3.1 Git init
Ou utilisez git init-db.
Créez un référentiel Git vide. Créez un sous-répertoire .git dans le répertoire actuel. À l'avenir, toutes les informations de modification de fichier seront enregistrées dans ce répertoire, contrairement à CVS, qui crée un répertoire CVS dans chaque répertoire et sous-répertoire.
Il existe un fichier de configuration dans le répertoire .git et les informations de configuration qu'il contient peuvent être modifiées.
3.2. Git add
Ajouter les fichiers modifiés ou nouvellement ajoutés dans le répertoire de travail actuel à l'index Git. L'ajouter à l'index Git signifie qu'il est enregistré dans l'historique des versions. exécuté avant l’étape de soumission.
peut être ajouté de manière récursive, c'est-à-dire que s'il est suivi d'un répertoire en tant que paramètre, tous les sous-répertoires et fichiers de l'ensemble du répertoire seront ajoutés de manière récursive. Par exemple :
git add dir1 (Ajoutez le répertoire dir1, tous les fichiers du répertoire sont ajoutés)
Git add f1 f2 (Ajoutez les fichiers f1, f2)
git add (Ajoutez tous les fichiers du répertoire actuel. répertoire (fichiers et sous-répertoires)
3.3. Git rm
Supprimez les fichiers du répertoire de travail et de l'index actuels.
peut être supprimé de manière récursive, c'est-à-dire que s'il est suivi d'un répertoire en tant que paramètre, tous les sous-répertoires et fichiers de l'ensemble du répertoire seront supprimés de manière récursive. Par exemple :
git rm –r * (Entrez un répertoire et exécutez cette instruction pour supprimer tous les fichiers et sous-répertoires du répertoire)
git rm f1 (Supprimez le fichier f1, y compris le répertoire local et indexez cet enregistrement de fichier)
git rm --ached f1 (Supprimez le fichier f1, le fichier du répertoire local ne sera pas supprimé, seul l'enregistrement du fichier dans l'index sera supprimé ; le fichier qui a été ajouté par git sera supprimé du cache, de sorte que il ne sera pas supprimé lors de la validation. La soumission de ce fichier convient aux situations où vous avez ajouté de nombreux fichiers à la fois, mais souhaitez en exclure quelques-uns.)
Git commit
Soumettez les modifications à. le répertoire de travail actuel.
Appelez directement la commande git commit et vous serez invité à remplir les commentaires. Remplissez les commentaires de validation sur la ligne de commande comme suit : git commit -m "Commit initial du référentiel gittutor". Notez que contrairement à CVS, le commentaire git commit ne doit pas être vide, sinon la validation échouera.
git commit a également un paramètre -a, qui peut valider de force les modifications qui ne sont pas identifiées par git add, mais cette méthode n'est pas recommandée.
Chaque fois qu'un commit est effectué, git créera un code d'identification de commit unique pour le code global. Les utilisateurs peuvent restaurer le code de n'importe quel commit via la commande git reset.
git commit –-amend –m « message » (modifier en continu le contenu soumis sur un identifiant de commit)
3.5 Statut Git
Vérifier l'état du référentiel. Vous pouvez savoir quels fichiers ont changé, quels fichiers n'ont pas été ajoutés à la bibliothèque git, etc. Il est recommandé de confirmer l'état de la bibliothèque via cette commande avant chaque validation.
L'opération erronée la plus courante consiste à modifier un fichier et à appeler directement l'opération de validation sans appeler git add pour informer la bibliothèque git que le fichier a changé, ce qui entraîne que le fichier n'est pas réellement soumis. À ce stade, si le développeur pense que le fichier a été soumis et continue de modifier ou même de supprimer le fichier, alors le contenu modifié ne sera pas géré en version. Si vous utilisez git status pour vérifier à chaque fois avant de soumettre, vous pouvez trouver cette erreur. Par conséquent, si vous appelez la commande git status, vous devez accorder une attention particulière à ces fichiers avec l'invite « Modifié mais non mis à jour : ». Ces fichiers sont tous des fichiers qui ont changé par rapport au dernier commit, mais qui n'ont pas été identifiés par git add.
3.6. Journal Git
Consultez le journal historique, y compris chaque changement de version. Chaque changement de version correspond à un identifiant de commit.
Git log -1
-1 signifie qu'un seul commit sera affiché. Si vous souhaitez afficher 5 commits, utilisez -5. S'il n'est pas spécifié, le journal git sera affiché à partir de la validation.
Git log --stat –summary (affiche les modifications détaillées de chaque version)
Dans les informations du journal du projet, la première ligne de chaque journal (c'est-à-dire la chaîne de caractères) est le nom de la soumission de la mise à jour de version . Nous pouvons comprendre ce nom comme le numéro de version du projet. Le numéro de version du projet doit être unique et est automatiquement généré par Git par défaut pour indiquer une certaine mise à jour du projet. Si nous utilisons le numéro de version du projet comme paramètre de la commande git-show, nous pouvons afficher les détails de mise à jour de la version du projet. Par exemple :
1) Git log
Introduction détaillée à lutilisation de git
2) Git show
Introduction détaillée à lutilisation de git
En fait, la commande ci-dessus ne personnalise pas vraiment le numéro de version, elle crée juste un Il s'agit simplement d'un objet tag, qui est plus utile lors de la publication de versions de projet vers le monde extérieur.
3.7. Git merge
Fusionner le code téléchargé depuis le serveur avec le code local. Ou fusionnez des branches.
Par exemple : Actuellement sur la branche master, si vous souhaitez fusionner la branche dev dans master, alors git merge dev
Remarque : git merge nov/eclair_eocket (consiste à fusionner la branche eclair_eocket de la bibliothèque git du serveur dans la branche locale ci-dessus)
git rebase nov/eclair_eocket (mappe la branche eclair_eocket de la bibliothèque git du serveur sur une branche temporaire locale, puis fusionne les modifications sur la branche locale dans cette branche temporaire, puis utilise cette branche temporaire pour initialiser la succursale locale)
3.8. Git diff
Comparez le code local avec le code de l'index, ou comparez le code de l'index avec le code de l'entrepôt local.
1) Git diff
Compare le code dans le répertoire de travail et l'index.
2) Git diff - - cached
Compare le code dans l'index et le référentiel local.
3.9. Git checkout
3.9.1. Passer à la branche
1) Créer une nouvelle branche et basculer vers cette branche
Git checkout –b nouveau nom de branche
2) Passer à une branche établie local branch local_branch
Git checkout local_branch
(Après avoir utilisé cat .git/HEAD, refs:refs/heads/ local_branch s'affiche)
3) Basculer vers une branche remote_branch sur le serveur
Git checkout remote_branch
(La branche distante remote_branch peut être répertoriée via git branch –r)
4) Basculez vers un certain identifiant de validation
Git checkout commit_id
(Après avoir utilisé cat .git/HEAD, affichez commit_id)
5) Basculer vers une certaine balise
Balise de paiement Git
(Après avoir utilisé cat .git/HEAD, la balise s'affiche)
Remarque : sauf pour 1) et 2), les trois restants Ils ont juste passer à un état temporaire (pas de branche) (cette tête est détachée). À ce stade, vous pouvez utiliser git branch pour voir qu'elle est activée (pas de branche), et cat .git/HEAD verra qu'elle pointe vers la branche correspondante. valider l'identifiant. Cette (pas de succursale) n'existe que temporairement et n'est pas une succursale véritablement établie. Si 2) est exécuté à ce moment, celle-ci (pas de branche) disparaîtra automatiquement ; si 1) est exécutée, une nouvelle branche sera créée, et celle-ci (pas de branche) sera attachée à cette nouvelle branche à ce moment. , cat .git/ refs/heads/new_branch Vous pouvez voir qu'il pointe déjà vers l'identifiant de validation à l'instant.
3.9.2. Initialiser une nouvelle branche avec une branche existante
Exécutez la commande suivante pour créer une nouvelle branche tout en basculant vers une branche locale établie ou une branche distante ou un identifiant de commit ou une balise. et accrochez-vous à cette nouvelle branche.
1) Basculez vers une branche locale déjà établie local_branch et utilisez cette branche pour initialiser une nouvelle branche new_branch.
git checkout –b new_branch local_branch
2) Basculez vers une branche distante remote_branch et utilisez cette branche pour initialiser une nouvelle branche new_branch.
Git checkout –b new_branch remote_branch
3) Basculez vers un certain identifiant de commit et créez une nouvelle branche new_branch
Git checkout –b new_branch commit_id
4) Basculez vers une certaine balise et créez une nouvelle branche new_branch
Git checkout –b new_branch tag
3.9.3 Restaurer le code
Par exemple, "git checkout app/model/user.rb" mettra à jour le fichier user.rb à partir de la dernière version validée lorsque vous revenez, tout le contenu du répertoire de travail non validé sera écrasé.

3.10. Git-ls-files
Vérifiez quels fichiers se trouvent dans la bibliothèque git actuelle.
3.11. Git mv
Renommer un fichier, un répertoire ou un lien.
Par exemple : Git mv helloworld.c helloworld1.c (renommer le fichier helloworld.c en helloworld1.c)
Branche Git
3.12.1 Présentation
Dans le référentiel git Le coût. de création d'une branche est presque nulle, alors ne soyez pas avare de créer quelques branches supplémentaires. Lorsque git init est exécuté pour la première fois, le système créera une branche nommée « master ». Les autres branches sont créées manuellement.
Voici quelques stratégies de branchement courantes :
Créez votre propre branche de travail personnelle pour éviter trop d'interférences avec le maître de branche principal et pour faciliter la communication et la collaboration avec les autres
Lorsque vous réalisez des projets à haut risque Lorsque vous travaillez, créer une branche expérimentale ;
Lors de la fusion du travail d'autres personnes, il est préférable de créer une branche temporaire pour la fusion, puis de la "récupérer" dans votre propre branche une fois la fusion terminée.
Effectuez des opérations telles que l'ajout, la suppression et la vérification de branches.
Remarque : les informations sur la branche se trouvent généralement dans le répertoire .git/refs/, où le répertoire heads est la branche locale, remotes est la branche sur le serveur correspondant et tags est la balise.
3.12.2. Afficher les branches
git branch répertorie toutes les branches du référentiel git local. Parmi les branches listées, s'il y a * avant le nom de la branche, cela signifie que cette branche est la branche actuelle.
git branch –r répertorie toutes les branches du référentiel git du serveur.
(Vous pouvez continuer à utiliser la commande "git checkout -b local branch name server branch name" pour obtenir le fichier de code d'une certaine branche sur le serveur).
3.12.3. Vérifiez sur quelle branche vous vous trouvez actuellement
cat .git/HEAD
3.12.4 Créer une branche
1) nom de la branche git
Bien que la branche soit créée, ce n'est pas le cas. La branche de travail actuelle sera basculée vers la branche nouvellement créée. Par conséquent, la commande "git checkout branch name" est également nécessaire pour basculer
2) git checkout -b branch name
Non seulement crée le. branche, mais aussi la branche de travail actuelle. La branche est basculée vers cette branche.
3.12.5. Passer à une branche : git checkout branch name
Passer à la branche principale : git checkout master
3.12.6 Supprimer une branche
git branch –D branch name
. Remarque : Après suppression, toutes les modifications survenues sur cette branche ne pourront pas être récupérées. Forcer la suppression de cette branche.
3.12.7. Comparez les différences entre les fichiers sur deux branches
git diff master branch name (comparez la différence entre la branche master et une autre branche)
Afficher l'historique de la branche
git-. show-branch (Afficher les commentaires de commit et les informations de la branche actuelle)
git-show-branch -all (Afficher les commentaires de commit et les informations de toutes les branches) Par exemple :
* [dev] d2
! [maître] m2
--
* [dev] d2
* [dev^] d1
* [dev~2] d0
*+ [maître] m2
Dans l'exemple ci-dessus, les deux lignes au-dessus de "--" indiquent qu'il y a deux branches, dev et master, et que le dernier journal soumis sur la branche dev est "d2", et le dernier journal soumis sur la branche master est "m2". .Les lignes sous "--" représentent l'historique de l'évolution de la branche, où dev représente le dernier commit effectué sur la branche dev et dev^ représente l'avant-dernier commit effectué sur la branche dev. dev~2 représente l'avant-dernier commit effectué sur la branche dev.
3.12.9. Afficher l'enregistrement d'opération de la branche actuelle
git whatchanged
3.12.10. Fusionner les branches
Méthode 1 :
git merge « Commentaire » La branche cible fusionnée a été fusionnée à partir du source branch
S'il y a des conflits dans la fusion, git vous le demandera.
Par exemple : git checkout master (passer à la branche master)
git merge HEAD dev~2 (fusionner la branche master et la branche dev~2) ou : git merge master dev~2
Méthode 2 :
git pull fusionné la branche cible fusionnée la branche source
Par exemple : git checkout master (passer à la branche principale)
git pull .
Généralement utilisé lors de la fusion du dernier contenu du serveur vers le local. Par exemple : dans la version C, le contenu est obtenu du serveur vers le local, et le contenu local est modifié à ce moment-là. le contenu modifié localement sur le serveur ; mais il s'avère que la version du serveur sur le serveur est passée à G. À ce stade, vous devez effectuer un rebase Git pour fusionner la dernière version sur le serveur avec la version locale. Par exemple :
Les deux images suivantes l'expliqueront plus clairement. Une fois la commande rebase exécutée, le point de branchement est en fait déplacé de C à G, de sorte que la branche ait également la fonction de C à G.

Introduction détaillée à lutilisation de git[6] 3.14. Réinitialisation de Git
En plus de réinitialiser certains codes R&D abandonnés, l'inversion et la récupération de la bibliothèque jouent également un rôle important. Par exemple, nous clonons une base de code à distance, la développons localement et nous préparons à la soumettre à distance. Cependant, lorsque la base de code locale est développée, il existe des commits fonctionnels, des commits à des fins de sauvegarde, etc. En bref, il y a beaucoup de journaux inutiles dans le journal de validation, et nous ne voulons pas soumettre ces journaux à la bibliothèque lorsqu'ils sont renvoyés à la télécommande. Par conséquent, git reset est utilisé.
Le concept de git reset est relativement complexe. Sa forme de commande : git reset [--mixed | --soft | --hard] []
Options de commande :
--mixed C'est l'option par défaut. Par exemple, git reset [--mixed] dev^ (pour la définition de dev^, veuillez vous référer à 2.6.5). Sa fonction est uniquement de réinitialiser le statut de la branche à dev1^, mais elle ne modifie pas le contenu des fichiers de travail. Autrement dit, toutes les modifications de fichiers de dev1^ à dev1 sont conservées, mais tous les journaux de validation entre dev1^ et dev1 sont effacés, et le contenu du fichier modifié n'est pas identifié par git add, si vous souhaitez ré-engager, vous devez également faites un git add sur les fichiers modifiés. De cette façon, après la validation, vous obtiendrez un enregistrement de validation très propre.(Le contenu de l'index et de l'entrepôt est annulé)
--soft équivaut à faire git reset –mixed, puis à faire git add sur les fichiers modifiés. Si cette option est utilisée, vous pouvez vous engager directement. (Le contenu de l'entrepôt est restauré)
La commande --hard entraînera la restauration de toutes les informations, y compris le contenu du fichier. Il n’est généralement utilisé que lors de la réinitialisation de code obsolète. Après l'exécution, le contenu du fichier ne peut pas être restauré. (Le contenu du répertoire de travail, de l'index et de l'entrepôt est annulé)
Par exemple :
Basculez vers la branche utilisée
git reset HEAD^ Annulez le premier enregistrement
git reset HEAD~2 Restaurez le deuxième enregistrement
Si vous souhaitez restaurer les fichiers du répertoire de travail, utilisez git reset - - hard HEAD^ pour restaurer le premier enregistrement
git reset - - hard HEAD~2 pour restaurer le premier enregistrement Deux enregistrements
peuvent également utiliser la méthode suivante :
Restaurer complètement le répertoire de travail actuel vers le numéro de version spécifié Supposons que, comme indiqué ci-dessous, nous ayons des versions soumises cinq fois de A à G, dont la version. Le numéro de C est bbaf6fb5060b4875b18ff9ff637ce118256d6f20. Nous avons exécuté 'git reset bbaf6fb5060b4875b18ff9ff637ce118256d6f20', et le résultat a été que seules les trois versions soumises A-C ont été laissées
Introduction détaillée à lutilisation de git[5]
3.15. Git revert
restaure une certaine modification de la version , par exemple : git revert commit_id (Commit_id est une chaîne unique générée lors de la validation du code)
Par exemple : (dans 3.6) git revert dfb02e6e4f2f7b573337763e5c0013802e392818 (L'exécution de cette opération restaurera la dernière opération de validation)
3.16. 🎜 > Utilisez cette commande pour ajouter et modifier divers paramètres de Git. Par exemple, "git config branch.master.remote origin" définira le référentiel distant du maître sur un alias appelé référentiel d'origine.
3.17. Git show
Affiche différents types d'objets.
3.18. Balise Git
Créer, lister, supprimer ou vérifier un objet tag (signé avec GPG).
Vous pouvez étiqueter une version spécifique, vous n'avez donc pas besoin de vous souvenir de la chaîne de valeur de hachage complexe du numéro de version. Par exemple, vous pouvez utiliser "git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20" pour marquer la version que vous avez restaurée, puis lorsque vous le souhaitez. vérifiez la version à l'avenir, vous pouvez utiliser le nom de la balise revert_version au lieu de la valeur de hachage.

4. Commandes de fonctionnement du serveur Git (interagir avec le serveur)
4.1. Clone Git
Extraire le code de l'entrepôt du serveur dans un répertoire créé localement (interagir avec le serveur)
Récupérer la télécommande. se terminer par git clone Après le référentiel git, les informations du développeur dans .git/config ne seront pas clonées ensemble. Vous devez toujours ajouter des informations sur le développeur au fichier .git/config de la bibliothèque locale. De plus, les développeurs doivent également ajouter eux-mêmes les fichiers .gitignore.
La bibliothèque git distante obtenue via git clone contient uniquement la branche de travail actuelle de la bibliothèque git distante. Si vous souhaitez obtenir d'autres informations sur la branche, vous devez utiliser "git branch -r" pour les afficher. Si vous avez besoin d'obtenir d'autres codes de branche distante, vous pouvez utiliser la commande "git checkout -b nom de la branche locale nom de la branche distante". , où la branche distante. Le nom de la branche répertorié dans "git branch -r" est généralement quelque chose comme "nom d'origine/branche". Si le nom de la branche locale existe déjà, le paramètre "-b" n'est pas obligatoire.
Par exemple :
Introduction détaillée à lutilisation de git[5]
4.2. Git pull
Récupérez le code du référentiel du serveur et fusionnez-le avec le code local. (Interagissez avec le serveur et téléchargez le dernier code depuis le serveur, ce qui équivaut à : Git fetch + Git merge)
Mettez à jour le code en local à partir d'autres référentiels (distants ou locaux), par exemple : " git pull origin master" consiste à mettre à jour le code du référentiel d'origine vers la branche master locale.
git pull peut obtenir le contenu d'une certaine branche à partir de n'importe quelle bibliothèque git. L'utilisation est la suivante :
git pull username@ipaddr : nom du référentiel distant nom de la branche distante nom de la branche locale . Cette commande obtiendra le nom de la branche distante du référentiel git distant vers une branche locale du référentiel git local. Parmi eux, si vous n'écrivez pas le nom de la branche locale, il sera extrait par défaut vers la branche locale actuelle.
Il est à noter que git pull peut également être utilisé pour fusionner des branches. Il a la même fonction que git merge. Par conséquent, si votre branche locale a déjà du contenu, git pull fusionnera ces fichiers et vous alertera en cas de conflits.
Par exemple :
Introduction détaillée à lutilisation de git

Introduction détaillée à lutilisation de git

Introduction détaillée à lutilisation de git

Introduction détaillée à lutilisation de git
4.3. Git push
Mettre à jour le code de validation local vers le référentiel distant Par exemple, "git push origin" mettra à jour le code local vers le. référentiel distant nommé org.
Git push et git pull sont exactement le contraire, ils servent à soumettre le contenu d'une branche locale à une branche distante. Utilisation : git pushusername@ipaddr : nom du référentiel distant nom de la branche locale nom de la branche distante . Cette commande pousse une branche locale du référentiel git local vers le nom de branche distante du référentiel git distant.
Il convient de noter que git push ne semble pas fusionner automatiquement les fichiers. Par conséquent, si un conflit survient pendant git push, il sera écrasé de force par le contenu du fichier poussé ultérieurement sans aucune invite. C'est une chose très dangereuse lors du développement collaboratif.
Par exemple :
Introduction détaillée à lutilisation de git
4.4. Git fetch
Téléchargez le code depuis le référentiel du serveur. (Interagissez avec le serveur et téléchargez le dernier code depuis le serveur)
Cela équivaut à obtenir la dernière version du distant vers le local. Il ne fusionnera pas automatiquement et est plus sûr que Git pull.
Utilisez cette méthode pour obtenir des mises à jour sur le serveur.
Par exemple : si vous utilisez git checkout nov/eclair_rocket (nov/eclair_rocket est le nom de la branche sur le serveur), vous obtiendrez le code téléchargé depuis le serveur lors de votre dernière utilisation de la commande git fetch si vous utilisez git fetch ; d'abord, puis utilisez git Checkout nov/eclair_rocket obtient d'abord les dernières informations de mise à jour du serveur, puis télécharge le dernier code du serveur.

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!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal