{"id":12384,"date":"2017-04-26T11:54:39","date_gmt":"2017-04-26T09:54:39","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=12384"},"modified":"2017-04-26T11:55:09","modified_gmt":"2017-04-26T09:55:09","slug":"git-differenze-tra-file","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/git-differenze-tra-file\/","title":{"rendered":"Git: differenze tra file"},"content":{"rendered":"<p>Lavorando con Git, come abbiamo visto nei <a href=\"http:\/\/www.devapp.it\/wordpress\/tag\/git\/\" target=\"_blank\" rel=\"noopener noreferrer\">tutorial precedenti<\/a>, si creano contemporaneamente pi\u00f9 copie, differenti tra loro, dello stesso file tra area di lavoro, staging area e repository: quello che vogliamo imparare in questa lezione \u00e8 a tracciarne le differenze.<\/p>\n<p>Per lo scopo che ci prefiggiamo, esiste il comando <strong>git diff<\/strong> che pu\u00f2 essere utilizzato per\u00a0valutare:<\/p>\n<ul>\n<li>le differenze tra un file nella cartella di lavoro e la sua versione indicizzata nella staging area (quindi parliamo di un file che ha subito modifiche dopo il comando git add):\n<pre class=\"lang:sh decode:true\">&gt; git diff nome_file<\/pre>\n<\/li>\n<li>le differenze tra la versione nel repository locale e quella nella cartella di lavoro (nel caso di modifiche dopo il commit):\n<pre class=\"lang:sh decode:true\">&gt; git diff HEAD nome_file<\/pre>\n<\/li>\n<\/ul>\n<p>Ci\u00f2 con cui si deve prendere confidenza \u00e8 il formato con cui viene espresso l&#8217;output. Lo vedremo con un esempio molto semplice.<\/p>\n<p>Immaginiamo che nella nostra cartella di lavoro, creiamo il file <em>lista-spesa.txt<\/em> dal seguente contenuto:<\/p>\n<pre class=\"lang:sh decode:true\">latte 2 litri\r\n12 uova\r\ncarote 1 kg\r\nmele 3 kg<\/pre>\n<p>lo tracciamo con <em>git ad<\/em>d e lo modifichiamo cos\u00ec (versione presente nella cartella di lavoro):<\/p>\n<pre class=\"lang:sh decode:true\">latte 3 litri\r\ncarote 1 kg\r\nmele   3 kg\r\nbanane 6<\/pre>\n<p>Invochiamo a questo punto <em>git diff<\/em> per ottenere una descrizione delle modifiche tra area di lavoro e versione indicizzata. Ecco l&#8217;ouput:<\/p>\n<pre class=\"lang:sh decode:true\">diff --git a\/lista-spesa.txt b\/lista-spesa.txt\r\nindex 1c6e5a6..1ef1777 100644\r\n--- a\/lista-spesa.txt\r\n+++ b\/lista-spesa.txt\r\n@@ -1,4 +1,4 @@\r\n-latte 2 litri\r\n-12 uova\r\n+latte 3 litri\r\n carote 1 kg\r\n-mele 3 kg\r\n+mele   3 kg\r\n+banane 6<\/pre>\n<p>Notiamo per prima cosa la notazione @@ -1,4 +1,4 @@. Serve ad indicare le porzioni interessate dalle modifiche nei due file: l&#8217;espressione -1,4 indica una\u00a0porzione di quattro righe a partire dalla prima della versione nella staging area mentre +1,4 la porzione analoga nel file attualmente salvato nella directory di lavoro.<\/p>\n<p>Tutte le righe successive potranno iniziare:<\/p>\n<ul>\n<li>con uno <strong>spazio bianco<\/strong> se la riga non \u00e8 stata interessata da modifiche;<\/li>\n<li>con un <strong>segno meno<\/strong> per la versione della riga presente nella staging area;<\/li>\n<li>con un <strong>simbolo pi\u00f9<\/strong> per la versione della riga presente nel file della cartella di lavoro.<\/li>\n<\/ul>\n<p>Il comando <em>git diff<\/em> come vediamo completa le informazioni di <em>git status<\/em>. Entrambi sono fondamentali e dobbiamo apprezzarne il senso proprio perch\u00e8 ci permettono di tenere sotto controllo il nostro flusso di lavoro con git.<\/p>\n<p>Alla prossima lezione!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lavorando con Git, come abbiamo visto nei tutorial precedenti, si creano contemporaneamente pi\u00f9 copie, differenti tra loro,&#8230;<\/p>\n","protected":false},"author":561,"featured_media":12860,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[991,1728,1927,1723],"class_list":["post-12384","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorial-pratici","tag-alternativa-a-svn","tag-git","tag-tutorial-git","tag-version-control-system"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12384","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=12384"}],"version-history":[{"count":4,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12384\/revisions"}],"predecessor-version":[{"id":12971,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12384\/revisions\/12971"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/12860"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=12384"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=12384"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=12384"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}