Combining mingw and git

匿名 (未验证) 提交于 2019-12-03 01:29:01

问题:

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.

回答1:

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.



回答2:

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 


回答3:

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\



回答4:

Use msys2. Its msys with a decent package manager (pacman) and build system (makepkg), ported from arch linux. I've got one shell with all my devtools and git and such al



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!