or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
Open House - Jan'25: Lesson development towards intermediate/advanced Git ("Git masterclass")
Details
SoMe Post
Open House agenda
Create lesson structure/plan/designIntroductions
Samantha Wittke
…
…
Radovan Bast
The CodeRefinery project: https://coderefinery.org/
-> Community hanging out at: https://coderefinery.zulipchat.com/
Joe Marsh Rossney
Michele Mesiti
Richard Darst
Dominic Kempf
Jannetta Steyn
Nishka Dasgupta (ND)
Goal for today
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →- RB: that we all know about materials that we already have; if we decide to develop some new material, we ideally don't re-invent the same things in
- SW: awareness and knowledge exchange, starting the discussion
- JMR: gather some initial thoughts and ideas, make connections - know where to look when the time comes!
- LCB: I think there is definetely a need for an advanced course especially when it comes to certain features
- IM: Share experiences, contribute to discussion, find contributors to the curriculum above?
- DI: here in order to take the CR Git lesson to a more advanced level
- JH: see in what ways we can add to the exiting material / what might be missing
- CK: see what is out there; improvement of our advanced Git course
- MAH: see in what ways we can add to the exiting material / what might be missing
- MM: share what I think failed in our intermediate workshop, discuss a list of topic and their justifications (backward lesson design), and some philosophical questions about this in particular
- RD: mainly listen and I hope for a more advanced course+reference after coderefinery (maybe something to inspire people)
- NS: discover existing materials and work towards collating these into a single open, community maintained material. Refine what is
- DK: Identify plans and allies to contribute my materials to a community-based effort
- ND: I want to learn how to teach more effectively, especially to people who are not approaching this from an IT background
Materials out there
Add your materials on basic/advanced/expert git here:
Advanced git in Carpentries incubator (pre-alpha) (Ivelina)
Other Incubator projects on intermediate and advanced git
Git - beyond the basics
Heidelberg University material for intermediate/expert git courses (Dominic)
e-Science Center
Collaborative version control with Git and GitHub
Code Refinery
Git and GitHub through GitKraken : From Zero to Hero
University of Sheffield - Git Collaboration
KIT - Intermediate git
Mostly CodeRefinery material, but with some additions:
zedif Jena - Collaborative Version Control with Git: An Advanced Workshop
Basic GitHub but including pull requests and branching
Met Office Resources - Custom Software Carpentry Lessons
Other resources:
Topic collection/mapping
Based on: https://coderefinery.zulipchat.com/#narrow/channel/136238-lessons/topic/git.20and.20github.20.22masterclass.22
What we will do with the list below:
-> add missing topics and don't hesitate to re-group/re-order
-> Discuss the topics under the bold headers, everything covered, something too much? Add links to materials where these topics are already discusses
-> identify overlaps and gaps
-> prioritization by voting
Recovering from local mistakes
More phylosophical/general:
"how to undo things". In most basic courses, we do not teach how to undo operations on the git repository, how those operations compose and what is the limit on composability. e.g.: You committed to the wrong branch, how do you "undo", or fix that? In general, you did X, how do you rewind if you change your mind? (Git is not very flexible in this regard, and it's a meta-level problem so it is not crucial for beginners)
History (Neil and Dominic)
Changing history
git revert
and how it doesn't actually remove from hisotry. Removing from history completely can be done using BFG-repo-cleaner.Creating clearer history while working
git merge
orgit rebase
and explain why and when you might prefer one of the other. Both can result in conflicts though!git commit --amend
andgit commit --fixup
which provide a gentle introduction togit rebase -i
(see above) | +3History inspection
Collaborative workflows
Organizing projects
Suggestion: this topic belongs on a 'RSE/Data Manager track' of git training, separate from a 'researcher/user track' that focuses more on daily usage, recipes etc - 'history' & 'recovering' sections.
Best practices:
Resources:
User interfaces and experience
.gitconfig
| +4includeIf
to have custom configuration based on directory path.aliases
conflictstyle = diff3
under[merge]
to not only see a conflict but also what the original code was when resolvingdefaultBranch = main
pushDefault = origin
Combining changes
How git works under the hood
Working with remotes
Other notes from discussions
should one move from basic to intermediate immediately as learner? Maybe better to say: "use this for few months and let's look then"?
someone tried to teach merge conflicts with tic-tac-toe game where you don't see the other person's move until you merge and then who resolves first has a game advantage
how to keep thins small and manageable
what is the typical first big step/blocker/problem that learners meet when they start with Git?
does intermediate git typically happen on the command line?
could we show that we can recover from almost everything to reduce fear to experiment?
did you introduce yourself to git or did you have someone you could ask who knew more at the time you started?
show how git works "under the hood"
how to modify your (git) prompt (or just state that you can)
section with "best practices" on how to to do certain things on the CLI
How best to chain together a sequence of pull requests, where each one builds on the previous one, or whether this is a good idea at all (especially if working on a fork)
Are learners comfortable on the command line? For some, a git workshop may be the first time they see the commmand line. Learners can be heterogenious. Hard to have precise pre-requisites. Code Refinery has examples on using VSCode or the command line. Potentially using Git Desktop.
Stand alone Git clients not tied to an IDE are an option Git Kraken is one Git Butler another. Depending on the user community there may be different preferred tools, VSCode, RStudio, Emacs's Magit. Using the command line allows users to learn a universal way to use Git and the associated principles and then apply it to their own development environment. People are sometimes afraid of the command line but some of these lessons are good introductions to the command line. It would be useful to have introduction to basic Bash Shell/Unix as a pre-requisite to undertaking advanced Git course if command line is to be used.
Depends on how much people want to learn. For beginners they just want to get things done and working in GitHub is enough.
Some tools don't have all the functionality too, so it limits what you can do.
Idea: asynchronous collaborative 'mini-project' as part of the course, so that people can (a) cement ideas by actually putting them into practice immediately, (b) cover some workflows and practices (e.g. code review) that are less suitable for formal instruction but still important to familiarise ones self with.
idea: Helper exchange: Help out at other peoples workshop; how to organize?
Comment: Different communities have different usecases which may require slightly different lessons, would be great to have some way of providing choose your own adventure type of modular lessons
Comment: As platform, we should look at sustainability.
Gaps identified
Follow up
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →Carpentry call 27.01 on Teaching Git @ MetOffice:
Lesson structure
3D Print your GitHub activity