Super Simple git tool with git-lfs support: Git-It-GUI (good for games)

Made a Git GUI client designed to solve a real world problem of using Git with games and collaborating with artists / level designers. I am now using it along with others at work.

The tool supports Git-LFS, P4Merge, etc and is very easy to use.
Link: Releases · reignstudios/Git-It-GUI · GitHub

EDIT: Major update and huge improvements to just about everything in v0.9.0+





I haven’t tied it… did you really need to build it for .net 4.6.2?

_edit should be a put screenshot of what it looks like… can tell a lot by the gui design of a tool.

1 Like

No its doesn’t need to be .NET 4.6.2 but that .net version auto installs on every computer including Windows Vista. That .NET version also has path length and async fixes… so I thought it was a good idea.

I can’t downgrade the .NET version if people want to build it and are having issues. Just let me know.

Also there is a screen shot in the repo home: https://github.com/reignstudios/Git-It-GUI
I’ll post one here too.

1 Like

So what’s this got that something like SourceTree doesn’t? Is there any reason I should consider a switch?

Because this tool is way easier to use simply put. I made it specifically for people who find SourceTree or TortisieGit to complex.

Most tools that support Git-LFS have way to many advanced options littered everywhere in the UI, keep around merge conflict temp files and don’t ask the user before staging a conflicted file. For artists / level designers this is something you don’t want happening or they end up committing tons of temp files. The tool also can auto set up Git-LFS with most of the files you would need tracked for Unity.

It also has a “Simple” and “Advanced” mode for syncing changes with the server. Simple mode just gives the user a “Sync” button as it makes sense to many users in the familiar context of wanting to sync with an external server/device. Advanced gives you the normal “Pull” / “Push” buttons… which even then is pretty simple.

Another plus is I made the last repo opened list to function like Unity’s start screen.

In either case the project it totally open source. It’s another option and I have gotten very good feedback thus far from people I work with. I would try it if you’re using Git-LFS (or not) and working with others having issues with other git tools.

I’m a bit sad that you missed the opportunity to call your tool “git gud!”.

In my very limited experience with it, sourcetree was a pile of garbage. It had a bug that caused it to be ridiculously slow or even crash. It was the most unresponsive GUI I’ve ever used. I’ve now switched to using git without gui and when I want to make a commit I just double click this batch script:

git add --all
git commit --all --message="commited by batch script"
git push origin master

pause

Even with a GUI tool I never wrote meaningful commit messages, so I might as well just do it like this. And it’s sooooo much faster than sourcetree was.

2 Likes

git good, git lit, git rekt. . . .

i’m sorry. . . .

1 Like

haha I like the naming suggestions. The reason I had picked “Git-It” was to feel like “Get It” as in do you get how to use git now and or did you git/get that change yet? Also the name was unique from other projects out there relating to git.

And ya I tried source tree and ran into way to many issues that non technical people would have issues with. Thus I made my product to solve a real problem of there not being an open source, simple to use too that supported Git-LFS for game teams / general users.

You end up saving yourself a lot of trouble by using a GUI tool to review your changes before a commit. If you end up trying out my tool, please submit issues you find.

1 Like

"In my very limited experience with it, sourcetree was a pile of garbage. It had a bug that caused it to be ridiculously slow or even crash. "

yup had those same problems, and finally it just stopped working altogether garbage is an appropriate description.

I think this project looks pretty decent, I’ve found since using a gui client it’s been very useful for checking commit logs on specific files and rolling back stuff that just didn’t work out in changes made so looking at diff logs. Tbh that is where the gui git based tools can really shine, but also just in general ease of use in doing slightly more complicated git stuff, doing it via command line I dunno I can see tons of potential screwups being had.

Shame this wasn’t around last year when I tried a whole bunch of gui git based clients… The one I use now isn’t perfect because some parts of its design and preferences are less than great, but all in all I’ve come to like some of its more advanced stuff and ease of use, still its always good to see other alternatives come up, especially c# open sourced ones :slight_smile:

2 Likes

Are you aware of TortoiseGit? It’s also quite minimalist, doesn’t rely on copying a batch script, lets you choose what to add instead of adding all (which may be a bad idea), will detect when you’ve removed stuff (which yours won’t?), and will allow you to easily write commit messages (which you should :p).

2 Likes

Thanks for the recommendations. I’ve heard of tortoise, and another kind of gui that looked rather minimalist got installed with my git version. But all I really wanna get out of this, is maintaining an online backup with just doubleclicking a script every now and then. Your comment about my solution not removing stuff had me concerned, so I double checked. I moved 2 files outside of the tracked folders, ran “git status”, it complained about them missing, I ran my commit script and ran “git status” again, and it no longer complained.
This is from the help file that “git help add” opens:

Maybe you’ve been using an older version that behaves as you said?

Me using a gui only would end up in either not commiting enough things to have a fully working copy of the project, or commit everything anyway like I do it now. My commit messages eventually all degrade to things like “various changes” or “optimiztion etc.” or just “.”. Might as well just stop pretending :smile:.
I probably should mention that I never “just change code” in my project, I comment out the old line and add a modified copy of the old line when I make a change or try something out. Then I test if it worked. If it has been working for long enough (and most likely I’ve made a commit in between) I start deleting some of the commented out code. Unless my harddrive dies it is highly unlikely that I’ll ever need to roll back anything from the backup.
In other words I didn’t choose git because I wanted version control, I chose it because I wanted convenient and free online storage that doesn’t need to upload more than necessary when I changed something ^_^.

TortoiseGit is probably one of the better tools that supports LFS but it still leaves around junk files in your repo after a merge etc. Which I can’t stand personally and others get confused as to where those files come from. Like artists etc.

Did a good update with lots of merge conflict improvements/fixes, among other things…

https://github.com/reignstudios/Git-It-GUI/releases/

Oh, I wasn’t comparing it to your tool, I was suggesting it as an alternative to a batch file.

Nah, that question mark was genuine - I was asking because I didn’t know. It looks like it will do that part fine, so no issue there.

I’d also check to see whether it respects your .gitignore configuration, and whether you’ve got one in place, because there’s quite a bit of stuff in many projects that ideally shouldn’t be stored in your version control. If you’re just using it as incremental storage as you describe then it might not be an issue.

1 Like

Good point! This is how my .gitignore looks like. It is mostly copied and modified from one that I found somewhere around here.

# =============== #
# Unity generated #
# =============== #
[Tt]emp/
[Oo]bj/
[Bb]uild/
[Bb]uilds/
[Ll]ibrary/
sysinfo.txt
# ===================================== #
# Visual Studio / MonoDevelop generated #
# ===================================== #
[Ee]xported[Oo]bj/
/*.userprefs
/*.csproj
/*.pidb
/*.suo
/*.sln*
/*.user
/*.unityproj
/*.booproj
git-auto-commit-and-push.bat

If I would commit everyting in Library etc. too, then I’d run out of storage space on gitlab soon I think.

If you commiting the library you would also run into terrible merge conflicts all the time, and keep forcing people to wipe out there library all the time as well as causing issues on platform change.

Also you should name your commits, it’s pretty infuriating trying to find where a problem started and revert to it if the messages are all the same.

If you are just commiting all with no message you might as well just be uploading zip files to a server via a script. Since your getting no benefits out of git by doing this.

3 Likes

I don’t think this is the case, since metadata is local, it’s not in the Library folder, they are hidden files in the Assets folder?

Additionally, the platform change issues can largely be mitigated by setting up a cache server, which is very worthwhile anyway.

most people use visible meta files to make it easy to version, yes meta files should be committed since they contain stuff like the guid and settings for assets.
The library folder is what has per platform stuff, and is entirely generated from the assets and meta files, based on your build settings and thus can easily conflict with other users. So no point committing something that can be generated.

I use the cache server at work, which allows users to sync the library for those using the same settings. It makes switching platforms and branches much faster, since instead of regenerating the data, it downloads a copy made by someone with the same project setup.

I’m pretty sure that the Library is different if you are running a Mac vs PC. If you don’t include the Library in your repository, you can easily work on the same project on a Mac or PC.

Does anyone use Visual Studio for Git?

1 Like