Opérations de base de Git
Le travail de Git consiste à créer et à enregistrer des instantanés de votre projet et à les comparer aux instantanés suivants. Ce chapitre présente les commandes permettant de créer et de soumettre des instantanés de votre projet.
Obtenir et créer des commandes de projet
git init
Utilisez git init pour créer un nouveau référentiel Git dans le répertoire. Vous pouvez le faire à tout moment, dans n’importe quel répertoire, et c’est entièrement localisé.
Exécutez git init dans le répertoire pour créer un référentiel Git. Par exemple, si nous créons un projet php :
$ mkdir php $ cd php/ $ git init Initialized empty Git repository in /Users/tianqixin/www/php/.git/ # 在 /www/php/.git/ 目录初始化空 Git 仓库完毕。
Vous pouvez maintenant voir que le sous-répertoire .git est généré dans votre projet. Il s'agit de votre référentiel Git, où sont stockées toutes les données d'instantanés concernant votre projet.
ls -a . .. .git
git clone
Utilisez git clone pour copier un référentiel Git localement afin de pouvoir visualiser le projet ou apporter des modifications.
Si vous avez besoin de collaborer sur un projet avec d'autres personnes ou si vous souhaitez faire une copie d'un projet pour voir le code, vous pouvez cloner ce projet. Exécutez la commande :
git clone [url]
[url] pour l'élément que vous souhaitez copier, et c'est tout.
Par exemple, si on clone le projet sur Github :
$ git clone git@github.com:schacon/simplegit.git Cloning into 'simplegit'... remote: Counting objects: 13, done. remote: Total 13 (delta 0), reused 0 (delta 0), pack-reused 13 Receiving objects: 100% (13/13), done. Resolving deltas: 100% (2/2), done. Checking connectivity... done.
Une fois le clonage terminé, un répertoire simplegit sera généré dans le répertoire courant :
$ cd simplegit/ $ls README Rakefile libL'opération ci-dessus copiera tous les enregistrements du projet.
$ ls -a . .. .git README Rakefile lib $ cd .git $ ls HEAD description info packed-refs branches hooks logs refs config index objects
Par défaut, Git créera votre répertoire de projet local avec le nom du projet indiqué par l'URL que vous fournissez. Il s'agit généralement du nom du projet après le dernier / dans l'URL. Si vous souhaitez un nom différent, vous pouvez ajouter le nom souhaité après la commande.
Instantanés de base
Le travail de Git consiste à créer et à enregistrer des instantanés de votre projet et à les comparer avec les instantanés suivants. Ce chapitre présente les commandes permettant de créer et de soumettre des instantanés de votre projet.
git add
La commande git add permet d'ajouter le fichier au cache, par exemple, on ajoute les deux fichiers suivants :
$ touch README $ touch hello.php $ ls README hello.php $ git status -s ?? README ?? hello.php $
La commande git status permet de voir l'état actuel du projet.
Ensuite, nous exécutons la commande git add pour ajouter les fichiers :
$ git add README hello.php
Maintenant, nous exécutons à nouveau git status, et vous pouvez voir que ces deux fichiers ont été ajoutés.
$ git status -s A README A hello.php $
Dans les nouveaux projets, il est courant d'ajouter tous les fichiers. Nous pouvons utiliser la commande git add . pour ajouter tous les fichiers du projet en cours.
Maintenant, nous modifions le fichier README :
$ vim README <pre> <p>在 README 添加以下内容:<b># php Git 测试</b>,然后保存退出。</p> <p>再执行一下 git status:</p> $ git status -s AM README A hello.php
Le statut "AM" signifie que ce fichier a changé après que nous l'ayons ajouté au cache. Après avoir effectué les modifications, nous exécutons la commande git add pour l'ajouter au cache :
$ git add . $ git status -s A README A hello.php
Lorsque vous souhaitez inclure vos modifications dans l'instantané qui est sur le point d'être soumis, vous devez exécuter git add.
git status
git status pour voir s'il y a eu des changements depuis votre dernier commit.
J'ai ajouté le paramètre -s lors de la démonstration de cette commande pour obtenir un bref résultat. Si ce paramètre n'est pas ajouté, la sortie détaillée sera :
$ git status On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: README new file: hello.php
git diff
Exécutez git diff pour afficher les informations détaillées du résultat de l'exécution de git status.
La commande git diff montre la différence entre les modifications qui ont été écrites dans le cache et les modifications qui ont été modifiées mais pas encore écrites dans le cache. Il existe deux principaux scénarios d'application pour git diff.
Modifications pas encore mises en cache : git diff
Afficher les modifications mises en cache : git diff -- cached
Afficher toutes les modifications mises en cache et non mises en cache : git diff HEAD
Afficher le résumé au lieu de l'intégralité de la différence : git diff --stat
Entrez ce qui suit dans le fichier hello.php :
<?php echo 'php中文网:www.php.cn'; ?>
$ git status -s A README AM hello.php $ git diff diff --git a/hello.php b/hello.php index e69de29..69b5711 100644 --- a/hello.php +++ b/hello.php @@ -0,0 +1,3 @@ +<?php +echo 'php中文网:www.php.cn'; +?>
git status vous montre Soumettre les modifications mises à jour ou les modifications écrites au cache, et git diff montre quelles sont ces modifications ligne par ligne.
Vérifions ensuite l'effet d'exécution de git diff --cached :
$ git add hello.php $ git status -s A README A hello.php $ git diff --cached diff --git a/README b/README new file mode 100644 index 0000000..8f87495 --- /dev/null +++ b/README @@ -0,0 +1 @@ +# php Git 测试 diff --git a/hello.php b/hello.php new file mode 100644 index 0000000..69b5711 --- /dev/null +++ b/hello.php @@ -0,0 +1,3 @@ +<?php +echo 'php中文网:www.php.cn'; +?>
git commit
Utilisez la commande git add pour écrire le contenu de l'instantané dans la zone de cache , Exécutez git commit pour ajouter le contenu de la zone de cache à l'entrepôt.
Git enregistre votre nom et votre adresse e-mail pour chaque soumission que vous effectuez, la première étape consiste donc à configurer votre nom d'utilisateur et votre adresse e-mail.
$ git config --global user.name 'php' $ git config --global user.email test@php.cn
Ensuite, nous écrivons dans le cache et validons toutes les modifications dans hello.php. Dans ce premier exemple, nous utilisons l'option -m pour fournir des commentaires de validation sur la ligne de commande.
$ git add hello.php $ git status -s A README A hello.php $ $ git commit -m '第一次版本提交' [master (root-commit) d32cf1f] 第一次版本提交 2 files changed, 4 insertions(+) create mode 100644 README create mode 100644 hello.php
Maintenant, nous avons enregistré l'instantané. Si nous exécutons git status:
$ git status # On branch master nothing to commit (working directory clean)
, le résultat ci-dessus montre que nous n'avons apporté aucune modification depuis la dernière soumission, et qu'il s'agit d'un "répertoire de travail propre : répertoire de travail propre".
Si vous ne définissez pas l'option -m, Git essaiera d'ouvrir un éditeur pour que vous puissiez remplir les informations de validation. Si Git ne trouve pas les informations pertinentes dans votre configuration, il ouvrira vim par défaut. L'écran ressemblera à ceci :
# Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: hello.php # ~ ~ ".git/COMMIT_EDITMSG" 9L, 257C
Si vous pensez que le processus de mise en cache des commits de git add est trop lourd, Git vous permet également de sauter cette étape avec l'option -a. Le format de la commande est le suivant :
git commit -a
Nous modifions d'abord le fichier hello.php avec le contenu suivant :
<?php echo 'php中文网:www.php.cn'; echo 'php中文网:www.php.cn'; ?>
puis exécutons la commande suivante :
git commit -am '修改 hello.php 文件' [master 71ee2cb] 修改 hello.php 文件 1 file changed, 1 insertion(+)
git reset HEAD
La commande git reset HEAD est utilisée pour annuler le contenu mis en cache.
On change d'abord le fichier README, le contenu est le suivant :
# php Git 测试 # php中文网
hello.php le fichier est modifié en :
<?php echo 'php中文网:www.php.cn'; echo 'php中文网:www.php.cn'; echo 'php中文网:www.php.cn'; ?>
Maintenant après la modification des deux fichiers, ils sont soumis à la zone de cache. Nous devons maintenant annuler le cache de l'un d'entre eux, comme suit :
$ git status -s M README M hello.php $ git add . $ git status -s M README M hello.pp $ git reset HEAD -- hello.php Unstaged changes after reset: M hello.php $ git status -s M README M hello.php
Désormais, lorsque vous exécutez git commit, seules les modifications apportées au fichier README seront validées, mais pas. à bonjour.php.
$ git commit -m '修改' [master f50cfda] 修改 1 file changed, 1 insertion(+) $ git status -s M hello.php
Vous pouvez voir les modifications apportées au fichier hello.php et les soumettre.
À ce stade, nous pouvons utiliser la commande suivante pour soumettre les modifications à hello.php :
$ git commit -am '修改 hello.php 文件' [master 760f74d] 修改 hello.php 文件 1 file changed, 1 insertion(+) $ git status On branch master nothing to commit, working directory clean
En bref, exécutez git reset HEAD pour annuler l'ajout précédent de git add, mais vous ne voulez pas pour l'inclure dans le prochain commit du cache dans l'instantané.
git rm
git rm supprimera l'entrée du cache. Ceci est différent de git reset HEAD qui supprime l'entrée en cache. "Décacher" signifie restaurer la zone de cache telle qu'elle était avant que nous apportions les modifications.Par défaut, git rm file supprimera le fichier du cache et de votre disque dur (répertoire de travail).
Si vous souhaitez conserver le fichier dans le répertoire de travail, vous pouvez utiliser git rm --cached :
Par exemple, si on supprime le fichier hello.php :
$ git rm hello.php rm 'hello.php' $ ls README
Sans supprimer le fichier de l'espace de travail :
$ git rm --cached README rm 'README' $ ls README
git mv
Tout ce que fait la commande git mv est ce que fait la commande git rm --cached , renommez le fichier disque, puis exécutez git add pour ajouter le nouveau fichier à la zone de cache.
Nous rajoutons d'abord le README que nous venons de supprimer :
$ git add README
puis nous le renommons :
$ git mv README README.md $ ls README.md