This post is a quick aide-mémoire for basic command-line Git operations. Well worth reading is the Git Getting Started documentation.
Clone a remote repository for the first time
To get started crack open Git bash and go to your source folder. You can then clone a remote repository into a new folder simply by running the following command:
someuser@mymachine MINGW64 ~
$ cd c:
someuser@mymachine MINGW64 /c
$ cd Source/
someuser@mymachine MINGW64 /c/Source
$ git clone git@some:repo/Some.Project.git
Cloning into 'Some.Project'...
Enter passphrase for key '/c/Users/someuser/.ssh/id_rsa':
remote: Counting objects: 1402, done.
remote: Compressing objects: 100% (1311/1311), done.
emote: Total 1402 (delta 1018), reused 87 (delta 59)Receiving objects: 87% (1220/1402), 580.00 KiB | 1.08 MiB/s
Receiving objects: 100% (1402/1402), 1.15 MiB | 1.08 MiB/s, done.
Resolving deltas: 100% (1018/1018), done.
Checking connectivity... done.
someuser@mymachine MINGW64 /c/Source
$
See the Git - git-clone Documentation.
List branches
The following command lists all local and remote branches:
someuser@mymachine MINGW64 /c/Source/Some.Project (master)
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/feature/IntialLoggingIntegration
remotes/origin/master
See Git – git-branch Documentation.
To see remote branches only use the –r switch. For local only use the –l branch.
someuser@mymachine MINGW64 /c/Source/Some.Project (master)
$ git branch -r
origin/HEAD -> origin/master
origin/develop
origin/feature/IntialLoggingIntegration
origin/master
someuser@mymachine MINGW64 /c/Source/Some.Project (master)
$ git branch -l
* master
Getting more information about the remote repository
someuser@mymachine MINGW64 /c/Source/Some.Project (master)
$ git remote -v
origin git@some:repo/Some.Project.git (fetch)
origin git@some:repo/Some.Project.git (push)
someuser@mymachine MINGW64 /c/Source/Some.Project (master)
$ git remote show
origin
someuser@mymachine MINGW64 /c/Source/Some.Project (master)
$ git remote show origin
Enter passphrase for key '/c/Users/someuser/.ssh/id_rsa':
* remote origin
Fetch URL: git@some:repo/Some.Project.git
Push URL: git@some:repo/Some.Project.git
HEAD branch: master
Remote branches:
develop tracked
feature/IntialLoggingIntegration tracked
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
Checkout a remote branch
To switch to a new remote branch and check its status:
someuser@mymachine MINGW64 /c/Source/Some.Project (master)
$ git checkout develop
Branch develop set up to track remote branch develop from origin.
Switched to a new branch 'develop'
someuser@mymachine MINGW64 /c/Source/Some.Project (develop)
$ git status
On branch develop
Your branch is up-to-date with 'origin/develop'.
nothing to commit, working directory clean
Create a new branch
This example shows how to create a feature branch off develop:
someuser@mymachine MINGW64 /c/Source/Some.Project (develop)
$ git checkout -b feature/test develop
Switched to a new branch 'feature/test'
See the Git - git-checkout Documentation. Also see the Git Branching - Basic Branching and Merging.
Delete a branch
The following example shows how to delete a branch. Note you can’t be on the branch you’re deleting.
someuser@mymachine MINGW64 /c/Source/Some.Project (develop)
$ git branch -D feature/test
Deleted branch feature/test (was 2647fba).
See the Git - git-branch Documentation. Also see the Git Branching - Basic Branching and Merging.
Add all changes
Running ‘git status’ will show you all the changes. If you are happy and want to add them all run:
someuser@mymachine MINGW64 /c/Source/Some.Project (develop)
$ git add -A
Revert changes to a file
You can see which files have been modified locally using the “git status” command and then undo the changes with “git checkout”:
someuser@mymachine MINGW64 /c/Source/Some.Project (develop)
$ git status
On branch develop
Your branch is up-to-date with 'origin/develop'.
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
modified: src/Some.Project/App.config
modified: src/Some.Other.Project/config/App.config
no changes added to commit (use "git add" and/or "git commit -a")
someuser@mymachine MINGW64 /c/Source/Some.Project (develop)
$ git checkout -- src/Some.Project/App.config
Revert all changes
You can see which files have been modified locally using the “git status” command and then undo all the changes with “git reset”:
someuser@mymachine MINGW64 /c/Source/Some.Project (develop)
$ git status
On branch develop
Your branch is up-to-date with 'origin/develop'.
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
modified: src/Some.Project/App.config
modified: src/Some.Other.Project/config/App.config
no changes added to commit (use "git add" and/or "git commit -a")
someuser@mymachine MINGW64 /c/Source/Some.Project (develop)
$ git reset –hard
Merge the develop branch into a feature branch
If you are using Git Flow and you are working on a feature branch you might want to merge develop into your feature branch from time to time to minimise conficts once your feature is complete. The basic commands to use would be:
someuser@mymachine MINGW64 /c/Source/Some.Project (develop)
$ git checkout feature/test
Switched to branch 'feature/test'
Your branch is up-to-date with 'origin/feature/test'.
someuser@mymachine MINGW64 /c/Source/Some.Project (feature/test)
$ git merge develop
See the Git – git-merge Documentation.
Checking to see what might be committed (dry-run)
An easy one - how can you see what will be committed without actually doing so? Like this:
someuser@mymachine MINGW64 /c/Source/Some.Project (develop)
$ git commit --dry-run
See the Git – git-commit Documentation.
Delete a local branch
someuser@mymachine MINGW64 /c/Source/Some.Project (develop)
$ git branch -d SomeBranchName
Deleted branch SomeBranchName (was 76e05d9).
See the Git – git-branch Documentation.
Move changes to a new branch
If you’ve made changed to a branch but want to move them to a new branch and commit them there do the following (substituting ‘NewBranchNameHere’ with the desired branch name):
someuser@mymachine MINGW64 /c/Source/Some.Project (develop)
$ git checkout -b NewBranchNameHere
Then do git add and git commit as usual.