swcarpentry / git-novice

Version Control with Git
http://swcarpentry.github.io/git-novice/
Other
334 stars 914 forks source link

Teaching Github (and git) via Github Desktop and other GUI tools #340

Closed cmacdonell closed 1 month ago

cmacdonell commented 7 years ago

Initial email from Matthew Gidden:

Hi everyone,

I searched the list history and didn't see a similar topic already posted, so apologies if this is a rehash of a previous conversation.

I'm going to be teaching a version of the git novice lessons next week to an audience that does not feel comfortable on the command line. My goal will be to use Github Desktop [1] which provides a (reasonably nice) GUI on top of common interactions with local and remote repositories. I expect to walk through the GUI interactions in approximately the same order as the lessons while having some conceptual slides as I go along.

I have a few questions for the list: Has someone else taught a similar course? Perhaps we can connect off list for quick ideas/lessons learned (I will be new to teaching with a GUI..). Is there interest in developing some sidecar lessons to git-novice that use the github GUI? Philosophically, is teaching git without the CLI antithetical to SWC's core mission (i.e., is it doing more harm by obfuscating the mechanics of the underlying tool)? I'd enjoy any input/suggestions you all may have.

Cheers, Matt Gidden

noamross commented 7 years ago

Here is a nice rundown of git GUI client options and why to use them by Jenny Bryan: http://happygitwithr.com/git-client.html . This was from a short workshop that focussed on using git and github with R, from both the command line and the RStudio GUI - the rest of material may be useful as well.

njamescouk commented 7 years ago

FWIW I find sourcetree usable, but like Github desktop it won't run on linux. GitKraken leaves me completely mystified; it seems to require in depth knowledge of git, which I don't have and don't particularly want.

gidden commented 7 years ago

Hey @njamescouk, I'm curious if you could flesh out your comments on GitKraken a bit more? Specifically, what are the mystifying aspects of it? I'm thinking about using it for a lesson, but I learned on the command line so perhaps it seemed more straightforward to me. Right now I'm debating between kraken and source tree and would love to hear other's opinions of their relative pros/cons.

njamescouk commented 7 years ago

Hi,

The short story is that I don't understand git other than as a way of saving snapshots of part of a local file system. I can do this with sourcetree, but not with gitkraken. I interact with github either via downloading or the command line.

More (irrelevant) detail follows:

My set up is idiosyncratic. My main machine is air gapped windows so I mostly use git locally in a straight line, ie no branches or fancy footwork. I don't understand git and quite frankly would rather not know anything about it. In my brief professional career I used sourcesafe, which is buggy but I had an adequate mental model of it. I used mercurial for a while on my machine but abandoned it when it chewed some files up.

So on my machine I use sourcetree as described above. I don't do staging, I just commit everything when I start getting anxious about the state of the program I'm working on. It does diffs and logs which are useful sometimes, it updates automatically which is nice and I understand what is happening. On the very rare occasions I need to branch I just copy everything into another directory in order not to get wrapped up in some hideous fight with git.

I bought a laptop and put kubuntu on it for swc purposes and I've fooled about with gitk git cola and gitkraken. My experience with mainstream git is minimal. I managed to do the pull request thing for instructor training via the command line and I'm in the throes of trying to update the diagram I did. I can't actually remember how I did the git thing so will go to the swc git lesson again.

Currently I can't even get Gitkraken to see any repos, local or remote. When it was seeing them I couldn't seem to update my local copy; the gui doesn't seem to hide or abstract git into something sensible, you have to be aware of the minutiae of every last concept and command. Eventually I'll find a modus vivendi, but at age 60 I find I'm less enamoured with cool new technology and increasingly impatient with things I don't understand.

let me know if you want more detail,

best wishes

NickJ

On 07/09/16 08:53, Matthew Gidden wrote:

Hey @njamescouk https://github.com/njamescouk, I'm curious if you could flesh out your comments on GitKraken a bit more? Specifically, what are the mystifying aspects of it? I'm thinking about using it for a lesson, but I learned on the command line so perhaps it seemed more straightforward to me. Right now I'm debating between kraken and source tree and would love to hear other's opinions of their relative pros/cons.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/swcarpentry/git-novice/issues/340#issuecomment-245203584, or mute the thread https://github.com/notifications/unsubscribe-auth/AKDLezbyfNVkG4M47fEWKjFuejbWSCKdks5qnm1ugaJpZM4J2JMV.

gidden commented 7 years ago

Thanks for your in depth reply, Nick. Much appreciated!

On Wed, Sep 7, 2016 at 11:57 PM, nick james notifications@github.com wrote:

Hi,

The short story is that I don't understand git other than as a way of saving snapshots of part of a local file system. I can do this with sourcetree, but not with gitkraken. I interact with github either via downloading or the command line.

More (irrelevant) detail follows:

My set up is idiosyncratic. My main machine is air gapped windows so I mostly use git locally in a straight line, ie no branches or fancy footwork. I don't understand git and quite frankly would rather not know anything about it. In my brief professional career I used sourcesafe, which is buggy but I had an adequate mental model of it. I used mercurial for a while on my machine but abandoned it when it chewed some files up.

So on my machine I use sourcetree as described above. I don't do staging, I just commit everything when I start getting anxious about the state of the program I'm working on. It does diffs and logs which are useful sometimes, it updates automatically which is nice and I understand what is happening. On the very rare occasions I need to branch I just copy everything into another directory in order not to get wrapped up in some hideous fight with git.

I bought a laptop and put kubuntu on it for swc purposes and I've fooled about with gitk git cola and gitkraken. My experience with mainstream git is minimal. I managed to do the pull request thing for instructor training via the command line and I'm in the throes of trying to update the diagram I did. I can't actually remember how I did the git thing so will go to the swc git lesson again.

Currently I can't even get Gitkraken to see any repos, local or remote. When it was seeing them I couldn't seem to update my local copy; the gui doesn't seem to hide or abstract git into something sensible, you have to be aware of the minutiae of every last concept and command. Eventually I'll find a modus vivendi, but at age 60 I find I'm less enamoured with cool new technology and increasingly impatient with things I don't understand.

let me know if you want more detail,

best wishes

NickJ

On 07/09/16 08:53, Matthew Gidden wrote:

Hey @njamescouk https://github.com/njamescouk, I'm curious if you could flesh out your comments on GitKraken a bit more? Specifically, what are the mystifying aspects of it? I'm thinking about using it for a lesson, but I learned on the command line so perhaps it seemed more straightforward to me. Right now I'm debating between kraken and source tree and would love to hear other's opinions of their relative pros/cons.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/swcarpentry/git-novice/issues/ 340#issuecomment-245203584, or mute the thread https://github.com/notifications/unsubscribe-auth/ AKDLezbyfNVkG4M47fEWKjFuejbWSCKdks5qnm1ugaJpZM4J2JMV.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/swcarpentry/git-novice/issues/340#issuecomment-245432447, or mute the thread https://github.com/notifications/unsubscribe-auth/ABVAEQK35ycSSb23UQD20HCXhUpUdoltks5qnzNCgaJpZM4J2JMV .

njamescouk commented 7 years ago

via hacker news: http://ohshitgit.com/


On Thu, 9/8/16, Matthew Gidden notifications@github.com wrote:

Subject: Re: [swcarpentry/git-novice] Teaching Github (and git) via Github Desktop and other GUI tools (#340) To: "swcarpentry/git-novice" git-novice@noreply.github.com Cc: "nick james" nick.james150@yahoo.com, "Mention" mention@noreply.github.com Date: Thursday, September 8, 2016, 12:57 AM

Thanks for your in depth reply, Nick. Much appreciated!

On Wed, Sep 7, 2016 at 11:57 PM, nick james notifications@github.com wrote:

Hi,

The short story is that I don't understand git other than as a way of saving snapshots of part of a local file system. I can do this with sourcetree, but not with gitkraken. I interact with github either via downloading or the command line.

More (irrelevant) detail follows:

My set up is idiosyncratic. My main machine is air gapped windows so I mostly use git locally in a straight line, ie no branches or fancy footwork. I don't understand git and quite frankly would rather not know anything about it. In my brief professional career I used sourcesafe, which is buggy but I had an adequate mental model of it. I used mercurial for a while on my machine but abandoned it when it chewed some files up.

So on my machine I use sourcetree as described above. I don't do staging, I just commit everything when I start getting anxious about the state of the program I'm working on. It does diffs and logs which are useful sometimes, it updates automatically which is nice and I understand what is happening. On the very rare occasions I need to branch I just copy everything into another directory in order not to get wrapped up in some hideous fight with git.

I bought a laptop and put kubuntu on it for swc purposes and I've fooled about with gitk git cola and gitkraken. My experience with mainstream git is minimal. I managed to do the pull request thing for instructor training via the command line and I'm in the throes of trying to update the diagram I did. I can't actually remember how I did the git thing so will go to the swc git lesson again.

Currently I can't even get Gitkraken to see any repos, local or remote. When it was seeing them I couldn't seem to update my local copy; the gui doesn't seem to hide or abstract git into something sensible, you have to be aware of the minutiae of every last concept and command. Eventually I'll find a modus vivendi, but at age 60 I find I'm less enamoured with cool new technology and increasingly impatient with things I don't understand.

let me know if you want more detail,

best wishes

NickJ

On 07/09/16 08:53, Matthew Gidden wrote:

Hey @njamescouk https://github.com/njamescouk, I'm curious if you could flesh out your comments on GitKraken a bit more? Specifically, what are the mystifying aspects of it? I'm thinking about using it for a lesson, but I learned on the command line so perhaps it seemed more straightforward to me. Right now I'm debating between kraken and source tree and would love to hear other's opinions of their relative pros/cons.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/swcarpentry/git-novice/issues/ 340#issuecomment-245203584, or mute the thread <https://github.com/notifications/unsubscribe-auth/

AKDLezbyfNVkG4M47fEWKjFuejbWSCKdks5qnm1ugaJpZM4J2JMV>.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/swcarpentry/git-novice/issues/340#issuecomment-245432447, or mute the thread https://github.com/notifications/unsubscribe-auth/ABVAEQK35ycSSb23UQD20HCXhUpUdoltks5qnzNCgaJpZM4J2JMV .

-- You are receiving this because you were mentioned. Reply to this email directly or view it on GitHub: https://github.com/swcarpentry/git-novice/issues/340#issuecomment-245522142

atz commented 7 years ago

I like many of the git clients and have used them in the past, but when they fail, the only way out is on the command line. For that reason, for developers I find that basic instruction on the command-line (up through merge conflict resolution) would be inescapable. Visualization tools can be added on top, of course.

If a lesson were targeting managers whose role was more to review and approve changes than to author them, I could imagine a more GUI-centered course.

naught101 commented 6 years ago

Also, there are many providers of remote git repositories other than github. I don't think it would be a good idea to tailor a workshop too closely to one platform. Particularly because some organisations may require users to use a particular provider (including something in-house, like gitlab).

For this reason, I don't think it would be useful to teach using the Github Desktop client. I also think other GUIs often get in the way, although they can be useful for particular things (like nice history graphs).

However, the idea of pull requests is fairly prevalent across providers, and github's implementation of that is fairly clean, so it would definitely be useful for teach that specific part of github, acknowledging that github's implementation is just a specific example of a more general concept.

katrinleinweber commented 6 years ago

[...] use a particular provider (including something in-house, like gitlab).

In that specific case, one could also teach the lesson in GitLab's Web IDE. Any thoughts on that? cc @libcce @weaverbel Maybe an idea for @LibraryCarpentry?

And just for completeness sake here: CalTech Library's GitHub Desktop lesson.

libcce commented 6 years ago

@katrinleinweber I like these ideas and want to test them, particularly GitLab's Web IDE.

njamescouk commented 6 years ago

random comment: I saw merge conflicts mentioned above, imo kdiff3 (http://kdiff3.sourceforge.net/) is quite a good gui for that, although in extremis I'd take a copy of the most complex new version and copy pasta the other version into it using an editor.

peterjc commented 4 years ago

Is there any effort to have a version of the lessons using GitLab instead of GitHub?

katrinleinweber commented 4 years ago

@peterjc: Yes (by @DLR-SC, @HZDR, @GFZ, & others)

mary-tziraki commented 1 year ago

Hi, I do appreciate that teaching git commands are essential, however, they are difficult to digest until practising a lot (judging from my experience as a learner helper and tutor).

A visual interface will be much more effective for teaching and understanding the commands. I've learned to use Visual Studio Code (VS Code) as a coding editor, and many plugins (extensions, for example, GitLens) facilitate git and have graphical representations of the branches and the commits.

You can visualise history and the difference in version-controlled files.

Another important feature that the VS code new editor interface gives, is the view that was missing for easily resolving conflicts (merge conflicts).

We could make the git lesson conceptually easier using visual interfaces and GUI tools. That might require a longer lesson and timekeeping is important.

martinosorb commented 1 month ago

I appreciate everyone's contribution to the discussion. This could be an interesting discussion within the general Carpentries community, but a lesson using GUI git, GitLab, and other suggestions would be an entirely different lesson. I believe these suggestions are good, but out of scope for this particular lesson.