Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Combining mingw and git

Tags:

git

shell

mingw

I have installation of MinGW in D:\mingw. I have Git installation in C:\Program Files\git. I want to develop/compile using MinGW and use git for versioning.

I guess I have to use correct paths but some paths are hardcoded. Like msys mount script calls /bin/msysmnt.exe

So I have 2 options: 1. use git's shell (to be able to show me branch at prompt) 2. use mingw(msys)'s shell - to have correct paths

Whichever I choose I must make the other functionality work under it.

like image 820
NickSoft Avatar asked Apr 13 '11 11:04

NickSoft


People also ask

What is the use of Git in MinGW?

Git is a version management system that can run on a variety of operating systems including linux/unix operating systems. Mingw includes Git, since many developers use Mingw as a crossplatform development environment. Git can be run from a commandline or by using a GUI. You can get Git for windows and use tortoisegit if you prefer guis.

What is merging in Git?

Merging takes your branch changes and implements them into the main branch. Depending on the commit history, Git performs merges two ways: fast-forward and three-way merge. Let’s examine both of these based on the branches and commit history in the following diagram.

How do I merge feature1 into main branch in Git?

To bring the feature1 branch into the main branch, Git performs a three-way merge. Git takes a snapshot of three different commits to create a new one: git checkout to switch to the branch you want to merge into. This branch is typically the main branch.

Why do we need to merge temporary commits in Git?

While working in Git, developers often make temporary commits that may have not appropriate commit messages. Before merging those commits to the master, it is necessary to combine them into a single commit with clear and comprehensive commit message. It is essential to do for having a clear commit history.


3 Answers

Small update: Since the Git 2.x releases, Git for Windows is based off of MSYS2 and available in 32 and 64 bit binary form. It still is a fork, and not interchangeable with the real MSYS2.


One thing you must understand: msysgit (the git you are using) is a fork of msys with added git functionality. A lot of unix tools are included in the msys shell (for a full list, see the msysgit/bin folder).

It might be possible to add additional msys tools to the msysgit bin folder, but I would not risk my head on that.

In light of this, I think it would be optimal to just add your toolchain to the msysgit path (using the bash profile file or whatever in the msysgit tree) and just use that. If a particular utility is missing, add it from the MinGW-msys tree and hope it works OK.

Alternatively, just use msys-git from cmd.exe. Since recent versions, it works very well (including git show, editing commit messages etc...). To do that, add the /cmd directory to PATH, and you can use all the git commands you want. This is what I do, as msys is a drag, but a necessary evil for git to work on Windows.

UPDATE: detailed instructions to add a directory to PATH under any kind of MSYS:

export PATH=/d/MinGW/bin:$PATH

or hackishly find /etc/profile and change this section

if [ $MSYSTEM == MINGW32 ]; then
  export PATH=".:/usr/local/bin:/mingw/bin:/bin:$PATH"
else
  export PATH=".:/usr/local/bin:/bin:/mingw/bin:$PATH"
fi

to:

if [ $MSYSTEM == MINGW32 ]; then
  export PATH=".:/usr/local/bin:/d/MinGW/bin:/bin:$PATH"
else
  export PATH=".:/usr/local/bin:/bin:/mingw/bin:$PATH"
fi

There is no cleaner way because the msys-git people disabled the fstab functionality present in vanilla msys.

Update from Nick (what I did to make it work):

I created file in C:\Program Files\Git\etc called bash_profile. This is the contents of the file:

export PATH=$PATH:/d/mingw/bin:/d/mingw/msys/1.0/bin

make and gcc worked.

The bash_profile does not come with msysgit so you won't overwrite it if you update.

like image 122
rubenvb Avatar answered Oct 09 '22 20:10

rubenvb


I put Git on the MinGW shell by opening c:\MinGW\msys\1.0\etc\profile (not in Notepad, there are no carriage returns) and adding:

export PATH=$PATH:/c/Program\ Files\ \(x86\)/Git/bin

On an x86 system this would be:

export PATH=$PATH:/c/Program\ Files/Git/bin
like image 16
Jon Davis Avatar answered Oct 09 '22 18:10

Jon Davis


update:

now msys comes with git binary package.

http://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/

old answer:

If you are using latest mingw & portableGit, just drop git.exe(extract the file from portableGitXXX.7z) into C:\MinGW\msys\1.0\bin\

like image 6
plan9assembler Avatar answered Oct 09 '22 18:10

plan9assembler