diff options
-rw-r--r-- | images/gitk01.png | bin | 0 -> 9468 bytes | |||
-rw-r--r-- | images/gitk02.png | bin | 0 -> 8507 bytes | |||
-rw-r--r-- | images/gitk03.png | bin | 0 -> 7776 bytes | |||
-rw-r--r-- | images/gitk04.png | bin | 0 -> 7430 bytes | |||
-rw-r--r-- | introduzione_a_git.rest | 223 |
5 files changed, 222 insertions, 1 deletions
diff --git a/images/gitk01.png b/images/gitk01.png Binary files differnew file mode 100644 index 0000000..7feedf9 --- /dev/null +++ b/images/gitk01.png diff --git a/images/gitk02.png b/images/gitk02.png Binary files differnew file mode 100644 index 0000000..a33befd --- /dev/null +++ b/images/gitk02.png diff --git a/images/gitk03.png b/images/gitk03.png Binary files differnew file mode 100644 index 0000000..c2ae4b3 --- /dev/null +++ b/images/gitk03.png diff --git a/images/gitk04.png b/images/gitk04.png Binary files differnew file mode 100644 index 0000000..22ecfd1 --- /dev/null +++ b/images/gitk04.png diff --git a/introduzione_a_git.rest b/introduzione_a_git.rest index 533b0b5..a9d8e6a 100644 --- a/introduzione_a_git.rest +++ b/introduzione_a_git.rest @@ -493,16 +493,237 @@ Ora di rientrare :: $git push + $ git push + Counting objects: 5, done. + Delta compression using up to 2 threads. + Compressing objects: 100% (3/3), done. + Writing objects: 100% (3/3), 487 bytes, done. + Total 3 (delta 0), reused 0 (delta 0) + Unpacking objects: 100% (3/3), done. + remote: error: refusing to update checked out branch: refs/heads/people + remote: error: By default, updating the current branch in a non-bare repository + remote: error: is denied, because it will make the index and work tree inconsistent + remote: error: with what you pushed, and will require 'git reset --hard' to match + remote: error: the work tree to HEAD. + remote: error: + remote: error: You can set 'receive.denyCurrentBranch' configuration variable t + remote: error: 'ignore' or 'warn' in the remote repository to allow pushing int + remote: error: its current branch; however, this is not recommended unless you + remote: error: arranged to update its work tree to match what you pushed in som + remote: error: other way. + remote: error: + remote: error: To squelch this message and still keep the default behaviour, se + remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'. + To /home/[...]/greeter/ + ! [remote rejected] people -> people (branch is currently checked out) + error: failed to push some refs to '/home/[...]/greeter/' .. class:: handout - C'è un problema: + C'è un problema: git non permette di fare push che dovrebbero modificare + ciò che c'è nella *working copy* dell'altro repository; una soluzione + sarebbe richiedere l'aggiornamento con il comando ``git pull`` + dal repository sul PC, ma richiede un po' di configurazione. + Per ora usiamo una soluzione veloce: + +:: + + $ cd /home/[...]/greeter/ + $ git checkout master + $ cd - + $USB_KEY/greeter + $ git push + Counting objects: 5, done. + Delta compression using up to 2 threads. + Compressing objects: 100% (3/3), done. + Writing objects: 100% (3/3), 487 bytes, done. + Total 3 (delta 0), reused 0 (delta 0) + Unpacking objects: 100% (3/3), done. + To /home/[...]/greeter/ + d78d340..59b9d39 people -> people + $ git log + commit 59b9d3971db8cb872c798b215365b22fb20aa5a7 + [...] + $ cd /home/[...]/greeter/ + $ git checkout people + Switched to branch 'people' + $ git log + commit 59b9d3971db8cb872c798b215365b22fb20aa5a7 + +Bugfixing della versione stabile +-------------------------------- + +.. class:: handout + + Qualcuno ci fa notare che nella versione "stabile" del nostro programma + c'è un errore: una riga di documentazione vuota. Rimediamo subito! + +:: + + $ git checkout master + Switched to branch 'master' + +``greeter/greeter.py``:: + + class Greeter: + """This class greets people.""" + + def greet(self): + print "Hello World!" + +:: + + $ git add greeter/greeter.py + $ git commit -m 'greeter/greeter.py: docstring for the class' + [master cdef61b] greeter/greeter.py: docstring for the class + 1 file changed, 1 insertion(+), 1 deletion(-) + Reintegriamo in master ---------------------- .. class:: handout + Adesso che la funzionalità è completa possiamo reintegrarla nel branch + master: con ``gitk -a`` possiamo vedere la situazione attuale. + +:: + + $ git checkout people + Switched to branch 'people' + $ gitk -a + +.. figure:: images/gitk01.png + :align: left + +.. class:: handout + + Notiamo che al momento il branch people parte da un commit di master + che non è l'ultimo: questo non è un problema per riportarlo in master, + ma causa un commit fittizio con il quale si descrive il merge. + + Dato che il branch people non è stato pubblicato da nessuna parte, + possiamo invece barare e portarlo a nascere dall'ultimo commit di master. + +:: + + $ git log + commit 59b9d3971db8cb872c798b215365b22fb20aa5a7 + [...] + commit d78d34010156781d20ef194a62f00d4eb9edb26b + $ git rebase master + First, rewinding head to replay your work on top of it... + Applying: greeter/greeter.py: support for multiple greetees + Using index info to reconstruct a base tree... + Falling back to patching base and 3-way merge... + Auto-merging greeter/greeter.py + Applying: greeter.py: support for a custom greetee. + $ git log + commit 5a23f44b8492f41f6a4834b959111b924efa905c + [...] + commit 2229a1833b2dd00922978140d5b7e16688408ee1 + $ gitk -a + +.. figure:: images/gitk01.png + :align: left + +.. class:: handout + + I commit hanno cambiato identificativo, non sono più gli stessi di prima, + ma almeno possiamo vedere che il nostro branch è la prosecuzione + naturale di master. + + Già che ci siamo, però, possiamo decidere che i due commit riguardano + la stessa modifica, per cui possiamo unirli in un commit solo. + +:: + + $ git rebase -i master + +:: + + pick 2229a18 greeter/greeter.py: support for multiple greetees + squash 5a23f44 greeter.py: support for a custom greetee. + + # Rebase cdef61b..5a23f44 onto cdef61b + # + # Commands: + # p, pick = use commit + # r, reword = use commit, but edit the commit message + # e, edit = use commit, but stop for amending + # s, squash = use commit, but meld into previous commit + # f, fixup = like "squash", but discard this commit's log message + # x, exec = run command (the rest of the line) using shell + # + # These lines can be re-ordered; they are executed from top to bottom. + # + # If you remove a line here THAT COMMIT WILL BE LOST. + # However, if you remove everything, the rebase will be aborted. + # + +:: + + Support for a custom greetee. + # This is a combination of 2 commits. + # The first commit's message is: + + # This is the 2nd commit message: + + # Please enter the commit message for your changes. Lines starting + # with '#' will be ignored, and an empty message aborts the commit. + # + # Author: Elena of Valhalla'' Grandi <valhalla@trueelena.org> + # + # Not currently on any branch. + # Changes to be committed: + # (use "git reset HEAD <file>..." to unstage) + # + # modified: greeter.py + # modified: greeter/greeter.py + # + +:: + + ".git/COMMIT_EDITMSG" 18L, 509C written + [detached HEAD ca91dc9] Support for a custom greetee. + Author: Elena of Valhalla'' Grandi <valhalla@trueelena.org> + 2 files changed, 8 insertions(+), 3 deletions(-) + Successfully rebased and updated refs/heads/people. + + + +.. class:: handout + + A questo punto il nostro branch è pronto per essere reinserito in + master. + +:: + + $ git log + commit ca91dc9944e003ff47ec58464f3ebbb2ffdb8cfa + [...] + $ gitk -a + +.. figure:: images/gitk03.png + :align: left + +:: + + $ git checkout master + Switched to branch 'master' + $ git merge people + Updating cdef61b..ca91dc9 + Fast-forward + greeter.py | 7 ++++++- + greeter/greeter.py | 4 ++-- + 2 files changed, 8 insertions(+), 3 deletions(-) + $ git branch -d people + Deleted branch people (was ca91dc9). + $ gitk -a + +.. figure:: images/gitk04.png + :align: left + Un bel backup ------------- |