Author: alpha74
git hash-object <file>:- Create a SHA-1 hash for any file.
- Returns a 40char log string of hash.
- Same file returns same hash, and vice versa.
-
Git references are short names for SHA-1 hashes.
-
git show HEAD- Shows commit pointed by HEAD(generally the last commit on the branch).
- Here
HEADis a reference of a SHA-1 hash.
-
~:git show HEAD~1- Shows detailed commit information of immediate parent of HEAD.
~is assumed to be~1.~~is same as~2.~#: Use different values of#to get different commit information.
-
^:- Used in case of
mergecommits, where two branches merge into one. ^or^1: Refers to first parent of commit.^2: Refers to second parent of merge commit.^^: Refers to first parent's first parent.^2^: Refers to second parent's first parent.
- Used in case of
- Tags can be used instead of branch labels or Git IDs in git commands.
- Tags are simple text messages associated with labels, and they are NOT git objects.
Annotated tagsare. git tag: Shows all tags in repo.git tag v0.1: Shows tag with namev0.1.git tag <tagname> [<commit>]: Creates tag with<tagname>.<commit>defaults toHEAD.
-
git tag -a [-m <msg> | -F <file>] <tagname> [<commit>]: Creates an annotated tag. -
Annotated tags are git objects which store:
-
Message:
[-m <msg>]- Optional.
- Provide a short message in cmd itself.
-
Message from file:
[-F <file>]:- Optional.
- Provide a message in a file.
-
-
Commit:
- Optional.
[<commit>]defaults toHEAD.
-
git tag -a -m "new release" v2.0:- Creates an annotated tag with message "new release" using reference from another tag
v2.0. - This type of reference is called
Symbolic reference.
- Creates an annotated tag with message "new release" using reference from another tag
-
Pushing Tags:
- Tags are automatically pushed to remote.
git push <remote> <tagname>: Pushes tag<tagname>to remote(origin).git push <remote> --tags: Pushes all tags to remote.
-
git branch: List all the branches in local repo. Current branch has asterisk on it. -
git branch <newbranch>: Creates a new branch from HEAD of current branch. Current branch is still the same. -
git checkout <branch_or_commit>:- Checkout to a branch or commit.
- Checkout commit is used to temporarily view an older version of project.
- Checkout commit leads to detached HEAD state, as HEAD points directly to SHA-1 label.
- To edit files here, a new branch should be created.
-
git branch -d <branchname>:- Deletes the branch label.
- Works if no commits are made to that branch, and branch is not merged.
-
git branch -D <branchname>:- Deletes branch label even if some commits are made and branch is not merged.
-
git checkout -b <newbranch>: Combinesgit branchandgit checkout. Works only for new branches. -
git reflog:- Returns a local list of recent HEAD commits with SHA-1.
- Works locally only.
git checkout -b <newbranch> <SHA-1>: Creates a branch from reflogged dangling commit.
-
Merges a topic branch in a base branch.
-
Types of merge:
-
Fast Forward (FF):
-
Moves
basebranch label to tip oftopicbranch. -
Moves
basebranch label from its latest commit to latest commit oftopicbranch. -
Only
basebranch label moves. -
Possible only if no other commits were made to
basebranch since branching. -
Attempting a FF merge is default.
-
Steps to merge
topicbranch tobasebranch:git checkout basegit merge topic
-
-
Merge commit:
-
Combines commits at the tips of merged branches.
-
Places result in a new merge commit.
-
A merge commit always has multiple parents.
-
*Steps to merge
topicbranch tobasebranch:git checkout basegit merge topic- In case of merge commit,
Gitwill open default editor to edit the merge message.
-
Steps to create a Merge commit even if a FF commit is possible:
git checkout basegit merge --no-ff topic
-
-
Squash merge:
-
It is a type of option in
Interactive Rebase. -
Combines the
selected commitwitholder commitcreating a single commit. -
The work of both commits in included.
-
SEE REBASE & SQUASH MERGE.
-
Delete(vs Squash):
- No changes from this commit are applied.
diffis discarded.- Work of this commit is lost.
- Greater chance of merge conflict.
-
-
Rebase:
- SEE REBASE.
-