Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/annefou/test-af
https://github.com/annefou/test-af
Last synced: about 24 hours ago
JSON representation
- Host: GitHub
- URL: https://github.com/annefou/test-af
- Owner: annefou
- Created: 2020-05-16T16:15:29.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-05-16T16:15:33.000Z (over 4 years ago)
- Last Synced: 2024-11-05T10:51:14.054Z (about 2 months ago)
- Size: 1000 Bytes
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Centralized workflow exercise
In this exercise, we practice collaborative centralized workflow.
First, we all **clone** (make a local copy) and try to **push** (send
code to) the main repository. We'll see a small problem with that,
and then make a **pull request** (sending code so that others can
review and accept later). We'll discuss how this leads to code review
and discuss a number of typical pitfalls.Please don't go too far ahead, because we will learn from problems
that come up.## Before we start
Everyone needs their GitHub account to be added to our central repository.
1. Participants add their usernames to a shared document.
2. Instructor adds participants as collaborators to this project.## After participants have been added as collaborators
### 1. Clone this repository
### 2. Step into the newly created directory
```
$ cd centralized-workflow-exercise
```### 3. Create a file with a unique name, e.g.: `yourusername.txt`
In this file share your favourite cooking recipe or haiku or Git trick or whatever.
### 4. Stage and commit the change
```
$ git add yourusername.txt
$ git commit
```### 5. Try to push the change to the upstream repository
```
$ git push origin master
```By **"upstream"** we mean here the repository which we have cloned.
Imagine "upstream" being closer to the main development and your local
clone to be "downstream".### 6. **Stop here** and discuss why push for most participants was rejected
You probably see something like this:
```shell
$ git push
To https://github.com/user/repo.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/user/repo.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
```The push only worked for one participant. Why?
The natural reflex is now to `git pull` first but
what happens if we `git pull origin master`?### 7. Pull updates from the upstream repository
```
$ git pull origin master
```### 8. **Stop here** and discuss why we obtained a merge commit locally
Ideas? What happened under the hood? Discuss `git fetch` as an alternative to `git pull`.
Discuss `git pull --rebase` as an alternative to avoid merge commits.### 9. Try to push again
It will work for one more person.
### 10. Create a branch `yourname/somefeature` pointing at your commit
First find out the hash of your commit. You can do this using `git graph` or `git log`:
```
$ git log yourusername.txt
```Then create a branch "in the past" pointing to that hash:
```
$ git branch yourname/somefeature [hash]
```The `yourname/` prefix has no special meaning: it is just part of a
branch name to indicate who made it.### 11. Push your change as a new branch
```
$ git push origin -u yourname/somefeature
```Can we leave out the `-u`?
### 12. Submit a pull request
Submit a pull request from your branch towards the `master` branch.
Do this through the web interface.Finally also discuss {{ site.centralized_workflow_exercise_url }}/network.