You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
171 lines
4.8 KiB
Markdown
171 lines
4.8 KiB
Markdown
---
|
|
title: Project management 0. Git setup
|
|
marp: true
|
|
paginate: true
|
|
theme: buutti
|
|
---
|
|
<!-- headingDivider: 3 -->
|
|
<!-- class: invert -->
|
|
|
|
# Project management 0. Git setup
|
|
|
|
## Contents
|
|
|
|
- [Contents](#contents)
|
|
- [What is Git?](#what-is-git)
|
|
- [GitHub and other developer platforms](#github-and-other-developer-platforms)
|
|
- [Setup](#setup)
|
|
- [Git setup: Settings for Windows](#git-setup-settings-for-windows)
|
|
- [Command line](#command-line)
|
|
- [Extra: Help, this is horrible!](#extra-help-this-is-horrible)
|
|
- [Btw: Config](#btw-config)
|
|
|
|
|
|
|
|
## What is Git?
|
|
|
|
* Git is a version control tool originally created by Linus Torvalds in 2005
|
|
* Keeps track of code changes
|
|
* Can be used to backup code in the cloud
|
|
* Enables cooperation with other team members
|
|
* Ubiquitous in software development
|
|
|
|
### Git vs cloud storage
|
|
|
|
* Git is different from cloud storage services like Dropbox, Google Drive or OneDrive
|
|
* Instead of automatic syncing, you deliberately *push to* and *pull from* the cloud
|
|
* Cloud services are easier for starters
|
|
* ...but in projects of more than one person, tracking changes would be a pain
|
|
* Git has a steep learning curve
|
|
* To ease things, there are some visual tools like **Sourcetree** or **Sublime Merge**
|
|
* To use them effectively, you still need to understand how Git works, though
|
|
|
|
## GitHub and other developer platforms
|
|
|
|
* Git *could* be used locally, but its usage is almost always combined with a developer platform — a remote storage service like [GitHub](https://github.com/), [GitLab](https://gitlab.com/) or [BitBucket](https://bitbucket.com/)
|
|
* These services can also double as a programming portfolio
|
|
* Commonly used in both open source and commercial projects
|
|
* In Buutti's trainings, GitLab is most commonly used
|
|
|
|
## Setup
|
|
|
|
* Install Git
|
|
* Windows/Mac: [git-scm.com](https://git-scm.com)
|
|
* Installation instructions are included in the following slides.
|
|
* If a setting is not mentioned in the instructions, you can leave it as the default option.
|
|
* Linux: `sudo apt-get install git`
|
|
|
|
## Git setup: Settings for Windows
|
|
|
|
<div class="columns" markdown="1">
|
|
<div markdown="1">
|
|
|
|

|
|
|
|
</div>
|
|
<div markdown="1">
|
|
|
|

|
|
|
|
Set manually after setup with:
|
|
```
|
|
git config --global core.editor "code --wait"
|
|
```
|
|
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
<div class="columns" markdown="1">
|
|
<div markdown="1">
|
|
|
|

|
|
|
|
Set manually after setup with:
|
|
```
|
|
git config --global init.defaultBranch main
|
|
```
|
|
|
|
</div>
|
|
<div markdown="1">
|
|
|
|

|
|
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
<div class="columns" markdown="1">
|
|
<div markdown="1">
|
|
|
|

|
|
|
|
</div>
|
|
<div markdown="1">
|
|
|
|

|
|
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
<div class="columns" markdown="1">
|
|
<div markdown="1">
|
|
|
|

|
|
|
|
Set manually after setup with:
|
|
|
|
```
|
|
git config --global credential.helper wincred
|
|
```
|
|
|
|
</div>
|
|
<div markdown="1">
|
|
|
|

|
|
|
|
</div>
|
|
</div>
|
|
|
|
## Command line
|
|
|
|
* Git is operated via the ***command line***, a.k.a, the ***terminal***
|
|
* There are many kinds of command line syntaxes out there. Some examples:
|
|
* Windows: ***PowerShell*** (new), ***cmd*** (old)
|
|
* Linux, (also included in the Windows Git install): ***bash***
|
|
* We're using PowerShell, which can be accessed inside VS Code
|
|
* In VS Code, open/close terminal by pressing ***CTRL+Ö*** (in the Fin/Swe layout)
|
|
|
|
### Basic commands and the working directory
|
|
|
|
* To do actions in Git, you don't press buttons, you write commands
|
|
* Most commands act on the currently open folder, a.k.a. the ***working directory***
|
|
* ***Path*** to the directory is shown next to the terminal cursor:
|
|
`PS E:\borb\code\unity-basics-course>`
|
|
* `ls` tells the contents of the working directory
|
|
* `cd` is used to move to another directory
|
|
* Use `cd programming` to move to the `programming` subfolder
|
|
`PS E:\borb\code\unity-basics-course\programming>`
|
|
* Use `cd ..` to move one step up in the hierarchy (to the parent directory)
|
|
`PS E:\borb\code\unity-basics-course>`
|
|
* ***Note***: `..` is a shorthand for to the parent directory, `.` for the current directory
|
|
|
|
## Extra: Help, this is horrible!
|
|
<!-- _class: "extra invert" -->
|
|
|
|
* Do you feel more at home in graphical UIs?
|
|
* There are also graphical user interfaces for Git like [GitKraken](https://www.gitkraken.com/), [Sublime Merge](https://www.sublimemerge.com/) or [GitHub Desktop](https://desktop.github.com/) (GitHub only)
|
|
* VS Code also has very useful graphical tools for Git (more about them later!)
|
|
* However, the GUIs make ***a lot*** more sense after you've understood the Git commands that those GUIs still execute under the hood
|
|
* There is no free lunch here
|
|
|
|
## Btw: Config
|
|
|
|
* To configure your Git username for every project:
|
|
* Use `git config --global user.name "myUserName"`
|
|
* and `git config --global user.email "my.email.address@domain.com"`
|
|
* If you do not do this, Git will ask to do it anyway at some point |