8. $ git checkout feature/security
Branch feature/security set up to track remote
branch feature/security from origin by
rebasing.
Switched to a new branch feature/security
10. What about pushes?
● Let's checkout remote "new_feature" as
"security"
● git checkout -t origin/new_fature
-b security
● Let's try to push to "new_feature"
16. The special refspec : (or +: to allow non-fast-forward
updates) directs git to push “matching” branches: for every
branch that exists on the local side, the remote side is
updated if a branch of the same name already exists on
the remote side.
... so all other branches were
pushed unintentionally :(
19. Works like git push <remote>, where <remote> is the
current branch’s remote (or origin, if no remote is
configured for the current branch).
... so same as with 'origin' :(
25. What's the default behavior?
"By default, git push origin will update branches on the
destination with one with the same name on the source,
instead of using the association defined by git branch
--track, which git pull origin would use — the config option
push.default can change this behaviour.”
http://longair.net/blog/2011/02/27/an-asymmetry-between-git-pull-and-git-push/
26. git config push.default
● nothing
● matching (default)
● upstream
● current
Introduced 4 years ago in commit:
https://github.
com/git/git/commit/521537476fe99b97bfcdf1b8f0c579061af5fd3
e
27. What should be by default?
● simple (not default)
"push to the upstream branch, but only if it has the same name remotely. If
not, give an error that suggests the right command to push explicitely to
'upstream' or 'current'."
Introduced in commit: http://goo.gl/je6gk
Available since 1.7.11 (https://raw.github.com/git/git/master/Documentation/RelNotes/1.7.11.txt)
Ubuntu:
[00:33:03] mgrzechocinski ~ git version
git version 1.7.10.4
28. git push -u
● set tracking branch
● set push branch
$ git push origin -u topic/feature1
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:mgrzechocinski/gitkata.git
* [new branch] topic/feature1 -> topic/feature1
Branch topic/feature1 set up to track remote branch
topic/feature1 from origin by rebasing.
$ git push
Current branch topic/feature1 is up to date.
$ git pull
Current branch topic/feature1 is up to date.