RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
Git
...
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. This page familiarizes some of the useful git commands while dealing with RDK code base.
To switch to another branch in your local work environment.
$ git checkout BRANCH_NAME |
Synopsis:
Code Block |
---|
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 is specified.HEAD
. This is used to throw away local changes.<new_branch>
and and start it at at <start_point>
<new_branch>
and and start it at at <start_point>
; if it already exists, then reset it to to <start_point>
. This is equivalent to running "git branch" with "-f".branch.autoSetupMerge
configuration configuration variable is true.Examplechecks out the master
branch.
$ 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:
Code Block |
---|
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]
Examples:
Adds content from all *.txt
files under Documentation
directory and its subdirectories.
Example
$ git add Documentation/\*.txt file1.c file2.c |
Adds the file1.c and file2.c available in the current folder directory.
commit
Consists of a snapshot of the directory structure and file contents for the entire project. Record changes to the repository.
$ git commit |
Synopsis Synopsis:
Code Block |
---|
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
. To view a list of existing branches
Example
$ git branch |
Creates a new topic branch
...
$ git branch [branch]
Merges [branch]
into current branch.
...
$ git merge [branch]
Shows diff of the unstaged changes.
...
$ git diff
...
vim file1.c // edit the file1.c |
log
Shows the history of the current branch.
...
$ git log
Shows the commits that aren't pushed.
...
a |
The command git commit -a first looks at the working tree, notices that file1.c modified and removed file2.c, performs necessary git add and git rm.
No Format |
---|
$ git push |
Synopsis
Code Block |
---|
git push [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>] [--repo=<repository>] [-f | --force] [-d | --delete] [--prune] [-v | --verbose]
[-u | --set-upstream] [-o <string> | --push-option=<string>] [--[no-]signed|--signed=(true|false|if-asked)] [--force-with-lease[=<refname>[:<expect>]] [--no-verify] [<repository> [<refspec>…]] |
Example
$ git push origin HEAD:refs/for/master |
This will push the changes to master branch available in the remote location
$ git branch |
Creates a new topic branch
$ git branch [branch] |
Synopsis
Code Block |
---|
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 development |
creating a new git branch called “development”
$ git branch -d development |
Deleted development branch.
Show changes between commits, commit and working tree, etc
$ git diff |
Synopsis
Code Block |
---|
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 - Changes in the working tree not yet staged for the next commit. $ git diff --cached - Changes between the index and the last commit; what would be committing on running "git commit" without "-a" option. $ git diff HEAD - Changes in the working tree since last commit; what would be committing on running "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
Code Block |
---|
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 :Options
git show REBASE_HEAD
.Example
|
To squash a series of commits into a single commit.
Stash command saves the 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
Code Block |
---|
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 :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 file1.c not up-to-date, cannot merge.
$ git stash
$ git pull
$ git stash pop |