Github desktop is the only way I know how to clone my private repo. I do not understand how to clone my private repos through CLI.
Programming
All things programming and coding related. Subcommunity of Technology.
This community's icon was made by Aaron Schneider, under the CC-BY-NC-SA 4.0 license.
Github desktop will get you into trouble if you ever try to work with a team. Fine for solo development
I use Github Desktop but am looking to start moving toward CLI soon for this reason; though to be honest, I only know it's not good practice and don't know the reason why. What kind of issues can happen in a team environment using it?
The CLI and probably other more advanced guis are going to give you the option to:
- bisect: very useful for debugging. Like definitely check it out.
- rebase: excellent for clean commits. I use it all the time to squash commits together
- diff arbitrary branches and commits. Super useful for debugging.
- cherry pick: useful to apply a commit from a different branch or remote
- Apply: I use it to pass around patches for things for testing / debugging.
That's just off the top of my head and also stuff that you can learn on the job. Good to know it exists though. I still use a "gui" (fugitive for vim) for simple tasks, like staging files 🙂
For me, I don't think I could survive without git stash, I use it daily for various reasons (e.g. for validating a small bug fix, git stash & git stash pop lets me attempt to reproduce the issue both with and without a correction). The one downside with the CLI stash command is that it's very easy to forget things in stash though, but I don't think GUIs generally support stashing?
Another one I find myself doing quite often is git checkout BRANCH -- PATH, to pull specific versions of files between branches.
Thanks for this, absolutely helpful information.
I generally don't trust most git GUIs - a number of our developers have used SourceTree on OS X before and it's led to nothing but issues. The only one I trust is the one built into IntelliJ IDEA, otherwise I'll use commandline.
I use GitKraken. It has a beautiful interface. It's free to use non-commercially but I pay $50/yr so that it can connect to my companies Enterprise account. I know I'm weak with git (I get the concepts but I'm a visual person) so the money is worth it to me.
It's not free to work with certain things like private GitHub repositories unfortunately.
Developing in a Windows environment, I generally prefer Git Extensions.
It doesn't distract the eye with unneeded fancy and is very close to a command line git experience but still allows me a better visual sense of the repository and branches.
Since I use Emacs I've been really happy with Magit, even tho it's UI has a bit of a learning curve to it. I've been also trying out Gitg since I moved back to GNOME and it's been really solid as well. It lacks a couple really nieche features but otherwise as a fast commit tracking/writing tool it's very good.
I use sublime merge because I really like ST and want to further support the dev. I wish it had more integrations with github (and theoretically github alternatives), but I understand the reasoning not to. Before SM came out I just used the command line exclusively.
I never use Sublime Text, but I love Sublime Merge. I dunno why. Something about the UI just works for my brain, and the merge UI is amazing. I only ever open it with smerge .
in a directory, and it's set to floating in my window manager so it pops up, I do my thing, and it goes away.
Mostly using CLI but occasionally I use https://www.sourcetreeapp.com for graphical branching and stuff.
I am pretty hooked to SmartGit. I absolutely love their branch and commit view and haven't found another tool that visualizes the tree quite as good (for my taste; I assume it has to do with familiarization over time).
I did however buy a lifetime license when they still offered them. Their current pricing model would have probably turned me off before I even got hooked. It is absolutely worth a look though.
My office blocks git through the CLI/VS Code Tools but somehow GitHub desktop works. No idea why.
If I need a visualisation, then gitk
is there for me.
If you can't remember commands, then get yourself a cheat-sheet.
Not really but sometimes if I need a visualization of something complicated that I can't see in my head I'll go to the network tab under insights in github
I mostly use CLI but sometimes SourceTree, it's neat
Since I work in Linux and primarily code in languages like C and C++ (i.e. compiled langs), I work completely in the terminal, so I don't use any GUI. It's nice and I'm already there for my compiling so I might as well use it for git.
However, re remembering all the commands, there is a nifty website I found a while ago and bookmarked called Git Explorer where you basically choose from dropdowns of what you want to do and it gives you the command(s) for it.
While I do most actions with the git
command or the git fugitive plugin from tpope, I will sometimes whip out lazygit
for certain things I don’t do that often.
I raise that by a "I wouldn't know how to survive half a day without lazygit". From my experience only maggit is in the same level - I just don't use emacs.
Sourcetree
Would it work for you if you created git aliases for commands you can't remember?
Tower on Mac is excellent, tig in terminal is also very powerful once you read the help/man pages!
I have some git blame extention in VSCode, but otherwise no. Something about using gui tool for git makes me feel so disconnected from it, like I'm not entirely sure what's going on, and afraid I'm going to fuck something up
Also, I forget commands all the time. Mostly ones I don't use often, like changing/adding/removing remotes, changing settings, etc.
I use TortoiseGit.
The log window gives me overview and almost every action I need. Switching, rebasing, creating and deleting branches and tags, pushing, fetching, merging, view logs of files, diffing, blaming, filtering…
The log view is still much better than the VS Git log view. And due to it's visual GUI it's much better than CLI when going beyond just one branch or a low number of my own branches.
I've used https://www.sublimemerge.com and https://www.sourcetreeapp.com but I think i prefer to just use my terminal most of the time...
JetBrains have some quite extensive VC tooling built into their IDEs which I use almost exclusively. I used to do everything in the terminal, but I find it so much quicker and simpler to do it directly in the IDE.
I kinda do both? For some reason, I prefer the CLI when I clone a repo, but Sourcetree for committing, pulling, and pushing, and my IDE's built in git tools for merges.