Checkout a Remote Branch in Local
$ git checkout --track origin/master
The above command creates a local branch with the same name, i.e.
master, as the remote branch,
and let the local branch track the remote one.
“Tracking” means when run
git push, Git knows where it pushes changes into.
Some notes from
git checkout --help,
As a convenience, –track without -b implies branch creation
When creating a new branch, set up “upstream” configuration.
If no -b option is given, the name of the new branch will be derived from the remote-tracking branch
Print the Short Commit SHA1 of a Git Tag
# assume the Git tag is "0.1.0" $ git rev-list -n 1 0.1.0 --pretty=format:"%h" | tail -1 c363005
The tag “0.1.0” points to the commit
%H if the full SHA1 is needed.
(Search “placeholder” in
git show --help for the document of
--abbrev option, like
--abbrev=8, if a fixed width SHA1 is needed.
^M Character Shown in
git diff Result
Sometimes, when run
git diff, it prints
^M at the end of some lines.
^M character represents a carriage-return character, i.e.
CRLF, the new line character in Windows.
You may see
^M before, if you use Vim to edit some files coming for Windows/DOS.
^M in the
git diff result means the same line was ended with
CRLF but now
LF, or vice versa.
Usually, a Git repository should be configured in a way that all text files committed
into the repository end with
LF, while files checked out end the local machine specific
LF in Unix and
CRLF in Windows machines. So that
^M would not be seen
git diff. To fix a repository’s configuration, add a
.gitattributes file with content
# Set the default behavior, in case people don't have core.autocrlf set. * text=auto # Declare files that will always have CRLF line endings on checkout. *.bat text eol=crlf
“Renormalize” all the files with updated configuration.
$ git stash -u $ git add --renormalize . $ git status $ git commit -m "Normalize line endings" $ git stash pop
See this GitHub doc, Configuring Git to handle line endings, for more details.