Git notes

From raju

Tips

Configure http proxy

 git config --global http.proxy http://login:password@your.proxy.server:port

rebasing using git gui

Q. How to do git pull --rebase using git gui?

A. The trick is to add a custom command in git gui:

 Tools -> Add
 Name: Pull with Rebase
 Command: git pull --rebase origin
 Add globally -> check
 Add

The new command will appear under Tools menu.

Generate diff with no context

git diff -U0

In general, to generate a diff with <n> lines of context, use

git diff -U<n>

or

git diff --unified=<n>

The default is 3 lines of context.

show modified files in the current directory only

    git status .
    

or more generally

    git status /path/to/dir
    

works from git 1.7 onwards. Does not work with git 1.6.

git pull autostash

    git pull --rebase --autostash
    

The --autostash works only with --rebase. It was introduced in git 2.6 (2015-09-28).

time zone of the committer

    git cat-file -p <commit-id>
    

Will show the entire commit object. It will contain two lines like this:

    author Foo Bar <foo@bar.com> 1398017575 -0400
    committer Foo Bar <foo@bar.com> 1398017575 -0400
    

As you can see, the timezone info follows the Unix-epoch timestamps.

Note that the timezone is something set by the user himself on the client. So it can be easily spoofed by the user if he desires to.

cache username and passwords

for HTTPS authentication

    git config --global credential.helper wincred
    

This works. But how is it different from

    git config --global credential.helper manager
    

?

number of commits

To get a commit count for a revision (HEAD, master, a commit hash):

    git rev-list --count <revision>
    

To get the commit count across all branches:

    git rev-list --count --all
    

Ref :- https://stackoverflow.com/questions/677436/how-to-get-the-git-commit-count

multiple repositories

The mr tool in myrepos is very handy when working with multiple git repositories. See http://myrepos.branchable.com/ for more details.

Author of myrepos - Joey Hess. His contact info is at https://joeyh.name/contact/

Diff word by word

To diff word by word

    git diff --color-words
    <pre></ul>
    
    To set up an alias for it
    <ul><pre>
    git config --global alias.wdiff "diff --color-words"
    <pre></ul>
    
    which will add the following lines to ~/.gitconfig
    <ul><pre>
    [alias]
        wdiff = diff --color-words
    <pre></ul>
    
    Once done, "git wdiff" will do the same thing as "git diff --color-words"
    
    === Useful links ===
    ==== Migrate from sourceforge to github ====
    The instructions to move a git repository from sourceforge to github are clearly laid out in https://help.github.com/articles/importing-a-git-repository-using-the-command-line/ .
    
    In particular, to migrate the sampleusage project from [https://sourceforge.net/projects/sampleusage/ sourceforge] to [https://github.com/KamarajuKusumanchi/sampleusage github], I did
    <pre>
    Login into github website
    create a new repository called sampleusage: https://github.com/KamarajuKusumanchi/sampleusage
    git clone --bare ssh://kamaraju@git.code.sf.net/p/sampleusage/git sampleusage-git
    cd sampleusage-git
    git push --mirror https://github.com/KamarajuKusumanchi/sampleusage.git
    cd ..
    rm -rf sampleusage-git
    

    To get a local copy

    git clone git@github.com:KamarajuKusumanchi/sampleusage.git
    cd sampleusage
    git config user.name "KamarajuKusumanchi"
    git config user.email "kamaraju@gmail.com"
    

    Sample work flow once it is all done

    git add dummy_file
    git commit -m "dummy commit message"
    git push -u origin master
    

    After making sure that everything on github is working properly, I submitted a ticket to delete the original sourceforge project.

    git and vimdiff

    viewing diffs

    merge a development branch into master

    gitlab

    external links