RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals.
To switch to another branch in your local work environment.
$ git checkout BRANCH_NAME |
Synopsis
git checkout [-q] [-f] [-m] [<branch>]
git checkout [-q] [-f] [-m] --detach [<branch>]
git checkout [-q] [-f] [-m] [--detach] <commit>
git checkout [-q] [-f] [-m] [[-b|-B|--orphan] <new_branch>] [<start_point>]
git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <pathspec>…
git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] --pathspec-from-file=<file> [--pathspec-file-nul]
git checkout (-p|--patch) [<tree-ish>] [--] [<pathspec>…]
Options
--quiet
is specified.HEAD
. This is used to throw away local changes.<new_branch>
and start it at <start_point>
<new_branch>
and start it at <start_point>
; if it already exists, then reset it to <start_point>
. This is equivalent to running "git branch" with "-f".branch.autoSetupMerge
configuration variable is true.Example
$ git checkout rdk-next |
checks out the rdk-next branch.
add
To stage changes[file modifications and deletions].Accepts arguments for files or directories within the project directory.
$ git add |
Synopsis
git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p] [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]] [--intent-to-add | -N] [--refresh]
[--ignore-errors] [--ignore-missing] [–renormalize] [--chmod=(+|-)x] [--pathspec-from-file=<file> [--pathspec-file-nul]] [--] [<pathspec>…]
Options
$ git add [options]
Example
$ git add Documentation/\*.txt |
Adds content from all *.txt
files under Documentation
directory and its subdirectories.
commit
Consists of a snapshot of the directory structure and file contents for the entire project.Record changes to the repository.
$ git commit |
Synopsis
git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [–amend]
[--dry-run] [(-c | -C | --fixup | --squash) <commit>]
[-F <file> | -m <msg>] [--reset-author] [--allow-empty]
[--allow-empty-message] [--no-verify] [-e] [–author=]
[--date=<date>] [--cleanup=<mode>] [--[no-]status]
[-i | -o] [--pathspec-from-file=<file> [--pathspec-file-nul]]
[-S[<keyid>]] [--] [<pathspec>…]
Options
-c
the editor is invoked, so that the user can further edit the commit message.rebase --autosquash
. Example
$ edit hello.c |
The command git commit -a
first looks at your working tree, notices that you have modified hello.c and removed goodbye.c, and performs necessary git add
and git rm
for you.
To view a list of existing branches
$ git branch |
Creates a new topic branch
$ git branch [branch] |
Synopsis
git branch [--color[=<when>] | --no-color] [--show-current] [-v [--abbrev=<length> | --no-abbrev]] [--column[=<options>] | --no-column] [--sort=<key>] [(--merged | --no-merged) [<commit>]] [--contains [<commit]] [--no-contains [<commit>]] [--points-at <object>] [--format=<format>] [(-r | --remotes) | (-a | --all)] [--list] [<pattern>…] git branch [--track | --no-track] [-f] <branchname> [<start-point>] git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>] git branch --unset-upstream [<branchname>] git branch (-m | -M) [<oldbranch>] <newbranch> git branch (-c | -C) [<oldbranch>] <newbranch> git branch (-d | -D) [-r] <branchname>… git branch --edit-description [<branchname>]
Options
--delete --force
.-f
, git branch refuses to change an existing branch.<pattern>...
, e.g. git branch --list 'maint-*'
, list only the branches that match the pattern(s).--list
to match optional pattern(s).Example
$ git branch dev |
creating a new git branch called “dev”
$ git branch -d dev |
Deleted branch dev
merge
Merges [branch]
into current branch.
$ git merge [branch] |
Synopsis
git merge [-n] [--stat] [--no-commit] [--squash] [--[no-]edit] [--no-verify] [-s <strategy>] [-X <strategy-option>] [-S[<keyid>]] [--[no-]allow-unrelated-histories] [--[no-]rerere-autoupdate] [-m <msg>] [-F <file>] [<commit>…] git merge (--continue | --abort | --quit)
Options
--no-overwrite-ignore
to abort.Example
$ git merge fixes enhancements |
Merge branches fixes
and enhancements
on top of the current branch, making an octopus merge.
Show changes between commits, commit and working tree, etc
$ git diff |
Synopsis
git diff [<options>] [<commit>] [--] [<path>…]
git diff [<options>] --cached [<commit>] [--] [<path>…]
git diff [<options>] <commit> <commit> [--] [<path>…]
git diff [<options>] <blob> <blob>
git diff [<options>] --no-index [--] <path> <path>
Options
--patch
. Implies -p
.Example
$ git diff (1)
$ git diff --cached (2)
$ git diff HEAD (3) |
Changes in the working tree not yet staged for the next commit.
Changes between the index and your last commit; what you would be committing if you run "git commit" without "-a" option.
Changes in the working tree since your last commit; what you would be committing if you run "git commit -a"
log
Show commit logs.Shows the history of the current branch.
$ git log |
Shows the commits that aren't pushed.
$ git log m/[codeline].. |
Synopsis
$ git log [<options>] [<revision range>] [[--] <path>…] |
Options
Example
$ |
Show the whole commit history, but skip any merges
Reapply commits on top of another base tip.
$ git rebase [options] |
Synopsis
$ git rebase [-i | --interactive] [<options>] [--exec <cmd>]
[--onto <newbase> | --keep-base] [<upstream> [<branch>]]
git rebase [-i | --interactive] [<options>] [--exec <cmd>] [--onto <newbase>]
--root [<branch>]
git rebase (--continue | --skip | --abort | --quit | --edit-todo | --show-current-patch)
Options :
git show REBASE_HEAD
.Example
|
To squash a series of commits into a single commit.
Stash the changes in a dirty working directory away.when you want to record the current state of the working directory and the index, but want to go back to a clean working directory. The command saves your local modifications away and reverts the working directory to match the HEAD
commit.
Synopsis
$ git stash list [<options>]
git stash show [<options>] [<stash>]
git stash drop [-q|--quiet] [<stash>]
git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]
git stash branch <branchname> [<stash>]
git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
[-u|--include-untracked] [-a|--all] [-m|--message <message>]
[--] [<pathspec>…]]
git stash clear
git stash create [<message>]
git stash store [-m|--message <message>] [-q|--quiet] <commit>
Options :
stash@{0}
is the latest entry,stash@{1}
is the one before, etc.),<stash>
is given, it removes the latest one. i.e.stash@{0}
, otherwise<stash>
must be a valid stash log reference of the formstash@{<revision>}
.<branchname>
starting from the commit at which the<stash>
was originally created, applies the changes recorded in<stash>
to the new working tree and index. If that succeeds, and<stash>
is a reference of the formstash@{<revision>}
, it then drops the<stash>
. When no<stash>
is given, applies the latest one.Example
$ git pull
...
file foobar not up to date, cannot merge.
$ git stash
$ git pull
$ git stash pop |
there are cases in which your local changes do conflict with the upstream changes, and git pull
refuses to overwrite your changes. In such a case, you can stash your changes away, perform a pull, and then unstash, like above.