-
Notifications
You must be signed in to change notification settings - Fork 13
/
SessionPlan.Rmd
230 lines (170 loc) · 7.96 KB
/
SessionPlan.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
---
title: "Intro to Git and GitHub"
author: "Tara Henechowicz"
date: "April 25, 2022"
output:
beamer_presentation: default
pdf_document: default
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
#Session Outline
1. Download and Install Git help, creating github account help (first 15 minutes)
2. Introductions (15 minutes)
3. Git Slides (see slides from U of T coders) (20 minutes)
4. Working with Git locally: edit a text file and git it
5. Pushing to GitHub
6. GitHub features for Collaboration
#Step 1. Configure git
```{bash}
#This step you only do it once (first time using git on your user)
git config --global user.name "tarahenechowicz"
#your github username, check your github profile
git config --global user.email "[email protected]"
#also recommend using your github account email
```
#Step 2. Create a Repository on your computer with gitGit
```{bash}
#First step is we need to know where we are in our computer before we make a repository there.
#To figure out where you are (if you're lost!):
pwd
#On mac you might want to change to a place that finder can see, like within our Documents folder, so we want to put our repository into a subdirectory of our Documents
#windows it is called "documents"
#to change the director use the command cd
cd Documents #name of directory
# to go backwards use cd .. to go back one level, have to do that twice for this project
cd ..
cd ..
#We are going to make a directory (or folder) for our project
mkdir GitPractice2
# now let's go into the directory that we just made
cd GitPractice2
```
#Step 3. Git Init (Initialize the Repo)
```{bash}
git init ## Create the repository (init = initialize)
#change the default branch name to main
git config --global init.defaultBranch main
```
#Adding files to the Repo
- Let's create a text file to store some data to work on
1. Create a text file named mydata.txt
```{bash}
#use touch command and create a file
touch mydata.txt
```
2. Open the file and add:
- your name
- your program
- your research area
3. Save the file.
#Making our first commit
```{bash, echo = TRUE}
git status mydata.txt ## Check the activity
#we need to add it to the stage so it can be commited
git add mydata.txt
#you can also do git add all to add all the files in the repository (remember we only have one right now)
#git add -A
```
you can also use `git add -A` to add all the files in your repository (remember we only have one right now)
#Making our first commit
Let's save our first set of changes using a commit. You need to put a message with a commit.
```{bash, echo = TRUE}
#git commit to save file to the history with a message (-m)
git commit -m "Commit for the first time"
```
#Making our second commit
- Now we are going to back to the text file and make a change
- for example, I'm going to add my affiliation in the first line
- you can add your programming languages and experiences
- or add a sentence about why you want to use git
#Check activity and changes with git status or git diff
1. Check the activity: `git status `
2. Shows the difference between changes in our repo and last commit: `git diff`
3. Add all of our changes in the repo use: `git add -A` or select what files you want to commit
4. `git status` - should return green to show that our text file is on the stage ready to be commited
5. `git commit -m "message describing changes"`
Let's check our log of changes:
`git log`
#Pushing repos from your computer to GitHub
1. Create repo on GitHub
2. Set up connection between our computer and GitHub
3. "Push" repo from computer to GitHub
#Create a repository on GitHub
##Create a repository on github that matches the name of your repository on your computer
##Why would we want to do this?
1. storage (privately or publicly)
2. Public sharing of data (open science)
3. now that its on github your team members or even general public can collaborate with you on your work and you can log the changes of multiple users!
#Set up the connection between our computer and github
- To push our repository to github, we need to first set up the connection between the repository on our computer with the repository on github
- go to the repository that we just made and there is the green button called "code" and copy the code from the https: `git remote add origin <link for github repo>`
- Now the computer will prompt to ask for your github username and password
- GitHub no longer takes your account password, you need to set up an authentication token
#Set up the Git authentication
Git authetication token start up : https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
- verify email address
- go to settings
- developer settings, personal access tokens
- "generate a personal access token"
- recommended you change expiration, depends on the security of your data/code.
- Personal access token lets git control your github account
- Don't lose it its like a password.
- If you forget it you have to do this process again.
#"Push" the repo from your computer to GitHub
In your terminal use this code:
`git push --set-upstream origin <name of branch>`
<name of branch> would be main or master depending on how your git is configured
- next enter your github username
- paste your access token when it asks for a password
#GitHub features for Collaboration
#Issues
- Issues are like little emails that you can send to yourself on GitHub or tag and assign others
- You can leave notes to let people know about errors in datasets or bugs in code.
- You can make tasks or to-do lists.
#Issues practice
- Let's try to make an issue called "Set up github profile" on GitHub with the following to-do list:
1. Make a repository that is named the same as our github username
2. Create a README.md file
3. Inside the README.md file put in your name, bio, contact information
#Cloning
For this lesson we are going to clone your profile repo onto your device.
1. Move back to your documents folder
- review: how do you find out which folder you are currently in?
- how do we move to the documents folder?
2. On GitHub, go to the repo that you want to clone and hit the code button
3. Select https and copy that link to:
`git clone <repo https>
#Branches
- Allow you to split off onto a new version of work without affecting the main branch
- Helpful for version control and collaboration if you want multiple versions of the same work
- This is an introduction to a complicated git topic - the more branches, the trickier it gets.
- Use with caution with starting, better to focus on just using the main branch
#Make a new branch
1. Use `git chekcout` to split between branches:
`git checkout -b <new branch name>`
`-b` option creates a new branch, you don't need it just to switch
If you already have a branch created you can use `git checkout <branch name>
`git branch` is code to check branches and which branch you are working on
#Make changes on the new branch and git commit
2. Now open one of the files in the repo and make changes in the file.
3. Follow the workflow to make a commit on the branch:
- review what is the workflow for making a commit?
#Push the branch to GitHub:
4. Once you have made a commit, you can push that branch to GitHub:
`git push --set-upstream origin <branch name>`
#Pull Request
- Demo how to use Pull Request to merge changes from branch and the main
- get's more complicated with more complicated changes, code, or with multiple branches/users
#Forking
- go to the repo that you want to form, press "fork" button in top corner
- try forking one of my repos from: https://github.com/tarahenechowicz?tab=repositories
#Collaboration with Github Further Reading:
- Social aspects of GitHub:
- starring
- following
- Further reading for how to collaborate on GitHub:
https://github.com/tarahenechowicz/studyGroup/blob/gh-pages/lessons/git/collaboration/lesson.md
- Intermediate and Advanced GitHub topics:
https://github.com/tarahenechowicz/studyGroup/blob/gh-pages/lessons/git/