7 ms·
Getting Started with Git Bash
- skywal_l 5y agoAs a die hard unix fan being forced to work on Windows, git bash is a godsend. Sure now you have WSL and countless other options but git bash is one click away and works surprisingly well.
- riedel 5y agoI really wonder what make git bash so much more popular than msys2 or cygwin. Ever since switching from Linux/FreeBSD cygwin has lessened the pain of windows a lot.
- leppr 5y agoIt's simple, portable, and you can just execute EXEs from it. Cygwin has a more complex setup and not great compatibility with windows executables, IIRC.
- riedel 5y agoCannot echo this at all. I use native binaries like pandoc or chocolatey from cygwin all the time. The only issue may be with stdout and file paths. There is still msys, if you want more windows. I think git bash mostly is only a packaged msys distribution, isn't it??
- michaelsbradley 5y ago> There is still msys MSYS2 is the better option, and is not "MSYS version 2", it's an independent rewrite. > git bash mostly is only a packaged msys distribution, isn't it? It's in parts based on MSYS2, but doesn't give you a "full install" (or whatever is the best way to phrase it).
- riedel 5y agoSorry for being sloppy I meant msys2.
- michaelsbradley 5y ago> Cygwin has a more complex setup and not great compatibility with windows executables, IIRC. And that's how/why MSYS2 is a nice alternative to Cygwin, especially its environments that use UCRT instead of MSVCRT when considering "compatibility" from the perspective of building and shipping software that doesn't require the user to first install a special environment/runtime. UCRT ships by default on Windows 10.
- riedel 5y agoTotally: if you want to redistribute stuff msys2 makes this much easier. I have both on my system. As a shell environment I like cygwin. With posix compatibility I can compile nearly everything (that does not use libuv). I do not get the narrative of complicated setup for this use case. Download installer and click next a few times: does not seem to be so difficult. The cygwin package installer IMHO is a bit easier to use than pacman.
- pletnes 5y agoOne example issue is that cygwin tries much harder to enforce a «linux / chmod» view of file permissions, which it tries to map onto the underlying windows/ ntfs permissions. This can cause issues like creating files that won’t (easily) be deleted and other yak-shaving-inducing problems.
- otachack 5y agoMy experience with Cygwin back in college (~2008) was that it was obtuse and hard to understand. Granted, I didn't have the knowledge of *nix CLI I have now. But looking back and comparing it to Git Bash experience of today, with a simple installer to run, Git Bash wins in convenience. It does suck in other areas though such as trying to start a Python interpreter session (I fallback to PowerShell for that) Cygwin has probably grown a lot better since but I don't see a reason to try it, personally.
- ChrisSD 5y agoWhat's the Python issue?
- lozenge 5y agoThere's no package manager so there's no way to install things and there's no Python included. You could run your Windows Python but the paths will be wrong (C:\ instead of /c/), etc.
- pletnes 5y agoGit bash will translate /c/ to C:\ so that’s only sometimes true. But it won’t translate //c/ or if you set a certain env var… etc. Having to recall all these rules is one reason I dislike working in git bash on windows.
- jliu70 5y agoThe workaround to running the python interpreter from git bash is to preface python with the command winpty like so `winpty python` Reference: http://willi.am/blog/2016/08/08/docker-for-windows-interactive-sessions-in-mintty-git-bash/ http://willi.am/blog/2016/08/08/docker-for-windows-interacti...
- otachack 5y agoI'll try it out! Thank you.
- gruez 5y ago>I really wonder what make git bash so much more popular than msys2 or cygwin Not sure about cygwin, but I thought git bash was based on msys2?
- pletnes 5y agoIf you google «git download» or «install git», that’s what you get. There’s also no package manager or 3rd party packages to worry about or learn how to use. That’s my gut feel, at least. Git bash is based on some ancient cygwin version. You can see that e.g. the «cygpath» utility is still there. MinGW/Msys forked from cygwin due to some techno-political disagreement that I can’t be bothered to learn more about.
- ur-whale 5y ago> I really wonder what make git bash so much more popular than msys2 or cygwin cygwin is so slow it's basically unusable for most tasks except the simplest ones. especially if you run anything with threads.
- jrm4 5y agoHa, I'm glad you got this. As someone who can use Linux all the time and does, "Windows" just seems sillier and sillier; especially with Proton et al.
- MithrilTuxedo 5y agoThe enterprise bank I work for needs a business justification to spend resources to figure out if there's a business justification for allowing the installation of WSL. I asked in 2019. Bouncing between my personal computers and my Windows work computer, what they've done to make git so slow... it makes me sad. On a brand new developer workstation, the git-prompt invocation in PS1 takes over a second to complete. Developers who never used git before don't like it and I understand why. It's like a scene from Harrison Bergeron, like Git Bash has heavy objects strapped to it to make it at least as slow as everything else.
- agurk 5y agoI was recently in a very similar situation to you and found that the $PATH of my git bash contained a network drive. Removing this for me made it still slow but useable. This also made any programs I was running in it - like vim - useable too.
- michaelsbradley 5y agoIt’s owing to the high number of syscalls not being a big drag on Linux, etc. while causing noticeable slowdowns on top of Windows’ architecture/filesystem... something like that. A Microsoft engineer did a good writeup on it several years ago, if I remember correctly. I’ll try to find a link.
- michaelsbradley 5y agoI think this is what I had in mind: https://github.com/Microsoft/WSL/issues/873#issuecomment-425272829 https://github.com/Microsoft/WSL/issues/873#issuecomment-425...
- 0xbadcafebee 5y agoCan anyone paste a list of all the commands available from Git Bash? (not the bash builtins, but all the added programs)
- deleted 5y ago[deleted]
- noselasd 5y agohttps://justpaste.it/7hnyq https://justpaste.it/7hnyq
- 0xbadcafebee 5y agoThank you!!! Wow, they have Perl! And curl, ssh/sshd, gpg, md5/sha/lzma/zip, nano/vim/antiword, openssl, strace, and Busybox. That's a decent little environment!
- michaelsbradley 5y agoGit Bash is a nice tool. I used it for some time, and still do in some circumstances. But when I wanted to have more and do more from the command-line re: a *nix-like dev experience on Windows for building native Windows software, I found my way to MSYS2[1]. Note that Git Bash is in parts based on MSYS2, but installing and using MSYS2 is not 1-1 with installing and using Git Bash: At first I didn't quite understand what I was working with, but MSYS2's website provides the needed info, I just had to take the time to read it. The History[2] page helped me understand better the relationships and differences between MSYS2, MSYS (not "2"), MinGW/-w64, and Cygwin. One of the more salient points being: MSYS2 is an independent rewrite of MSYS, based on modern Cygwin and MinGW-w64 with the aim of better interoperability with native Windows software ... MSYS2 is ideologically a successor to MSYS and MinGW. MSYS -- although definitely useful -- is really old and getting in the way of developers. MSYS2 was created to replace the original MSYS while avoiding its problems. Other pages provide complementary information on that same topic. Another thing I appreciated was the explanation of MSYS2's environments[3]. Being able to painlessly switch away from MSVCRT to UCRT was helpful in solving some UTF-8 difficulties I was experiencing. Package management with pacman[4] is rather pleasant, and the setup-msys2[5] GitHub Action makes it simple to provide your GHA workflow with the tools and libs you want. Whenever I've encountered a problem or had a question I couldn't answer via web search, the community on the MSYS2 Discord server[6] has always been quick and happy to help. [1] https://www.msys2.org/ https://www.msys2.org/ [2] https://www.msys2.org/wiki/History/ https://www.msys2.org/wiki/History/ [3] https://www.msys2.org/docs/environments/ https://www.msys2.org/docs/environments/ [4] https://www.msys2.org/docs/package-management/ https://www.msys2.org/docs/package-management/ [&] https://packages.msys2.org/queue https://packages.msys2.org/queue [5] https://github.com/msys2/setup-msys2 https://github.com/msys2/setup-msys2 [6] https://www.msys2.org/contact/ https://www.msys2.org/contact/
- synergy20 5y agogit bash is great. with WSL2 I can use git directly, so I uninstalled git-bash and all those msys/cygwin/mingw, things changed, embrace WSL2, move on.
- binarymax 5y agoNice intro. I had to go through this yesterday on a cloud instance and hadn’t used windows in awhile. Instead of using this install GUI I first installed chocolatey. Once that was ready from powershell it’s a quick ‘choco install git’. Getting visual studio build tools wasn’t as easy (was compiling rust/c++ so had it as a dependency). I managed to avoid Internet explorer entirely by ‘choco install Firefox’ and then managed to go through the painful web workflow VS community edition download. I really wonder how I managed on Windows for so long in my former career. It’s night and day vs Linux or Mac.
- michaelsbradley 5y agoWith MSYS2 installed on your Windows cloud instance, in a Bash shell for e.g. its UCRT64 environment, you could use pacman to get your dev setup in place: pacman -S base-devel git mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-rust Other build tools like cmake, etc. are also readily available via pacman. I've found this approach helps make developing on Windows a lot more like I want, i.e. more like my experiences on Linux and macOS. Whether the "-toolchain" package in the install-list above (gcc and friends) is suitable for your needs, I'm not sure, though note that the "-rust" package brings in llvm automatically, so your bases are probably covered unless you have a strict requirement to use Microsoft's toolchain.
- easton 5y agowinget is built into Windows 10 and 11 and works as well as chocolatey (in 90% of cases, still some apps missing). winget install -s winget git ; winget install -s winget firefox ; winget install -s winget vs2022-buildtools --interactive will get you what you listed. the "-s winget" option bypasses the Microsoft Store source, but you can permanently remove that with "winget source remove msstore". if you want to browse for more apps (and generate commands to install them) you can with https://winstall.app https://winstall.app.
- brnt 5y agoI co-maintain a piece of software and I would love to have a Windows binary. We have few dependencies, all well behaved and we dont use any OS APIs. It's a Cmake projectand I'm sure if I would get it to compile on Windows it would work fine. I gave it a shot twice, first by hand, second time through Github CI. I just don't get how any of this works on Windows.
- deleted 5y ago[deleted]
- jancsika 5y agohow does git bash versus msys2? E.g., with msys2 i can install sshd so that I can use a windows vm as a gitlab runner. I can also use pacman to install build deps. Can i with git bash?
- rashil2000 5y agoNo, Git Bash is a custom, stripped-down version of MSYS2 (with MinGW Git and its dependencies installed). It does not include pacman. If you want to use pacman you can either use Git Windows SDK, or just plain MSYS2.
- getcrunk 5y agoThis article is from Jan 2022, I don't understand why the author didn't mention wsl. Even just to point out if it's lacking compared to gitbash. Can anyone chime in?