Replace Git-bash with Powershell

Kai Kratz

Witch Doctor
Contributor
Architecture
Logistics
Hi Guys,

since i hate git-bash with a passion id like to share with you how to replace this piece of crap software with windows powershell.

Step by step guide: (Basics)
To use git from the powershell all git commands need to be accessible. Therefore we need to modify our path variable.
1. right click on "Computer" -> select properties -> select Advanced System Settings -> select Enviroment Variables
2. Select the variable named path and click edit.
3. Append to the string in the 'Variable value' field the path to your git installations bin and cmd folder.
Example:
Code:
;C:\Program Files (x86)\Git\cmd;C:\Program Files (x86)\Git\bin
different paths are separated by a ';'

Now verify that this is working by opening the powershell ( type "windows powerShell" into the run field of your start menu)
Please note: The powershell (like all windows programs) only loads the environment variables on startup. If you had the powershell opened before changing the path variable you need to close and reopen the powershell.
Just type
Code:
git
the output should look something like this:
Code:
C:\Users\kakratz\thesis_tools-bin\segmentation_to_image_renderer\Debug> git
usage: git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           [-c name=value] [--help]
           <command> [<args>]

The most commonly used git commands are:
   add        Add file contents to the index
   bisect     Find by binary search the change that introduced a bug
   branch     List, create, or delete branches
   checkout   Checkout a branch or paths to the working tree
   clone      Clone a repository into a new directory
   commit     Record changes to the repository
   diff       Show changes between commits, commit and working tree, etc
   fetch      Download objects and refs from another repository
   grep       Print lines matching a pattern
   init       Create an empty git repository or reinitialize an existing one
   log        Show commit logs
   merge      Join two or more development histories together
   mv         Move or rename a file, a directory, or a symlink
   pull       Fetch from and merge with another repository or a local branch
   push       Update remote refs along with associated objects
   rebase     Forward-port local commits to the updated upstream head
   reset      Reset current HEAD to the specified state
   rm         Remove files from the working tree and from the index
   show       Show various types of objects
   status     Show the working tree status
   tag        Create, list, delete or verify a tag object signed with GPG

See 'git help <command>' for more information on a specific command.
HOORAY! you now can use git form the powershell!
But wait! You are missing the coloring and info about git from git-bash?
Don't worry the answer is here(POSH-GIT):
1. Go to some folder where you keep external projects. (I have a folder called externals for this)
2. Type
Code:
git clone git://github.com/dahlbyk/posh-git.git
This will download a powershell script named posh-git to help coloring the output of your console if your in a path containing a git repository
3. Restart your powershell with admin privileges (use shift-enter when starting the powershell from startmenu->run)
4. Type
Code:
Set-ExecutionPolicy RemoteSigned -Confirm
This allows to execute powershells scripts
5. Navigate to the posh-git folder and type
Code:
.\install.ps1
6. You might want to restart your powershell now.

Enjoy pretty colors and working synthax completion

:D
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Fancy! So fancy, in fact, that I dare say it deserves its own section on http://wiki.movingblocks.net/Main/FancyGit :D

Personally I try to avoid the command line a little, doing most the usual stuff via IntelliJ. Some of the remote setup and branching I do real quick via plain old boring command line :)

On IRC you also mentioned a -i flag for SSH, I wonder if that might help fix SSH/Git for Metouto since his doesn't work for the Windows shell at all, only Git Bash. Feels like they're somehow finding different keysets.
 

Kai Kratz

Witch Doctor
Contributor
Architecture
Logistics
Cervator said:
Fancy! So fancy, in fact, that I dare say it deserves its own section on http://wiki.movingblocks.net/Main/FancyGit :D

Personally I try to avoid the command line a little, doing most the usual stuff via IntelliJ. Some of the remote setup and branching I do real quick via plain old boring command line :)

On IRC you also mentioned a -i flag for SSH, I wonder if that might help fix SSH/Git for Metouto since his doesn't work for the Windows shell at all, only Git Bash. Feels like they're somehow finding different keysets.
ssh is part of the git distribution but to find it you need to add the git/bin folder to your path
if git cant find the key you can specify the key with -i
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Wikified! http://wiki.movingblocks.net/bin/view/M ... rshell_Git

And yeah, the extra Git features on the command line are kinda snazzy. Pity I can't stand Powershell :laugh:

Edit: Come to think of it, I probably should try harder to actually learn Powershell since we may end up using it occasionally at work. Kai - is there anything unusually spiffy about it other than being able to see the active branch in the prompt itself? One thing that absolutely defeats me on normal Git command line is the VI-like text editor.. which might be the only thing less user friendly than the DF text interface... :)
 

Kai Kratz

Witch Doctor
Contributor
Architecture
Logistics
you can replace all calls to the VI trough calls to you editor of choice. You need to modify your .gitconfig to do so. Don't have the commands at hand right now but Google will help you. I for example use P4merge as diff and merge tool.

-Kai
 
Top