From 03b06bfa5ff50963cf45cd5c8666ab9ca667a538 Mon Sep 17 00:00:00 2001 From: NataliaLKB Date: Tue, 31 Mar 2015 15:13:46 +0100 Subject: [PATCH 01/43] updating images and links --- README.md | 9 +++++---- cheatsheet.md | 6 +++--- img/merge-conflict.png | Bin 0 -> 46605 bytes 3 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 img/merge-conflict.png diff --git a/README.md b/README.md index e485bb9..aacf86b 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,6 @@ Git for Collaboration is aimed at the second week students of the course. Even t 3. [Committing](#commits) * [When should you commit](#when-commit) * [Commit messages](#commit-message) -4. [More about branches and Flows](#final flows) #### [Resources](#resources) @@ -100,7 +99,7 @@ On your local machine, please make sure you have git installed. If you are using ### Getting Starting -The next step is to clone the forked version of this repository. Copy the url shown here: +The next step is to clone the forked version of this repository. On the main page of the repo, copy the url shown here: ![where to copy url on github](./img/git-clone.png) @@ -387,5 +386,7 @@ I tend to favour one line commits for simplicity, but many schools of thought ou # RESOURCES: -* http://gitreal.codeschool.com/ -* https://www.atlassian.com/git/tutorials/ \ No newline at end of file +* For generating ssh keys https://help.github.com/articles/generating-ssh-keys/ +* http://gitreal.codeschool.com/ +* https://www.atlassian.com/git/tutorials/ +* https://github.com/pcottle/learnGitBranching diff --git a/cheatsheet.md b/cheatsheet.md index d8aa9a4..f0fcc6b 100644 --- a/cheatsheet.md +++ b/cheatsheet.md @@ -6,12 +6,12 @@ ##### Checking that status of your local repository git status -##### Pulling down all branches in a remote repo, not just the default branch - git fetch --all - ##### Creating a new branch for you to work on git branch +##### See all branches in your remote repository + git branch -a + ##### Moving onto a branch git checkout diff --git a/img/merge-conflict.png b/img/merge-conflict.png new file mode 100644 index 0000000000000000000000000000000000000000..375225f1599ebc1a1a977582e9b61629cd53503e GIT binary patch literal 46605 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 Date: Tue, 31 Mar 2015 15:16:35 +0100 Subject: [PATCH 02/43] updating resources anchor --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index aacf86b..633136e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Introduction to Git and Version Control -This tutorial is targeted towards the students of Founders & Coders 8 week coding Academy. Feedback or Suggestions in the format of an issue or contributions as a pull request are appreciated. +This tutorial is targeted towards the students of [Founders & Coders](http://foundersandcoders.org/) 8 week coding Academy. Feedback or Suggestions in the format of an issue or contributions as a pull request are appreciated. As a student, if you get stuck at any point, please open an issue and I will try to get back to you as soon as possible. If you would prefer, feel free to contact me on Gitter. When the issue is solved, do think about making a pull request to the project. @@ -383,7 +383,7 @@ I tend to favour one line commits for simplicity, but many schools of thought ou * [Informative guidelines, and a cute cat filled slideshow](http://www.slideshare.net/TarinGamberini/commit-messages-goodpractices) - + # RESOURCES: * For generating ssh keys https://help.github.com/articles/generating-ssh-keys/ From 7efa9a501f02c581a9884b724916991e17093dee Mon Sep 17 00:00:00 2001 From: Naomi Gaynor Date: Tue, 31 Mar 2015 16:24:32 +0100 Subject: [PATCH 03/43] adds git-status image --- cheatsheet.md | 1 + img/git-status.png | Bin 0 -> 18415 bytes 2 files changed, 1 insertion(+) create mode 100644 img/git-status.png diff --git a/cheatsheet.md b/cheatsheet.md index f0fcc6b..5ff923b 100644 --- a/cheatsheet.md +++ b/cheatsheet.md @@ -17,3 +17,4 @@ ##### Deleting a branch git branch -d + \ No newline at end of file diff --git a/img/git-status.png b/img/git-status.png new file mode 100644 index 0000000000000000000000000000000000000000..c461476e15f582a8d247d3f8b7e3d63ae8bbc059 GIT binary patch literal 18415 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 WuMtziX Date: Tue, 31 Mar 2015 16:34:06 +0100 Subject: [PATCH 04/43] adds instructions to redirect into directory created by git clone command --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 633136e..f8dee40 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,8 @@ Then use the command in your terminal: git clone https://github.com/NataliaLKB/learn-git-basics.git ``` +You should now be ablle to redirect into the directory just created using the command line. + Next, it is good to get in the habit after each command to use `git status`. Let us use it now. ``` From d2d53c1260f8160d49ce9b2585edf9a419920421 Mon Sep 17 00:00:00 2001 From: Naomi Gaynor Date: Tue, 31 Mar 2015 16:41:04 +0100 Subject: [PATCH 05/43] corrects typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f8dee40..21a2211 100644 --- a/README.md +++ b/README.md @@ -162,7 +162,7 @@ As you can see, your branch is now gone. ### Making Changes -Now it is time to make some changes in the project. Make yourself a new branch named `update-cheatsheet` and go onto it. open up the file cheatsheet.md in your favourite test editor. +Now it is time to make some changes in the project. Make yourself a new branch named `update-cheatsheet` and go onto it. open up the file cheatsheet.md in your favourite text editor. As you can see, this contains all the commands you will need to begin using git. Continue to add to it all the new commands you learn. To begin, here is a command that both creates a branch, and moves you onto it at the same time: From 022ad86e335a59ac2697ebf17622680229527995 Mon Sep 17 00:00:00 2001 From: NataliaLKB Date: Tue, 31 Mar 2015 17:04:12 +0100 Subject: [PATCH 06/43] adding merge commits section --- README.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/README.md b/README.md index 633136e..5e0cfa2 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ Git for Collaboration is aimed at the second week students of the course. Even t 3. [Committing](#commits) * [When should you commit](#when-commit) * [Commit messages](#commit-message) + * [Merging commits](#merging-commits) #### [Resources](#resources) @@ -383,6 +384,35 @@ I tend to favour one line commits for simplicity, but many schools of thought ou * [Informative guidelines, and a cute cat filled slideshow](http://www.slideshare.net/TarinGamberini/commit-messages-goodpractices) + +## Merging Commits + +Often you will find yourself wanting to merge commits, or organising your early commits slightly differently on a branch to better demonstrate what you worked on. I will briefly go through one easy way to do this. + +#### Reset Soft +This is my preferred method of merging commits together. It leaves you with lots of flexibility. + +To begin, make a new branch and make some new files and commit regularly (at least twice). + +Next `git log` and pick the 3rd most recent hash. Copy it and: + +``` +git reset --soft +git status +git log +``` + +Your working directory shouldn't changes, but all the files that you changed should be in green. Your log should have the newest commit as the hash you copied. Even though all your work is still the same as before the reset, the commits are different. Then you can commit again and this is an easy way to replace 2 or more commits with one commit. + + +For more information and techiques see: + +* [What to learn more about reset?](https://www.atlassian.com/git/tutorials/resetting-checking-out-and-reverting/commit-level-operations) +* [Only want to ammend the previous commit?](https://www.atlassian.com/git/tutorials/rewriting-history/) +* [The Golden Rule of Rebasing](https://www.atlassian.com/git/tutorials/merging-vs-rebasing/the-golden-rule-of-rebasing) + + + # RESOURCES: From f29c7aafe5e4f3e71cbba1681671bb76e975ab81 Mon Sep 17 00:00:00 2001 From: NataliaLKB Date: Tue, 31 Mar 2015 17:21:46 +0100 Subject: [PATCH 07/43] updating merge-conflict images --- README.md | 5 +++-- img/merge-conflict.png | Bin 46605 -> 59974 bytes 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 003a3e9..e1eb9e3 100644 --- a/README.md +++ b/README.md @@ -324,7 +324,7 @@ git log You should see something like this: -![git merge conflict example](./img/merge-conflict.png) +![git log example](./img/git-log.png) Pick the second time commit that you made and copy the hash. Use `q` to exit the log and checkout to your commit. @@ -344,7 +344,8 @@ Next, we should go back to the future. The quickest and easiest way is to checko ![git reflog example](./img/git-reflog.png) Find the commit name of the last commit you did (the third time that you recorded) and copy the short hash in yellow. Checkout back to that commit, and `git diff timeline-practise` there should be no difference. -Checkout back to `timeline-practise` and push up to Github to make a PR to master. Make sure you first check that it is up to date with master locally. +Checkout back to `timeline-practise` and push up to Github to make a PR to master. Make sure you first check that +it is up to date with master locally. diff --git a/img/merge-conflict.png b/img/merge-conflict.png index 375225f1599ebc1a1a977582e9b61629cd53503e..5aee967de787baa2ee611eda6794ff9062ad9364 100644 GIT binary patch literal 59974 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 QBLOZ0T~nP(E!*(_0O8(IS^xk5 delta 43778 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 M^sASZlE#7m4 Date: Wed, 1 Apr 2015 08:08:51 +0100 Subject: [PATCH 08/43] replacing PR with Pull request to make it more consistent --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e1eb9e3..a66a5d8 100644 --- a/README.md +++ b/README.md @@ -224,7 +224,7 @@ Go to your browser and open up this repository in github. Press the branches but ![branches button in gitub](./img/github-branch.png) -And then make a Pull Request to master +And then make a pull request to master ![viewing all your branches on github](./img/view-github-branches.png) @@ -263,7 +263,7 @@ Merge with master. You should have a git conflict that looks something like this ![git merge conflict example](./img/merge-conflict.png) Do you see the lines at the top. The first section is labelled `HEAD` those are from this branch. The next section is from master. Delete the lines, and any other code you want until the cheatsheet looks like how you want it to look. -Afterwards git status, add the files in red, commit, and push. Then make a PR to master like before and merge. Don't forget to update your local master branch, and delete the merged branch in Github and in your local repo. It is good to keep your working environments clean and organised. +Afterwards git status, add the files in red, commit, and push. Then make a pull request to master like before and merge. Don't forget to update your local master branch, and delete the merged branch in Github and in your local repo. It is good to keep your working environments clean and organised. @@ -344,7 +344,7 @@ Next, we should go back to the future. The quickest and easiest way is to checko ![git reflog example](./img/git-reflog.png) Find the commit name of the last commit you did (the third time that you recorded) and copy the short hash in yellow. Checkout back to that commit, and `git diff timeline-practise` there should be no difference. -Checkout back to `timeline-practise` and push up to Github to make a PR to master. Make sure you first check that +Checkout back to `timeline-practise` and push up to Github to make a pull request to master. Make sure you first check that it is up to date with master locally. @@ -365,7 +365,7 @@ The second method is you work through your task and complete it before adding or Through my research I have come across many different methodologies, and ultimately you should try to do what seems the most natural to you. I use both of these methodologies depending on the extend of the task before me. The best thing is to always keep in mind that you and your colleagues will inevitably need to go back to your commits and it will help everyone if commits are aptly named. -Likewise, even in Pull Requests, you must aim to make your commits a clear and concise summary of what tasks where completed on that branch. That way the person reviewing your PR understands what they will be reviewing before looking at the code itself. +Likewise, even in pull requests, you must aim to make your commits a clear and concise summary of what tasks where completed on that branch. That way the person reviewing your pull request understands what they will be reviewing before looking at the code itself. From eacc347dfa7805ed03def80a901ddcb797831a5d Mon Sep 17 00:00:00 2001 From: NataliaLKB Date: Wed, 1 Apr 2015 08:19:39 +0100 Subject: [PATCH 09/43] adding further description of `origin` --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a66a5d8..6e118e8 100644 --- a/README.md +++ b/README.md @@ -220,6 +220,8 @@ After you merge with master you have to push your changes to the remote repo (Gi git push origin update-cheatsheet ``` +When you pull or push you you are usually referring to your remote repo, or origin. In the example of `git push origin ` you are pushing your local changes to a remote branch that you are specifying. It is best practise, and makes things much simpler if you use the same name for your remote branch, as your local one. + Go to your browser and open up this repository in github. Press the branches button ![branches button in gitub](./img/github-branch.png) From c281ead8f83e79a24d1e8f34ee5cbbb889cdf54d Mon Sep 17 00:00:00 2001 From: NataliaLKB Date: Wed, 1 Apr 2015 08:37:01 +0100 Subject: [PATCH 10/43] embelishing the message section about commits to include how you get out of vim --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6e118e8..db0ecff 100644 --- a/README.md +++ b/README.md @@ -195,7 +195,7 @@ git commit -m 'adding new command in the cheatsheet' git status ``` -The message could be anything, but it is best to make it something that describes what you just did. +The message could be anything, but it is best to make it something that describes what you just did. You can also use the command `git commit` without `-m ' @@ -220,7 +220,9 @@ After you merge with master you have to push your changes to the remote repo (Gi git push origin update-cheatsheet ``` -When you pull or push you you are usually referring to your remote repo, or origin. In the example of `git push origin ` you are pushing your local changes to a remote branch that you are specifying. It is best practise, and makes things much simpler if you use the same name for your remote branch, as your local one. +When you pull or push you you are usually referring to your remote repo, or origin. In the example of `git push origin ` you are pushing your local changes to a remote branch that you are both creating, and naming. Since you are creating this branch from your local one it makes things much simpler if you use the same name for your remote branch, as your local one. + +For more information on pushing, see [here](https://help.github.com/articles/pushing-to-a-remote/) Go to your browser and open up this repository in github. Press the branches button From 1e1d465e465e5dff4938280723e6760ea559b77c Mon Sep 17 00:00:00 2001 From: NataliaLKB Date: Wed, 1 Apr 2015 08:44:28 +0100 Subject: [PATCH 11/43] describing more clearly what happens on a git push based on #2 --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index db0ecff..cd11dfc 100644 --- a/README.md +++ b/README.md @@ -195,12 +195,12 @@ git commit -m 'adding new command in the cheatsheet' git status ``` -The message could be anything, but it is best to make it something that describes what you just did. You can also use the command `git commit` without `-m ' ### Merging Changes with Master -Now that you have made and committed your changes, it is time to merge your branch with master. Even though you are not working with anyone else on this repository, it is always good practice to make sure your current branch is completely up to date with master. Checkout back onto master and pull down. This command looks like this: +Now that you have made and committed your changes, it is time to merge your branch with master. Even though you are not working with anyone else on this repository, it is always good practice to make sure your current branch is completely up to date with master. Imagine if you were working with a team. Someone else has already pushed up changes to master. If that someone else and yourself have changed the same file, it is quite likely that your changes will not be compatible with theirs. To avoid this, you want to merge your changes with theirs to avoid future problems. Checkout back onto master and pull down. These commands look like this: ``` git checkout master @@ -220,7 +220,7 @@ After you merge with master you have to push your changes to the remote repo (Gi git push origin update-cheatsheet ``` -When you pull or push you you are usually referring to your remote repo, or origin. In the example of `git push origin ` you are pushing your local changes to a remote branch that you are both creating, and naming. Since you are creating this branch from your local one it makes things much simpler if you use the same name for your remote branch, as your local one. +When you pull or push you are referring to your remote repo, or origin. In the example of `git push origin ` you are pushing your local changes to a remote branch that you are both creating, and naming. Since you are creating this branch from your local one it makes things much simpler if you use the same name for your remote branch, as your local one. For more information on pushing, see [here](https://help.github.com/articles/pushing-to-a-remote/) @@ -232,7 +232,7 @@ And then make a pull request to master ![viewing all your branches on github](./img/view-github-branches.png) -Now merge, and delete your branch. +Now merge, and delete your branch. Now your remote branch master is completely up to date with your latest changes. Return to your terminal and navigate to your local master branch. Pull down. You will see your branch update (fast-forward). Delete the branch `update-cheatsheet`. From 492eb9b8a8aa30724cf4c5e47f35953872219a58 Mon Sep 17 00:00:00 2001 From: NataliaLKB Date: Thu, 2 Apr 2015 09:32:40 +0100 Subject: [PATCH 12/43] deleting duplicate instructions --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index cd11dfc..e1234da 100644 --- a/README.md +++ b/README.md @@ -255,18 +255,20 @@ Run the command: git checkout merging-experiments ``` -You will see a branch called merging-experiments. Checkout onto it and open up the git cheatsheet, as you can see there are some differences between this and master. To see these differences use command: +Open up the git cheatsheet, as you can see there are some differences between this and master. To see these differences use command: ``` git diff master ``` The differences in green and the additions on this branch, that don't exist on master. The red are the things that are on master, that don't exist on this branch. + Merge with master. You should have a git conflict that looks something like this: ![git merge conflict example](./img/merge-conflict.png) Do you see the lines at the top. The first section is labelled `HEAD` those are from this branch. The next section is from master. Delete the lines, and any other code you want until the cheatsheet looks like how you want it to look. + Afterwards git status, add the files in red, commit, and push. Then make a pull request to master like before and merge. Don't forget to update your local master branch, and delete the merged branch in Github and in your local repo. It is good to keep your working environments clean and organised. @@ -357,7 +359,7 @@ it is up to date with master locally. -## When should you commit? +### When should you commit? You should aim each commit to be a "safe" version of the project. This means that if you checkout to any commit in your timeline, that should reflect where the project was at that point, and be functional. @@ -373,7 +375,7 @@ Likewise, even in pull requests, you must aim to make your commits a clear and c -## Commit messages +### Commit messages Just like choosing when to commit, and what to commit, it is also important to think about your naming. It is always good to be as descriptive as possible with your commit messages. Also consider: @@ -392,7 +394,7 @@ I tend to favour one line commits for simplicity, but many schools of thought ou -## Merging Commits +### Merging Commits Often you will find yourself wanting to merge commits, or organising your early commits slightly differently on a branch to better demonstrate what you worked on. I will briefly go through one easy way to do this. From 34bc9d526ae05a302680b2d430e9fdde70ca651e Mon Sep 17 00:00:00 2001 From: NataliaLKB Date: Thu, 2 Apr 2015 09:36:02 +0100 Subject: [PATCH 13/43] Making the commit message guidelines into bullet points for quick reading --- README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6e118e8..bf5f465 100644 --- a/README.md +++ b/README.md @@ -374,12 +374,14 @@ Likewise, even in pull requests, you must aim to make your commits a clear and c ## Commit messages Just like choosing when to commit, and what to commit, it is also important to think about your naming. It is always good to be as descriptive as possible with your commit messages. + Also consider: -Present tense for your commit messages -If related to an issue on github, should contain issue number -The first line should be 50 characters or less. Your message should be brief and to the point. -Focus on why you did something, not how you did it -Avoid `ands` . If you find yourself wanting to write `and`, you should probably break up that commit into multiple ones. +* Present tense for your commit messages +* If related to an issue on github, should contain issue number +* The first line should be 50 characters or less. Your message should be brief and to the point. +* Focus on why you did something, not how you did it +* Avoid `ands`. If you find yourself wanting to write `and`, you should probably break up that commit into multiple ones. + Remember that the purpose of this commit is to be a message for future you, or your colleagues who may have not known what you are working on. Try to think about your message with this in mind. Many development teams take it one step further and turn their commit messages into change logs. These change logs may be used for user consumption making it all the more important to have clear messages of what was done for that commit. From abc94e48913d14bfbccf0f00e7607ed004cb460f Mon Sep 17 00:00:00 2001 From: NataliaLKB Date: Thu, 2 Apr 2015 09:40:27 +0100 Subject: [PATCH 14/43] fixing spelling error in commit messages section --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3738518..f55c48f 100644 --- a/README.md +++ b/README.md @@ -386,11 +386,11 @@ Also consider: * Focus on why you did something, not how you did it * Avoid `ands`. If you find yourself wanting to write `and`, you should probably break up that commit into multiple ones. -Remember that the purpose of this commit is to be a message for future you, or your colleagues who may have not known what you are working on. Try to think about your message with this in mind. +Remember that the purpose of this commit is to be a message for future you, or your colleagues who may not have known what you are working on. Try to think about your message with this in mind. Many development teams take it one step further and turn their commit messages into change logs. These change logs may be used for user consumption making it all the more important to have clear messages of what was done for that commit. -I tend to favour one line commits for simplicity, but many schools of thought out there prefer multiline commit messages. For examples of how to do this see: +I tend to favour one line commits for simplicity, but many schools of thought out there prefer multiline commit messages. For examples of "best practice" formats for this see: * [Commit message guidelines Angular](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format) * [Informative guidelines, and a cute cat filled slideshow](http://www.slideshare.net/TarinGamberini/commit-messages-goodpractices) From 1116839e12c4165cb1b232747b466189e216ec7c Mon Sep 17 00:00:00 2001 From: NataliaLKB Date: Thu, 2 Apr 2015 16:40:39 +0100 Subject: [PATCH 15/43] braking up detached state paragraph into smaller sections --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f55c48f..9ecb600 100644 --- a/README.md +++ b/README.md @@ -232,7 +232,7 @@ And then make a pull request to master ![viewing all your branches on github](./img/view-github-branches.png) -Now merge, and delete your branch. Now your remote branch master is completely up to date with your latest changes. +Afterwards you will see a merge button. Press it and delete your branch. Now your remote branch master is completely up to date with your latest changes. Return to your terminal and navigate to your local master branch. Pull down. You will see your branch update (fast-forward). Delete the branch `update-cheatsheet`. @@ -343,8 +343,10 @@ git status ![git detached head warning](./img/detached-head.png) -As you can see after you checkout a message appears informing your that you are in a 'detached HEAD' state, meaning your are not working on any current branch. Open up the file in the time folder and look at the time and message. It should be the 2nd one that you wrote. +As you can see after you checkout a message appears informing your that you are in a 'detached HEAD' state, meaning your are not working on any current branch. Open up the file in the time folder and look at the time and message. It should be the 2nd one that you wrote. + Repeat step 6, and use the hash of the first time commit you made. Open the file and see that the time of your first commit, and your message to yourself. This is going back in time. You can easily go back as far as you like in the project and see older iterations of this tutorial! + Next, we should go back to the future. The quickest and easiest way is to checkout onto the`timeline-practise` branch and you should be back up to date. However, you can also navigate back to the latest commit from where you are now. First, check `git log`. You will notice your latest commits are no longer on there. This is where another command is handy. `git reflog` is best used to find recently "lost" commits. you should see something like: ![git reflog example](./img/git-reflog.png) From 391fe9870fbfead6718a7327e4255bc560b4223b Mon Sep 17 00:00:00 2001 From: NataliaLKB Date: Tue, 7 Apr 2015 10:34:28 +0100 Subject: [PATCH 16/43] changed description of tutorial for full time students, to just students of FAC --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 9ecb600..ca17fd1 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ # Introduction to Git and Version Control -This tutorial is targeted towards the students of [Founders & Coders](http://foundersandcoders.org/) 8 week coding Academy. Feedback or Suggestions in the format of an issue or contributions as a pull request are appreciated. +This tutorial is targeted towards the students of courses at [Founders & Coders](http://foundersandcoders.org/). Feedback or Suggestions in the format of an issue or contributions as a pull request are appreciated. As a student, if you get stuck at any point, please open an issue and I will try to get back to you as soon as possible. If you would prefer, feel free to contact me on Gitter. When the issue is solved, do think about making a pull request to the project. -The introduction to Git is aimed at the first week of the course. The hope is that this introduction will cover all you need to know to start collaborating on code with your fellow teammates. +The introduction to Git is aimed at the first week of the full time Founders & Coders course, or to those just starting out with git. The hope is that this introduction will cover all you need to know to start collaborating on code with your fellow teammates. -Git for Collaboration is aimed at the second week students of the course. Even though most of the advice in this tutorial will take a while to digest - and practise is essential. A good goal is to understand all these concepts, and implement at least most of these tips in your collaborative projects before finishing your time as a student at Founders & Coders. +Git for Collaboration is aimed at the second week students of the course, or those that have mastered the first section. Even though most of the advice in this tutorial will take a while to digest - and practise is essential. A good goal is to understand all these concepts, and implement at least most of these tips in your collaborative projects before finishing your time as a student at Founders & Coders. # Contents @@ -36,7 +36,7 @@ Git for Collaboration is aimed at the second week students of the course. Even t # Introduction -This introduction to Git is aimed at first week students of [Founders & Coders](http://foundersandcoders.org/) 8 week coding academy. The hope is that this introduction will cover all you need to know to start collaborating on code with your fellow teammates. +The introduction to Git is aimed at the first week of the full time Founders & Coders course, or to those just starting out with git. The hope is that this introduction will cover all you need to know to start collaborating on code with your fellow teammates. @@ -287,7 +287,7 @@ http://scottchacon.com/2011/08/31/github-flow.html # Git for Collaboration -Git for Collaboration is aimed at the second week students of the course. Even though most of the advice in this tutorial will take a while to digest - and practise is essential. A good goal is to understand all these concepts, and implement at least most of these tips in your collaborative projects before finishing your time as a student at Founders & Coders. +Git for Collaboration is aimed at the second week students of the course, or those that have mastered the first section. Even though most of the advice in this tutorial will take a while to digest - and practise is essential. A good goal is to understand all these concepts, and implement at least most of these tips in your collaborative projects before finishing your time as a student at Founders & Coders. From 4e6113c7622d0ba0db7b23cace47c8304c5c91cf Mon Sep 17 00:00:00 2001 From: NataliaLKB Date: Tue, 7 Apr 2015 10:35:23 +0100 Subject: [PATCH 17/43] changing initial `git branch new-branch` to `git branch my-new-branch` for clarity --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ca17fd1..0ab398f 100644 --- a/README.md +++ b/README.md @@ -134,7 +134,7 @@ When there are other branches in your repo the green branch is the current one y The next step is to create your own branch to work on. try this: ``` -git branch new-branch +git branch my-new-branch ``` It is best to try to name your branches as specific as possible, so not to confuse them with any others. There are many naming conventions out there for branches, but for this week simply try to name them off of a feature. For example (`navbar-collapse` or `sass-file-structure`). To see all your branches: From 16f2915261aef47c9c6637794405a6636f057bd2 Mon Sep 17 00:00:00 2001 From: NataliaLKB Date: Sun, 12 Apr 2015 23:40:05 +0100 Subject: [PATCH 18/43] fixing typos mentioned in #13 --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0ab398f..b4b1ee9 100644 --- a/README.md +++ b/README.md @@ -367,13 +367,13 @@ You should aim each commit to be a "safe" version of the project. This means tha Given that, when you commit is very important. I have heard two very useful guidelines. -The first, is that a you complete the task assigned to you, you make several commits at different times during that task. In the end you merge all those commits together to make one very informative commit of that task. I will talk about ways to merge commits together in a later section. +The first, is that you complete the task assigned to you, you make several commits at different times during that task. In the end you merge all those commits together to make one very informative commit of that task. I will talk about ways to merge commits together in a later section. The second method is you work through your task and complete it before adding or committing at all. Then you check the status of the repo and see all the files you have changed. The next step is selectively adding and committing -Through my research I have come across many different methodologies, and ultimately you should try to do what seems the most natural to you. I use both of these methodologies depending on the extend of the task before me. The best thing is to always keep in mind that you and your colleagues will inevitably need to go back to your commits and it will help everyone if commits are aptly named. +Through my research I have come across many different methodologies, and ultimately you should try to do what seems the most natural to you. I use both of these methodologies depending on the extent of the task before me. The best thing is to always keep in mind that you and your colleagues will inevitably need to go back to your commits and it will help everyone if commits are aptly named. -Likewise, even in pull requests, you must aim to make your commits a clear and concise summary of what tasks where completed on that branch. That way the person reviewing your pull request understands what they will be reviewing before looking at the code itself. +Likewise, even in pull requests, you must aim to make your commits a clear and concise summary of what tasks were completed on that branch. That way the person reviewing your pull request understands what they will be reviewing before looking at the code itself. From 5d7deb49602d1d4e4ec71dd2db18fc97ff1bcc3a Mon Sep 17 00:00:00 2001 From: NataliaLKB Date: Sun, 12 Apr 2015 23:44:47 +0100 Subject: [PATCH 19/43] fixing git-for-collaboration link problem mentioned in #19 --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b4b1ee9..b773f7f 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Git for Collaboration is aimed at the second week students of the course, or tho * [Merge Conflicts](#conflicts) 4. [Introducing Github Flow](#github-flow) -#### [Git for Collaboration](#git-collaboration) +#### [Git for Collaboration](#git-for-collaboration) 1. [Further terminology](#further-terminology) 2. [The Timeline](#timeline) 3. [Committing](#commits) @@ -73,7 +73,7 @@ Git can provide you with a complete history of every commit made on a project. B * Being able to see what differences exist between commits -* Being able to move between difference commits (or places in time). This is especially useful if something became broken while you were working on it, and you need to start again. +* Being able to move between different commits (or places in time). This is especially useful if something became broken while you were working on it, and you need to start again. In the introduction section of this tutorial, we won't be able to cover all these benefits in practise extensively. However, we will aim to give you all the information you will need to know by the end. @@ -99,7 +99,7 @@ On your local machine, please make sure you have git installed. If you are using -### Getting Starting +### Getting Started The next step is to clone the forked version of this repository. On the main page of the repo, copy the url shown here: ![where to copy url on github](./img/git-clone.png) @@ -284,7 +284,7 @@ http://scottchacon.com/2011/08/31/github-flow.html - + # Git for Collaboration Git for Collaboration is aimed at the second week students of the course, or those that have mastered the first section. Even though most of the advice in this tutorial will take a while to digest - and practise is essential. A good goal is to understand all these concepts, and implement at least most of these tips in your collaborative projects before finishing your time as a student at Founders & Coders. From 642a8f2a01a532eeded71e73e60391264880529b Mon Sep 17 00:00:00 2001 From: Natalia Baltazar Date: Sun, 12 Apr 2015 23:48:21 +0100 Subject: [PATCH 20/43] Revert "Typos" --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index b773f7f..0ab398f 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Git for Collaboration is aimed at the second week students of the course, or tho * [Merge Conflicts](#conflicts) 4. [Introducing Github Flow](#github-flow) -#### [Git for Collaboration](#git-for-collaboration) +#### [Git for Collaboration](#git-collaboration) 1. [Further terminology](#further-terminology) 2. [The Timeline](#timeline) 3. [Committing](#commits) @@ -73,7 +73,7 @@ Git can provide you with a complete history of every commit made on a project. B * Being able to see what differences exist between commits -* Being able to move between different commits (or places in time). This is especially useful if something became broken while you were working on it, and you need to start again. +* Being able to move between difference commits (or places in time). This is especially useful if something became broken while you were working on it, and you need to start again. In the introduction section of this tutorial, we won't be able to cover all these benefits in practise extensively. However, we will aim to give you all the information you will need to know by the end. @@ -99,7 +99,7 @@ On your local machine, please make sure you have git installed. If you are using -### Getting Started +### Getting Starting The next step is to clone the forked version of this repository. On the main page of the repo, copy the url shown here: ![where to copy url on github](./img/git-clone.png) @@ -284,7 +284,7 @@ http://scottchacon.com/2011/08/31/github-flow.html - + # Git for Collaboration Git for Collaboration is aimed at the second week students of the course, or those that have mastered the first section. Even though most of the advice in this tutorial will take a while to digest - and practise is essential. A good goal is to understand all these concepts, and implement at least most of these tips in your collaborative projects before finishing your time as a student at Founders & Coders. @@ -367,13 +367,13 @@ You should aim each commit to be a "safe" version of the project. This means tha Given that, when you commit is very important. I have heard two very useful guidelines. -The first, is that you complete the task assigned to you, you make several commits at different times during that task. In the end you merge all those commits together to make one very informative commit of that task. I will talk about ways to merge commits together in a later section. +The first, is that a you complete the task assigned to you, you make several commits at different times during that task. In the end you merge all those commits together to make one very informative commit of that task. I will talk about ways to merge commits together in a later section. The second method is you work through your task and complete it before adding or committing at all. Then you check the status of the repo and see all the files you have changed. The next step is selectively adding and committing -Through my research I have come across many different methodologies, and ultimately you should try to do what seems the most natural to you. I use both of these methodologies depending on the extent of the task before me. The best thing is to always keep in mind that you and your colleagues will inevitably need to go back to your commits and it will help everyone if commits are aptly named. +Through my research I have come across many different methodologies, and ultimately you should try to do what seems the most natural to you. I use both of these methodologies depending on the extend of the task before me. The best thing is to always keep in mind that you and your colleagues will inevitably need to go back to your commits and it will help everyone if commits are aptly named. -Likewise, even in pull requests, you must aim to make your commits a clear and concise summary of what tasks were completed on that branch. That way the person reviewing your pull request understands what they will be reviewing before looking at the code itself. +Likewise, even in pull requests, you must aim to make your commits a clear and concise summary of what tasks where completed on that branch. That way the person reviewing your pull request understands what they will be reviewing before looking at the code itself. From 8428c105f322fc0c3878870ca238f60928ba471a Mon Sep 17 00:00:00 2001 From: NataliaLKB Date: Sun, 12 Apr 2015 23:53:22 +0100 Subject: [PATCH 21/43] fixing small typos mentionedi in 19 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b4b1ee9..5bfe88f 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ Git can provide you with a complete history of every commit made on a project. B * Being able to see what differences exist between commits -* Being able to move between difference commits (or places in time). This is especially useful if something became broken while you were working on it, and you need to start again. +* Being able to move between different commits (or places in time). This is especially useful if something became broken while you were working on it, and you need to start again. In the introduction section of this tutorial, we won't be able to cover all these benefits in practise extensively. However, we will aim to give you all the information you will need to know by the end. @@ -99,7 +99,7 @@ On your local machine, please make sure you have git installed. If you are using -### Getting Starting +### Getting Started The next step is to clone the forked version of this repository. On the main page of the repo, copy the url shown here: ![where to copy url on github](./img/git-clone.png) From bb9e8faba50a2767c75614296620421b634208f0 Mon Sep 17 00:00:00 2001 From: NataliaLKB Date: Mon, 13 Apr 2015 00:10:40 +0100 Subject: [PATCH 22/43] added recommended brew tutorial #21 --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7948cfe..18bff3b 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,11 @@ Next please fork this repository. ![fork button on github](./img/fork.png) -On your local machine, please make sure you have git installed. If you are using a mac, please install with brew. Windows use http://git-scm.com/download/win. and Linux install using these instructions http://git-scm.com/download/linux. +On your local machine, please make sure you have git installed. + +If you are using a mac, the easiest thing is to install git with [Homebrew](http://brew.sh/). Want to learn more about Homebrew? Check out this [tutorial](http://computers.tutsplus.com/tutorials/homebrew-demystified-os-xs-ultimate-package-manager--mac-44884). + +Windows use http://git-scm.com/download/win. and Linux install using these instructions http://git-scm.com/download/linux. From eb2edc4989cfacd30b9f4e6e7485bb100735282c Mon Sep 17 00:00:00 2001 From: nelsonic Date: Tue, 28 Apr 2015 16:20:59 +0100 Subject: [PATCH 23/43] adds more links to resources section: https://github.com/NataliaLKB/learn-git-basics/issues/24 --- README.md | 61 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 18bff3b..27f2918 100644 --- a/README.md +++ b/README.md @@ -55,10 +55,10 @@ A version control system. A remote location where you can store you code, and which all the members of the team have access to. Think of it like a dropbox for code. One of the big differences however is most repositories on github are public. Anybody can see your code. ##### *Commit* -A way of saving your code at different points along the project. Unlike many tools you may have used however, all commits are saved. This creates a project history and a way to track changes. +A way of saving your code at different points along the project. Unlike many tools you may have used however, all commits are saved. This creates a project history and a way to track changes. ##### *Branches* -As you work on a git repo the first branch you are on is usually the default branch. This is often called `master`. If you start working on a section of the website (say the footer styling), it is best practise to create your own branch for that feature. Creating your own branch is like taking a copy of `master` and renaming it. When you commit, they will now be on that new branch only. +As you work on a git repo the first branch you are on is usually the default branch. This is often called `master`. If you start working on a section of the website (say the footer styling), it is best practise to create your own branch for that feature. Creating your own branch is like taking a copy of `master` and renaming it. When you commit, they will now be on that new branch only. In the sections below we will walk through how to do this. For the meantime, just note that you always have one default branch, and can have as many other branches as needed. @@ -78,7 +78,7 @@ Git can provide you with a complete history of every commit made on a project. B In the introduction section of this tutorial, we won't be able to cover all these benefits in practise extensively. However, we will aim to give you all the information you will need to know by the end. ##### Multiple people working on the same files -Version control makes this possible. If you work on one file, and then I work on the same file at the same time when we want to combine our changes git allows us to keep both versions save that we can compare. This allows us to integrate our changes more swiftly. +Version control makes this possible. If you work on one file, and then I work on the same file at the same time when we want to combine our changes git allows us to keep both versions save that we can compare. This allows us to integrate our changes more swiftly. We will practice with this later. @@ -104,7 +104,7 @@ Windows use http://git-scm.com/download/win. and Linux install using these instr ### Getting Started -The next step is to clone the forked version of this repository. On the main page of the repo, copy the url shown here: +The next step is to clone the forked version of this repository. On the main page of the repo, copy the url shown here: ![where to copy url on github](./img/git-clone.png) @@ -116,7 +116,7 @@ git clone https://github.com/NataliaLKB/learn-git-basics.git You should now be ablle to redirect into the directory just created using the command line. -Next, it is good to get in the habit after each command to use `git status`. Let us use it now. +Next, it is good to get in the habit after each command to use `git status`. Let us use it now. ``` git status @@ -157,12 +157,12 @@ git branch Now you can see you are on that branch. Go back to master and now we are going to delete `new-branch`. ``` -git checkout master +git checkout master git branch -d new-branch git branch ``` -As you can see, your branch is now gone. +As you can see, your branch is now gone. @@ -193,7 +193,7 @@ git status ``` Now you can see the file name has turned green. Now to commit your changes. - + ``` git commit -m 'adding new command in the cheatsheet' git status @@ -218,7 +218,7 @@ git merge master ``` Even though in this situation there isn't any changes to merge, it is best to get in the habit on going through these steps in your work flow. Merging like this means taking any possible changes in master and merging them with the branch you are currently on. -After you merge with master you have to push your changes to the remote repo (Github). +After you merge with master you have to push your changes to the remote repo (Github). ``` git push origin update-cheatsheet @@ -238,7 +238,7 @@ And then make a pull request to master Afterwards you will see a merge button. Press it and delete your branch. Now your remote branch master is completely up to date with your latest changes. -Return to your terminal and navigate to your local master branch. Pull down. You will see your branch update (fast-forward). Delete the branch `update-cheatsheet`. +Return to your terminal and navigate to your local master branch. Pull down. You will see your branch update (fast-forward). Delete the branch `update-cheatsheet`. @@ -271,9 +271,9 @@ Merge with master. You should have a git conflict that looks something like this ![git merge conflict example](./img/merge-conflict.png) -Do you see the lines at the top. The first section is labelled `HEAD` those are from this branch. The next section is from master. Delete the lines, and any other code you want until the cheatsheet looks like how you want it to look. +Do you see the lines at the top. The first section is labelled `HEAD` those are from this branch. The next section is from master. Delete the lines, and any other code you want until the cheatsheet looks like how you want it to look. -Afterwards git status, add the files in red, commit, and push. Then make a pull request to master like before and merge. Don't forget to update your local master branch, and delete the merged branch in Github and in your local repo. It is good to keep your working environments clean and organised. +Afterwards git status, add the files in red, commit, and push. Then make a pull request to master like before and merge. Don't forget to update your local master branch, and delete the merged branch in Github and in your local repo. It is good to keep your working environments clean and organised. @@ -311,7 +311,7 @@ As discussed previously git stores all the commits on the project. You can use t Before we start make sure you have a terminal open located at the local copy of this repo. The same one that was used for the first tutorial is essential. Make a new branch called `timeline-practice` and navigate onto it. -Make a new directory in the project via the command line. Lets call it `time`. +Make a new directory in the project via the command line. Lets call it `time`. ``` mkdir time @@ -355,8 +355,8 @@ Next, we should go back to the future. The quickest and easiest way is to checko ![git reflog example](./img/git-reflog.png) -Find the commit name of the last commit you did (the third time that you recorded) and copy the short hash in yellow. Checkout back to that commit, and `git diff timeline-practise` there should be no difference. -Checkout back to `timeline-practise` and push up to Github to make a pull request to master. Make sure you first check that +Find the commit name of the last commit you did (the third time that you recorded) and copy the short hash in yellow. Checkout back to that commit, and `git diff timeline-practise` there should be no difference. +Checkout back to `timeline-practise` and push up to Github to make a pull request to master. Make sure you first check that it is up to date with master locally. @@ -369,13 +369,13 @@ it is up to date with master locally. You should aim each commit to be a "safe" version of the project. This means that if you checkout to any commit in your timeline, that should reflect where the project was at that point, and be functional. -Given that, when you commit is very important. I have heard two very useful guidelines. +Given that, when you commit is very important. I have heard two very useful guidelines. The first, is that a you complete the task assigned to you, you make several commits at different times during that task. In the end you merge all those commits together to make one very informative commit of that task. I will talk about ways to merge commits together in a later section. -The second method is you work through your task and complete it before adding or committing at all. Then you check the status of the repo and see all the files you have changed. The next step is selectively adding and committing +The second method is you work through your task and complete it before adding or committing at all. Then you check the status of the repo and see all the files you have changed. The next step is selectively adding and committing -Through my research I have come across many different methodologies, and ultimately you should try to do what seems the most natural to you. I use both of these methodologies depending on the extend of the task before me. The best thing is to always keep in mind that you and your colleagues will inevitably need to go back to your commits and it will help everyone if commits are aptly named. +Through my research I have come across many different methodologies, and ultimately you should try to do what seems the most natural to you. I use both of these methodologies depending on the extend of the task before me. The best thing is to always keep in mind that you and your colleagues will inevitably need to go back to your commits and it will help everyone if commits are aptly named. Likewise, even in pull requests, you must aim to make your commits a clear and concise summary of what tasks where completed on that branch. That way the person reviewing your pull request understands what they will be reviewing before looking at the code itself. @@ -383,9 +383,9 @@ Likewise, even in pull requests, you must aim to make your commits a clear and c ### Commit messages -Just like choosing when to commit, and what to commit, it is also important to think about your naming. It is always good to be as descriptive as possible with your commit messages. +Just like choosing when to commit, and what to commit, it is also important to think about your naming. It is always good to be as descriptive as possible with your commit messages. -Also consider: +Also consider: * Present tense for your commit messages * If related to an issue on github, should contain issue number * The first line should be 50 characters or less. Your message should be brief and to the point. @@ -409,7 +409,7 @@ Often you will find yourself wanting to merge commits, or organising your early #### Reset Soft This is my preferred method of merging commits together. It leaves you with lots of flexibility. -To begin, make a new branch and make some new files and commit regularly (at least twice). +To begin, make a new branch and make some new files and commit regularly (at least twice). Next `git log` and pick the 3rd most recent hash. Copy it and: @@ -431,9 +431,20 @@ For more information and techiques see: -# RESOURCES: +# RESOURCES [![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/NataliaLKB/learn-git-basics/issues) + +> Have you ***found a useful Git or GitHub resource or tutorial? Please let us know*** by creating an issue * For generating ssh keys https://help.github.com/articles/generating-ssh-keys/ -* http://gitreal.codeschool.com/ -* https://www.atlassian.com/git/tutorials/ -* https://github.com/pcottle/learnGitBranching +* CodeSchool "Git Real" tutorial: http://gitreal.codeschool.com/ +* Atlassian (makers of *SourceTree*) Git Tutorials: https://www.atlassian.com/git/tutorials/ +* Git Branching: https://github.com/pcottle/learnGitBranching ++ Interactive tutorial: http://gitimmersion.com ++ Build Podcast (intro to Git) Video: http://build-podcast.com/git/ ++ Git User Manual: https://www.kernel.org/pub/software/scm/git/docs/user-manual.html ++ GitHub's Treasure Trove of Video Tutorials: https://www.youtube.com/user/GitHubGuides (channel) and *specifically*: https://www.youtube.com/watch?v=FyfwLX4HAxM ++ The *simple* guide to git: http://rogerdudler.github.io/git-guide/ ++ Jeff Schomay's Git-Fu presentation: http://slides.com/jschomay/git-fu ++ Git Pretty: http://justinhileman.info/article/git-pretty/ (anything visual makes learning git much easier...) ++ Intermediate: http://www.raywenderlich.com/74258/git-tutorial-intermediate ++ Visualize your Git with **SourceTree**: http://www.sourcetreeapp.com/ From 972c4e57416d8e59efcaf957c8923155fad169a5 Mon Sep 17 00:00:00 2001 From: Rafe Kennedy Date: Mon, 4 May 2015 11:36:39 +0100 Subject: [PATCH 24/43] makes name of new branch in ###Branching consistent --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 27f2918..2d68ff7 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,7 @@ When there are other branches in your repo the green branch is the current one y The next step is to create your own branch to work on. try this: ``` -git branch my-new-branch +git branch new-branch ``` It is best to try to name your branches as specific as possible, so not to confuse them with any others. There are many naming conventions out there for branches, but for this week simply try to name them off of a feature. For example (`navbar-collapse` or `sass-file-structure`). To see all your branches: From 65f829d918b4d8a38cd0fdb40e3339cf48cc6675 Mon Sep 17 00:00:00 2001 From: Patrick Walkowicz Date: Tue, 15 Sep 2015 20:21:16 +0100 Subject: [PATCH 25/43] Added a section on changing file structure --- README.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/README.md b/README.md index 2d68ff7..8a848cf 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ Git for Collaboration is aimed at the second week students of the course, or tho * [Making Changes](#changes) * [Merging with Master](#merging) * [Merge Conflicts](#conflicts) + * [Changing File Structure](#changing-file-structure) 4. [Introducing Github Flow](#github-flow) #### [Git for Collaboration](#git-collaboration) @@ -276,6 +277,39 @@ Do you see the lines at the top. The first section is labelled `HEAD` those are Afterwards git status, add the files in red, commit, and push. Then make a pull request to master like before and merge. Don't forget to update your local master branch, and delete the merged branch in Github and in your local repo. It is good to keep your working environments clean and organised. + +### Changing File Structure +Imagine you're working on a project that's getting bigger in size. As new files are added, it makes sense to group some of them into folders. For example, it's a good idea to keep all CSS files in one folder, JS files in another etc. + +Let's assume you've just cloned a repository structured like this: +``` +index.html +stylesheet.css +script.js +``` + +However, you'd prefer to split these into folders like: +``` +css/stylesheet.css +js/script.js +index.html +``` + +In order to achieve this, `git mv` command comes in handy. Using it to move files *ensures preserving history* of the files you work on. To change file structure like above (and create new folders at the same time) use command: +``` +mkdir css && git mv stylesheet.css ./css +mkdir css && git mv script.js ./js +``` +(This glues `mkdir` and `git mv` commands together with `&&` operator). + +Basic function usage is +``` +git mv +``` +The command also takes optional parameters. To find out more, refer to [documentation](http://git-scm.com/docs/git-mv). + + + ## Github Flow Github flow is what most teams at Founders & Coders follow. It is simple and effective. From 306ed7a00d3b45f6aa33c43ab880be1f2397c9ca Mon Sep 17 00:00:00 2001 From: Patrick Walkowicz Date: Tue, 15 Sep 2015 20:25:42 +0100 Subject: [PATCH 26/43] Added git mv command in cheat sheet --- cheatsheet.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cheatsheet.md b/cheatsheet.md index 5ff923b..eba705e 100644 --- a/cheatsheet.md +++ b/cheatsheet.md @@ -17,4 +17,7 @@ ##### Deleting a branch git branch -d + +##### Moving files while preserving git history + git mv \ No newline at end of file From ce84e8476fdf9f900218099938351f67a18e6122 Mon Sep 17 00:00:00 2001 From: Justen Barget Date: Sun, 27 Sep 2015 11:42:23 +0100 Subject: [PATCH 27/43] adding step numbers to instructions --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 8a848cf..c939d6f 100644 --- a/README.md +++ b/README.md @@ -345,13 +345,13 @@ As discussed previously git stores all the commits on the project. You can use t Before we start make sure you have a terminal open located at the local copy of this repo. The same one that was used for the first tutorial is essential. Make a new branch called `timeline-practice` and navigate onto it. -Make a new directory in the project via the command line. Lets call it `time`. +Step 1) Make a new directory in the project via the command line. Lets call it `time`. ``` mkdir time ``` -Also make a new file in that directory and call it whatever you like. A simple text file should be fine. After you are done, open it. +Step 2) Also make a new file in that directory and call it whatever you like. A simple text file should be fine. After you are done, open it. ``` touch time/newfile.txt @@ -360,7 +360,7 @@ open time/newfile.txt Write the current time stamp, and a short message to your future self. Save it. Next add and commit your changes. Your commit message should be descriptive of what you just did. Repeat step 2 twice more, deleting the previous time and message, and adding the new time and a different message. Make sure you add and commit each time. Make sure your commit messages are unique, and you can tell which one was first, second, and third. -Next type in this command: +Step 3) Next type in this command: ``` git log @@ -372,7 +372,7 @@ You should see something like this: Pick the second time commit that you made and copy the hash. Use `q` to exit the log and checkout to your commit. - +Step 4) ``` git checkout git status @@ -383,7 +383,7 @@ git status As you can see after you checkout a message appears informing your that you are in a 'detached HEAD' state, meaning your are not working on any current branch. Open up the file in the time folder and look at the time and message. It should be the 2nd one that you wrote. -Repeat step 6, and use the hash of the first time commit you made. Open the file and see that the time of your first commit, and your message to yourself. This is going back in time. You can easily go back as far as you like in the project and see older iterations of this tutorial! +Repeat step 4, and use the hash of the first time commit you made. Open the file and see that the time of your first commit, and your message to yourself. This is going back in time. You can easily go back as far as you like in the project and see older iterations of this tutorial! Next, we should go back to the future. The quickest and easiest way is to checkout onto the`timeline-practise` branch and you should be back up to date. However, you can also navigate back to the latest commit from where you are now. First, check `git log`. You will notice your latest commits are no longer on there. This is where another command is handy. `git reflog` is best used to find recently "lost" commits. you should see something like: @@ -405,11 +405,11 @@ You should aim each commit to be a "safe" version of the project. This means tha Given that, when you commit is very important. I have heard two very useful guidelines. -The first, is that a you complete the task assigned to you, you make several commits at different times during that task. In the end you merge all those commits together to make one very informative commit of that task. I will talk about ways to merge commits together in a later section. +The first, is that as you complete the task assigned to you, you make several commits at different times during that task. In the end you merge all those commits together to make one very informative commit of that task. I will talk about ways to merge commits together in a later section. The second method is you work through your task and complete it before adding or committing at all. Then you check the status of the repo and see all the files you have changed. The next step is selectively adding and committing -Through my research I have come across many different methodologies, and ultimately you should try to do what seems the most natural to you. I use both of these methodologies depending on the extend of the task before me. The best thing is to always keep in mind that you and your colleagues will inevitably need to go back to your commits and it will help everyone if commits are aptly named. +Through my research I have come across many different methodologies, and ultimately you should try to do what seems the most natural to you. I use both of these methodologies depending on the extent of the task before me. The best thing is to always keep in mind that you and your colleagues will inevitably need to go back to your commits and it will help everyone if commits are aptly named. Likewise, even in pull requests, you must aim to make your commits a clear and concise summary of what tasks where completed on that branch. That way the person reviewing your pull request understands what they will be reviewing before looking at the code itself. From 91ddd8c06b2713661aa6c2cf87b4c86f626334fa Mon Sep 17 00:00:00 2001 From: John Whiles Date: Fri, 7 Oct 2016 14:31:20 +0100 Subject: [PATCH 28/43] updated the cheatsheet --- cheatsheet.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/cheatsheet.md b/cheatsheet.md index eba705e..fea3908 100644 --- a/cheatsheet.md +++ b/cheatsheet.md @@ -3,7 +3,7 @@ ##### Cloning your remote directory git clone -##### Checking that status of your local repository +##### Checking that status of your local repository - shows changed but not added files in red git status ##### Creating a new branch for you to work on @@ -20,4 +20,8 @@ ##### Moving files while preserving git history git mv - \ No newline at end of file + + +##### making a new branch whilst moving into it AT THE SAME TIME + git checkout -b + From 6e6eb56ccaf7fb4d32f6ffa5e1961683ca05cb5e Mon Sep 17 00:00:00 2001 From: jsms90 Date: Mon, 20 Feb 2017 03:14:18 +0000 Subject: [PATCH 29/43] remove content covered in prereqs, precourse & research topics --- README.md | 163 +++++++++--------------------------------------------- 1 file changed, 27 insertions(+), 136 deletions(-) diff --git a/README.md b/README.md index c939d6f..3b665bb 100644 --- a/README.md +++ b/README.md @@ -1,108 +1,51 @@ -# Introduction to Git and Version Control +# Learn git -This tutorial is targeted towards the students of courses at [Founders & Coders](http://foundersandcoders.org/). Feedback or Suggestions in the format of an issue or contributions as a pull request are appreciated. - -As a student, if you get stuck at any point, please open an issue and I will try to get back to you as soon as possible. If you would prefer, feel free to contact me on Gitter. When the issue is solved, do think about making a pull request to the project. - -The introduction to Git is aimed at the first week of the full time Founders & Coders course, or to those just starting out with git. The hope is that this introduction will cover all you need to know to start collaborating on code with your fellow teammates. - -Git for Collaboration is aimed at the second week students of the course, or those that have mastered the first section. Even though most of the advice in this tutorial will take a while to digest - and practise is essential. A good goal is to understand all these concepts, and implement at least most of these tips in your collaborative projects before finishing your time as a student at Founders & Coders. +This workshop is designed for collaborative learning, so grab a partner and use one computer. It has been made for students of [Founders and Coders](www.founderandcoders.com), and therefore assumes that you have: ++ created a one-page website before (as part of the [prerequisites](www.founderandcoders.com/apply)) ++ completed lesson 1 of [Udacity's Git and GitHub course](https://www.udacity.com/course/how-to-use-git-and-github--ud775) (as part of the [precourse material](https://github.com/foundersandcoders/master-reference/tree/master/coursebook/precourse)) ++ created issues on each other's website (as part of [this accessibilty workshop](https://github.com/jsms90/web-accessibility/blob/master/putting-yourself-in-someone-elses-shoes.md#exercises) on [day 1](https://github.com/foundersandcoders/master-reference/tree/master/coursebook/week-1) of the course) +**All contributions to this workshop are very welcome!** If you have any suggestions for improvements, please raise an issue. Pull requests are also very much appreciated, but please follow the [contributing guidelines](./CONTRIBUTING.md). # Contents -#### [Introduction](#introduction) -1. [Need to Know Terminology](#terminology) -2. [Why Version Control](#version-control) -3. [Tutorial](#tutorial) - * [Getting Started](#getting-started) - * [Branching](#branching) - * [Making Changes](#changes) - * [Merging with Master](#merging) - * [Merge Conflicts](#conflicts) - * [Changing File Structure](#changing-file-structure) -4. [Introducing Github Flow](#github-flow) - -#### [Git for Collaboration](#git-collaboration) -1. [Further terminology](#further-terminology) -2. [The Timeline](#timeline) -3. [Committing](#commits) - * [When should you commit](#when-commit) - * [Commit messages](#commit-message) - * [Merging commits](#merging-commits) +1. [Introducing Github Flow](#github-flow) +2. [Tutorial](#tutorial) +* [Getting Started](#getting-started) +* [Branching](#branching) +* [Making Changes](#changes) +* [Merging with Master](#merging) +* [Merge Conflicts](#conflicts) +* [Changing File Structure](#changing-file-structure) + +3. [Git for Collaboration](#git-collaboration) +* [Further terminology](#further-terminology) +* [The Timeline](#timeline) #### [Resources](#resources) + +## GitHub Flow +Start by brushing up on the basic [GitHub workflow](https://guides.github.com/introduction/flow/) - - -# Introduction - -The introduction to Git is aimed at the first week of the full time Founders & Coders course, or to those just starting out with git. The hope is that this introduction will cover all you need to know to start collaborating on code with your fellow teammates. - - - -## Terminology - -##### *Repository (repo)* -Simply put, this is your project folder. This repository can be located locally (in your file system on your computer), or remotely (on Github). Either way, it is the same repository. - -##### *Version Control* -We will use Git for this. A way of keeping track of changes in the code which makes it possible to work with multiple developers on the same repo. - -##### *Git* -A version control system. - -##### *Github* -A remote location where you can store you code, and which all the members of the team have access to. Think of it like a dropbox for code. One of the big differences however is most repositories on github are public. Anybody can see your code. - -##### *Commit* -A way of saving your code at different points along the project. Unlike many tools you may have used however, all commits are saved. This creates a project history and a way to track changes. - -##### *Branches* -As you work on a git repo the first branch you are on is usually the default branch. This is often called `master`. If you start working on a section of the website (say the footer styling), it is best practise to create your own branch for that feature. Creating your own branch is like taking a copy of `master` and renaming it. When you commit, they will now be on that new branch only. +**Branches** +As you work on a git repo the first branch you are on is usually the default branch. This is called `master`. If you start working on a section of the website (say the footer styling), it is best practise to create your own branch for that feature. Creating your own branch is like taking a copy of `master` and renaming it. When you commit, they will now be on that new branch only. In the sections below we will walk through how to do this. For the meantime, just note that you always have one default branch, and can have as many other branches as needed. - -## Why Version Control - -##### Code Base History -Git can provide you with a complete history of every commit made on a project. Benefits include: - -* Being able to see what differences to the file system you have made before you have commited. - -* Being able to see what differences exist between commits - -* Being able to move between different commits (or places in time). This is especially useful if something became broken while you were working on it, and you need to start again. - -In the introduction section of this tutorial, we won't be able to cover all these benefits in practise extensively. However, we will aim to give you all the information you will need to know by the end. - -##### Multiple people working on the same files +**Multiple people working on the same files** Version control makes this possible. If you work on one file, and then I work on the same file at the same time when we want to combine our changes git allows us to keep both versions save that we can compare. This allows us to integrate our changes more swiftly. We will practice with this later. -##### Branching -A good work flow with git always involves branching. Having branches helps organise the code, and keep track of who is working on what. - ## Tutorial -Before we begin, if you don't have a Github account, please get one. - Next please fork this repository. ![fork button on github](./img/fork.png) -On your local machine, please make sure you have git installed. - -If you are using a mac, the easiest thing is to install git with [Homebrew](http://brew.sh/). Want to learn more about Homebrew? Check out this [tutorial](http://computers.tutsplus.com/tutorials/homebrew-demystified-os-xs-ultimate-package-manager--mac-44884). - -Windows use http://git-scm.com/download/win. and Linux install using these instructions http://git-scm.com/download/linux. - - ### Getting Started The next step is to clone the forked version of this repository. On the main page of the repo, copy the url shown here: @@ -121,7 +64,7 @@ Next, it is good to get in the habit after each command to use `git status`. Let ``` git status -```` +``` Now check which branch you are on: @@ -310,22 +253,11 @@ The command also takes optional parameters. To find out more, refer to [document - -## Github Flow -Github flow is what most teams at Founders & Coders follow. It is simple and effective. - -For a visual guide, and some helpful tips: -https://guides.github.com/introduction/flow/ - -To find out why Github uses Github flow: -http://scottchacon.com/2011/08/31/github-flow.html - - # Git for Collaboration -Git for Collaboration is aimed at the second week students of the course, or those that have mastered the first section. Even though most of the advice in this tutorial will take a while to digest - and practise is essential. A good goal is to understand all these concepts, and implement at least most of these tips in your collaborative projects before finishing your time as a student at Founders & Coders. +Even though most of the advice in this tutorial will take a while to digest - and practise is essential. A good goal is to understand all these concepts, and implement at least most of these tips in your collaborative projects before finishing your time as a student at Founders & Coders. @@ -372,7 +304,7 @@ You should see something like this: Pick the second time commit that you made and copy the hash. Use `q` to exit the log and checkout to your commit. -Step 4) +Step 4) ``` git checkout git status @@ -394,47 +326,6 @@ Checkout back to `timeline-practise` and push up to Github to make a pull reques it is up to date with master locally. - -## Committing - - - -### When should you commit? - -You should aim each commit to be a "safe" version of the project. This means that if you checkout to any commit in your timeline, that should reflect where the project was at that point, and be functional. - -Given that, when you commit is very important. I have heard two very useful guidelines. - -The first, is that as you complete the task assigned to you, you make several commits at different times during that task. In the end you merge all those commits together to make one very informative commit of that task. I will talk about ways to merge commits together in a later section. - -The second method is you work through your task and complete it before adding or committing at all. Then you check the status of the repo and see all the files you have changed. The next step is selectively adding and committing - -Through my research I have come across many different methodologies, and ultimately you should try to do what seems the most natural to you. I use both of these methodologies depending on the extent of the task before me. The best thing is to always keep in mind that you and your colleagues will inevitably need to go back to your commits and it will help everyone if commits are aptly named. - -Likewise, even in pull requests, you must aim to make your commits a clear and concise summary of what tasks where completed on that branch. That way the person reviewing your pull request understands what they will be reviewing before looking at the code itself. - - - -### Commit messages - -Just like choosing when to commit, and what to commit, it is also important to think about your naming. It is always good to be as descriptive as possible with your commit messages. - -Also consider: -* Present tense for your commit messages -* If related to an issue on github, should contain issue number -* The first line should be 50 characters or less. Your message should be brief and to the point. -* Focus on why you did something, not how you did it -* Avoid `ands`. If you find yourself wanting to write `and`, you should probably break up that commit into multiple ones. - -Remember that the purpose of this commit is to be a message for future you, or your colleagues who may not have known what you are working on. Try to think about your message with this in mind. - -Many development teams take it one step further and turn their commit messages into change logs. These change logs may be used for user consumption making it all the more important to have clear messages of what was done for that commit. - -I tend to favour one line commits for simplicity, but many schools of thought out there prefer multiline commit messages. For examples of "best practice" formats for this see: -* [Commit message guidelines Angular](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format) -* [Informative guidelines, and a cute cat filled slideshow](http://www.slideshare.net/TarinGamberini/commit-messages-goodpractices) - - ### Merging Commits From 2474b2d5047687a5bf2493e50fba00e58529c23d Mon Sep 17 00:00:00 2001 From: jsms90 Date: Mon, 20 Feb 2017 03:20:00 +0000 Subject: [PATCH 30/43] fix bullet points in contents --- README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3b665bb..ea7459f 100644 --- a/README.md +++ b/README.md @@ -10,30 +10,30 @@ This workshop is designed for collaborative learning, so grab a partner and use # Contents 1. [Introducing Github Flow](#github-flow) 2. [Tutorial](#tutorial) -* [Getting Started](#getting-started) -* [Branching](#branching) -* [Making Changes](#changes) -* [Merging with Master](#merging) -* [Merge Conflicts](#conflicts) -* [Changing File Structure](#changing-file-structure) + + [Getting Started](#getting-started) + + [Branching](#branching) + + [Making Changes](#changes) + + [Merging with Master](#merging) + + [Merge Conflicts](#conflicts) + + [Changing File Structure](#changing-file-structure) 3. [Git for Collaboration](#git-collaboration) -* [Further terminology](#further-terminology) -* [The Timeline](#timeline) + + [Further terminology](#further-terminology) + + [The Timeline](#timeline) -#### [Resources](#resources) +4. [Resources](#resources) ## GitHub Flow Start by brushing up on the basic [GitHub workflow](https://guides.github.com/introduction/flow/) -**Branches** +**Branches** As you work on a git repo the first branch you are on is usually the default branch. This is called `master`. If you start working on a section of the website (say the footer styling), it is best practise to create your own branch for that feature. Creating your own branch is like taking a copy of `master` and renaming it. When you commit, they will now be on that new branch only. In the sections below we will walk through how to do this. For the meantime, just note that you always have one default branch, and can have as many other branches as needed. -**Multiple people working on the same files** +**Multiple people working on the same files** Version control makes this possible. If you work on one file, and then I work on the same file at the same time when we want to combine our changes git allows us to keep both versions save that we can compare. This allows us to integrate our changes more swiftly. We will practice with this later. From e6a6ef576c49108d54ca23485a5350a1945e7a7b Mon Sep 17 00:00:00 2001 From: jsms90 Date: Mon, 20 Feb 2017 03:35:10 +0000 Subject: [PATCH 31/43] correct formatting issues & change wording to be appropriate for current cohort --- README.md | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index ea7459f..761ddfe 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ This workshop is designed for collaborative learning, so grab a partner and use + [Changing File Structure](#changing-file-structure) 3. [Git for Collaboration](#git-collaboration) - + [Further terminology](#further-terminology) + + [Terminology](#terminology) + [The Timeline](#timeline) 4. [Resources](#resources) @@ -30,15 +30,10 @@ Start by brushing up on the basic [GitHub workflow](https://guides.github.com/in **Branches** As you work on a git repo the first branch you are on is usually the default branch. This is called `master`. If you start working on a section of the website (say the footer styling), it is best practise to create your own branch for that feature. Creating your own branch is like taking a copy of `master` and renaming it. When you commit, they will now be on that new branch only. -In the sections below we will walk through how to do this. For the meantime, just note that you always have one default branch, and can have as many other branches as needed. - **Multiple people working on the same files** Version control makes this possible. If you work on one file, and then I work on the same file at the same time when we want to combine our changes git allows us to keep both versions save that we can compare. This allows us to integrate our changes more swiftly. -We will practice with this later. - - ## Tutorial @@ -257,11 +252,8 @@ The command also takes optional parameters. To find out more, refer to [document # Git for Collaboration -Even though most of the advice in this tutorial will take a while to digest - and practise is essential. A good goal is to understand all these concepts, and implement at least most of these tips in your collaborative projects before finishing your time as a student at Founders & Coders. - - - -## Further Terminology + +## Terminology ##### Commit Hash: ![commit hash picture](./img/commit-hash.png) @@ -273,9 +265,9 @@ Simply put, the HEAD is a reference to a commit object. For more information see ## The Timeline -As discussed previously git stores all the commits on the project. You can use them as a timeline and travel back and forth in time. This section shows you a simple way of doing that which will come in handy as you work in projects with your team. +As you know from the Udacity course, git stores all the commits on the project. You can use them as a timeline and travel back and forth in time. This section reminds you how to do that, which will come in handy as you work in projects with your team. -Before we start make sure you have a terminal open located at the local copy of this repo. The same one that was used for the first tutorial is essential. Make a new branch called `timeline-practice` and navigate onto it. +Make a new branch called `timeline-practice` and navigate onto it. Step 1) Make a new directory in the project via the command line. Lets call it `time`. @@ -292,6 +284,7 @@ open time/newfile.txt Write the current time stamp, and a short message to your future self. Save it. Next add and commit your changes. Your commit message should be descriptive of what you just did. Repeat step 2 twice more, deleting the previous time and message, and adding the new time and a different message. Make sure you add and commit each time. Make sure your commit messages are unique, and you can tell which one was first, second, and third. + Step 3) Next type in this command: ``` @@ -304,6 +297,7 @@ You should see something like this: Pick the second time commit that you made and copy the hash. Use `q` to exit the log and checkout to your commit. + Step 4) ``` git checkout @@ -313,7 +307,7 @@ git status ![git detached head warning](./img/detached-head.png) -As you can see after you checkout a message appears informing your that you are in a 'detached HEAD' state, meaning your are not working on any current branch. Open up the file in the time folder and look at the time and message. It should be the 2nd one that you wrote. +As you can see after you checkout a message appears informing you that you are in a 'detached HEAD' state, meaning your are not working on any current branch. Open up the file in the time folder and look at the time and message. It should be the 2nd one that you wrote. Repeat step 4, and use the hash of the first time commit you made. Open the file and see that the time of your first commit, and your message to yourself. This is going back in time. You can easily go back as far as you like in the project and see older iterations of this tutorial! @@ -322,8 +316,7 @@ Next, we should go back to the future. The quickest and easiest way is to checko ![git reflog example](./img/git-reflog.png) Find the commit name of the last commit you did (the third time that you recorded) and copy the short hash in yellow. Checkout back to that commit, and `git diff timeline-practise` there should be no difference. -Checkout back to `timeline-practise` and push up to Github to make a pull request to master. Make sure you first check that -it is up to date with master locally. +Checkout back to `timeline-practise` and push up to Github to make a pull request to master. Make sure you first check that it is up to date with master locally. From c9a5b05189c46bb81c4da5646a6705d8d5b2ec18 Mon Sep 17 00:00:00 2001 From: jsms90 Date: Mon, 20 Feb 2017 03:49:59 +0000 Subject: [PATCH 32/43] update intro --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 761ddfe..2bd1c9f 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,8 @@ # Learn git -This workshop is designed for collaborative learning, so grab a partner and use one computer. It has been made for students of [Founders and Coders](www.founderandcoders.com), and therefore assumes that you have: -+ created a one-page website before (as part of the [prerequisites](www.founderandcoders.com/apply)) -+ completed lesson 1 of [Udacity's Git and GitHub course](https://www.udacity.com/course/how-to-use-git-and-github--ud775) (as part of the [precourse material](https://github.com/foundersandcoders/master-reference/tree/master/coursebook/precourse)) -+ created issues on each other's website (as part of [this accessibilty workshop](https://github.com/jsms90/web-accessibility/blob/master/putting-yourself-in-someone-elses-shoes.md#exercises) on [day 1](https://github.com/foundersandcoders/master-reference/tree/master/coursebook/week-1) of the course) +This workshop has been made for students of [Founders and Coders](www.founderandcoders.com), and therefore assumes that you have completed lesson 1 of [Udacity's Git and GitHub course](https://www.udacity.com/course/how-to-use-git-and-github--ud775) (as part of the [precourse material](https://github.com/foundersandcoders/master-reference/tree/master/coursebook/precourse)) -**All contributions to this workshop are very welcome!** If you have any suggestions for improvements, please raise an issue. Pull requests are also very much appreciated, but please follow the [contributing guidelines](./CONTRIBUTING.md). +**All contributions to this workshop are very welcome!** If you have any suggestions for improvements, please raise an [issue](https://github.com/NataliaLKB/learn-git-basics/issues). [Pull requests](https://github.com/jsms90/learn-git-basics/pulls) are also very much appreciated, but please follow the [contributing guidelines](https://github.com/foundersandcoders/master-reference/blob/master/CONTRIBUTING.md). # Contents 1. [Introducing Github Flow](#github-flow) From d757be5e67d3ff8b28655b70ffcefd4bf6bc0ac5 Mon Sep 17 00:00:00 2001 From: PiotrBerebecki Date: Mon, 20 Feb 2017 16:38:37 +0000 Subject: [PATCH 33/43] Fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2bd1c9f..5da8be6 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ Then use the command in your terminal: git clone https://github.com/NataliaLKB/learn-git-basics.git ``` -You should now be ablle to redirect into the directory just created using the command line. +You should now be able to redirect into the directory just created using the command line. Next, it is good to get in the habit after each command to use `git status`. Let us use it now. From 72679e9934ec391544d045f6e5542cc6f53cb69f Mon Sep 17 00:00:00 2001 From: PiotrBerebecki Date: Mon, 20 Feb 2017 17:04:11 +0000 Subject: [PATCH 34/43] Fix a command --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5da8be6..4e3c052 100644 --- a/README.md +++ b/README.md @@ -233,7 +233,7 @@ index.html In order to achieve this, `git mv` command comes in handy. Using it to move files *ensures preserving history* of the files you work on. To change file structure like above (and create new folders at the same time) use command: ``` mkdir css && git mv stylesheet.css ./css -mkdir css && git mv script.js ./js +mkdir js && git mv script.js ./js ``` (This glues `mkdir` and `git mv` commands together with `&&` operator). From 242f4710539bd1e3c9120e39549909992b7654c0 Mon Sep 17 00:00:00 2001 From: PiotrBerebecki Date: Mon, 20 Feb 2017 17:33:41 +0000 Subject: [PATCH 35/43] Fix typ: changes -> change --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4e3c052..3a1ca2d 100644 --- a/README.md +++ b/README.md @@ -334,7 +334,7 @@ git status git log ``` -Your working directory shouldn't changes, but all the files that you changed should be in green. Your log should have the newest commit as the hash you copied. Even though all your work is still the same as before the reset, the commits are different. Then you can commit again and this is an easy way to replace 2 or more commits with one commit. +Your working directory shouldn't change, but all the files that you changed should be in green. Your log should have the newest commit as the hash you copied. Even though all your work is still the same as before the reset, the commits are different. Then you can commit again and this is an easy way to replace 2 or more commits with one commit. For more information and techiques see: From d4e72319237bf63b1cdf2ad3f5dc98a319822e39 Mon Sep 17 00:00:00 2001 From: smarthutza Date: Tue, 21 Feb 2017 12:31:50 +0000 Subject: [PATCH 36/43] adding new command in the cheatsheet --- cheatsheet.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cheatsheet.md b/cheatsheet.md index eba705e..e6d5dad 100644 --- a/cheatsheet.md +++ b/cheatsheet.md @@ -20,4 +20,6 @@ ##### Moving files while preserving git history git mv - \ No newline at end of file + +##### Creates a branch, and moves you onto it at the same time + git checkout -b From d8c629c2f37133a70368a704e4a08c18e824b5e5 Mon Sep 17 00:00:00 2001 From: jsms90 Date: Sat, 27 May 2017 09:25:13 +0100 Subject: [PATCH 37/43] reintroduce Committing section relates #1 --- README.md | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3a1ca2d..f265ebd 100644 --- a/README.md +++ b/README.md @@ -313,7 +313,49 @@ Next, we should go back to the future. The quickest and easiest way is to checko ![git reflog example](./img/git-reflog.png) Find the commit name of the last commit you did (the third time that you recorded) and copy the short hash in yellow. Checkout back to that commit, and `git diff timeline-practise` there should be no difference. -Checkout back to `timeline-practise` and push up to Github to make a pull request to master. Make sure you first check that it is up to date with master locally. +Checkout back to `timeline-practise` and push up to Github to make a pull request to master. Make sure you first check that +it is up to date with master locally. + + + +## Committing + + + +### When should you commit? + +You should aim each commit to be a "safe" version of the project. This means that if you checkout to any commit in your timeline, that should reflect where the project was at that point, and be functional. + +Given that, when you commit is very important. I have heard two very useful guidelines. + +The first, is that as you complete the task assigned to you, you make several commits at different times during that task. In the end you merge all those commits together to make one very informative commit of that task. I will talk about ways to merge commits together in a later section. + +The second method is you work through your task and complete it before adding or committing at all. Then you check the status of the repo and see all the files you have changed. The next step is selectively adding and committing + +Through my research I have come across many different methodologies, and ultimately you should try to do what seems the most natural to you. I use both of these methodologies depending on the extent of the task before me. The best thing is to always keep in mind that you and your colleagues will inevitably need to go back to your commits and it will help everyone if commits are aptly named. + +Likewise, even in pull requests, you must aim to make your commits a clear and concise summary of what tasks where completed on that branch. That way the person reviewing your pull request understands what they will be reviewing before looking at the code itself. + + + +### Commit messages + +Just like choosing when to commit, and what to commit, it is also important to think about your naming. It is always good to be as descriptive as possible with your commit messages. + +Also consider: +* Present tense for your commit messages +* If related to an issue on github, should contain issue number +* The first line should be 50 characters or less. Your message should be brief and to the point. +* Focus on why you did something, not how you did it +* Avoid `ands`. If you find yourself wanting to write `and`, you should probably break up that commit into multiple ones. + +Remember that the purpose of this commit is to be a message for future you, or your colleagues who may not have known what you are working on. Try to think about your message with this in mind. + +Many development teams take it one step further and turn their commit messages into change logs. These change logs may be used for user consumption making it all the more important to have clear messages of what was done for that commit. + +I tend to favour one line commits for simplicity, but many schools of thought out there prefer multiline commit messages. For examples of "best practice" formats for this see: +* [Commit message guidelines Angular](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format) +* [Informative guidelines, and a cute cat filled slideshow](http://www.slideshare.net/TarinGamberini/commit-messages-goodpractices) @@ -334,7 +376,7 @@ git status git log ``` -Your working directory shouldn't change, but all the files that you changed should be in green. Your log should have the newest commit as the hash you copied. Even though all your work is still the same as before the reset, the commits are different. Then you can commit again and this is an easy way to replace 2 or more commits with one commit. +Your working directory shouldn't changes, but all the files that you changed should be in green. Your log should have the newest commit as the hash you copied. Even though all your work is still the same as before the reset, the commits are different. Then you can commit again and this is an easy way to replace 2 or more commits with one commit. For more information and techiques see: From a8733d37b245eef996f8949337e45a0373ad28de Mon Sep 17 00:00:00 2001 From: jsms90 Date: Sat, 27 May 2017 09:41:32 +0100 Subject: [PATCH 38/43] add 'Committing' section to contents relates #1 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f265ebd..05c87d2 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ This workshop has been made for students of [Founders and Coders](www.founderand 3. [Git for Collaboration](#git-collaboration) + [Terminology](#terminology) + [The Timeline](#timeline) + + [Committing](#committing) 4. [Resources](#resources) From 1d57a76a33a635a75f543acd752fc05a323f721a Mon Sep 17 00:00:00 2001 From: jsms90 Date: Sat, 27 May 2017 09:48:28 +0100 Subject: [PATCH 39/43] reword requests for students to make PRs & remove mention of jsms90 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 05c87d2..777d197 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ This workshop has been made for students of [Founders and Coders](www.founderandcoders.com), and therefore assumes that you have completed lesson 1 of [Udacity's Git and GitHub course](https://www.udacity.com/course/how-to-use-git-and-github--ud775) (as part of the [precourse material](https://github.com/foundersandcoders/master-reference/tree/master/coursebook/precourse)) -**All contributions to this workshop are very welcome!** If you have any suggestions for improvements, please raise an [issue](https://github.com/NataliaLKB/learn-git-basics/issues). [Pull requests](https://github.com/jsms90/learn-git-basics/pulls) are also very much appreciated, but please follow the [contributing guidelines](https://github.com/foundersandcoders/master-reference/blob/master/CONTRIBUTING.md). +**All contributions to this workshop are very welcome!** If you have any suggestions for improvements, please raise an [issue](https://github.com/NataliaLKB/learn-git-basics/issues). The author will let you know whether they prefer to make the changes themselves, or whether you are welcome to submit your own PR (Pull Request). If you do make PR yourself, please follow the Founders and Coders [contributing guidelines](https://github.com/foundersandcoders/master-reference/blob/master/CONTRIBUTING.md). # Contents 1. [Introducing Github Flow](#github-flow) From 1f6e09b5a930f1a065813a9584eed9449c55cff4 Mon Sep 17 00:00:00 2001 From: jsms90 Date: Sat, 27 May 2017 10:30:43 +0100 Subject: [PATCH 40/43] improve explanation in github flow section relates https://github.com/NataliaLKB/learn-git-basics/issues/74 --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 777d197..123fc1d 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ This workshop has been made for students of [Founders and Coders](www.founderand # Contents 1. [Introducing Github Flow](#github-flow) -2. [Tutorial](#tutorial) +2. [Git Basics](#git-basics) + [Getting Started](#getting-started) + [Branching](#branching) + [Making Changes](#changes) @@ -23,17 +23,16 @@ This workshop has been made for students of [Founders and Coders](www.founderand ## GitHub Flow -Start by brushing up on the basic [GitHub workflow](https://guides.github.com/introduction/flow/) +Version control makes it possible for you and I to work on one file at the same time, because we can keep both our versions saved and then compare them later, once we have each finished our work. This allows us to integrate our changes more swiftly. Most developers use git as their version control system, but different teams use different "workflows". At Founders and Coders, we generally follow something called "GitHub flow", because this flow makes it easy to deploy the latest version of your application very regularly. -**Branches** -As you work on a git repo the first branch you are on is usually the default branch. This is called `master`. If you start working on a section of the website (say the footer styling), it is best practise to create your own branch for that feature. Creating your own branch is like taking a copy of `master` and renaming it. When you commit, they will now be on that new branch only. +You will be using GitHub flow throughout your time on the course. Follow GitHub's [visual guide](https://guides.github.com/introduction/flow/) now to see the steps involved in working on a "feature branch". +Creating your own "branch" is like taking a copy of `master` and renaming it. When you commit, the changes that you make will only exist on that branch. As you work on a GitHub repo, the first branch you are on is the default branch, called `master`. If you wanted to start working on a new section of the website (say the footer styling), it is best practise to create a new branch for working on that feature. -**Multiple people working on the same files** -Version control makes this possible. If you work on one file, and then I work on the same file at the same time when we want to combine our changes git allows us to keep both versions save that we can compare. This allows us to integrate our changes more swiftly. +If you are curious about why this flow was chosen, you can find some links in the resources below. - -## Tutorial + +## Git Basics Next please fork this repository. @@ -393,6 +392,7 @@ For more information and techiques see: > Have you ***found a useful Git or GitHub resource or tutorial? Please let us know*** by creating an issue +* Why you GitHub flow? Read this article from a developer at GitHub: http://scottchacon.com/2011/08/31/github-flow.html * For generating ssh keys https://help.github.com/articles/generating-ssh-keys/ * CodeSchool "Git Real" tutorial: http://gitreal.codeschool.com/ * Atlassian (makers of *SourceTree*) Git Tutorials: https://www.atlassian.com/git/tutorials/ From 66fe50fbad11fd2f15c421dc62cb1eba16329913 Mon Sep 17 00:00:00 2001 From: jsms90 Date: Sat, 27 May 2017 10:43:30 +0100 Subject: [PATCH 41/43] break up the github flow paragraph & make the instruction to follow the link much clearer relates https://github.com/NataliaLKB/learn-git-basics/issues/74 --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 123fc1d..22efdc7 100644 --- a/README.md +++ b/README.md @@ -23,13 +23,15 @@ This workshop has been made for students of [Founders and Coders](www.founderand ## GitHub Flow -Version control makes it possible for you and I to work on one file at the same time, because we can keep both our versions saved and then compare them later, once we have each finished our work. This allows us to integrate our changes more swiftly. Most developers use git as their version control system, but different teams use different "workflows". At Founders and Coders, we generally follow something called "GitHub flow", because this flow makes it easy to deploy the latest version of your application very regularly. +Version control makes it possible for you and I to work on one file at the same time, because we can keep both our versions saved and then compare them once we have each finished our work. This allows us to integrate our changes more swiftly. -You will be using GitHub flow throughout your time on the course. Follow GitHub's [visual guide](https://guides.github.com/introduction/flow/) now to see the steps involved in working on a "feature branch". +Most developers use git as their version control system, but different teams use different "workflows". At Founders and Coders, we generally follow something called "GitHub flow", because this flow makes it easy to deploy the latest version of your application very regularly. For a fuller explanation, there is a useful article in the resources section below. +To see the steps involved in working on a "feature branch", follow GitHub's [visual guide](https://guides.github.com/introduction/flow/) now. + +**What is a branch?** Creating your own "branch" is like taking a copy of `master` and renaming it. When you commit, the changes that you make will only exist on that branch. As you work on a GitHub repo, the first branch you are on is the default branch, called `master`. If you wanted to start working on a new section of the website (say the footer styling), it is best practise to create a new branch for working on that feature. -If you are curious about why this flow was chosen, you can find some links in the resources below. ## Git Basics From 991f95ebf6e715bc787b50ab68b4c6eff7791c2e Mon Sep 17 00:00:00 2001 From: jsms90 Date: Mon, 29 May 2017 18:23:33 +0100 Subject: [PATCH 42/43] add links to the github flow section relates #74 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 22efdc7..5db1cff 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ This workshop has been made for students of [Founders and Coders](www.founderand ## GitHub Flow Version control makes it possible for you and I to work on one file at the same time, because we can keep both our versions saved and then compare them once we have each finished our work. This allows us to integrate our changes more swiftly. -Most developers use git as their version control system, but different teams use different "workflows". At Founders and Coders, we generally follow something called "GitHub flow", because this flow makes it easy to deploy the latest version of your application very regularly. For a fuller explanation, there is a useful article in the resources section below. +[Most developers use git as their version control system](https://rhodecode.com/insights/version-control-systems-2016), but different teams use different "workflows". At Founders and Coders, we generally follow something called "GitHub flow", because this flow makes it easy to deploy the latest version of your application very regularly. For a fuller explanation, there is a useful article in the [resources section](#resources). To see the steps involved in working on a "feature branch", follow GitHub's [visual guide](https://guides.github.com/introduction/flow/) now. From d0c0bf977e7a47ba58965c4d80f986731bf537f7 Mon Sep 17 00:00:00 2001 From: Tomasz_Wojtyniak <> Date: Wed, 7 Jul 2021 10:16:31 +0200 Subject: [PATCH 43/43] once again --- cheatsheet.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cheatsheet.md b/cheatsheet.md index 10e0755..ac501f6 100644 --- a/cheatsheet.md +++ b/cheatsheet.md @@ -10,7 +10,7 @@ git fetch --all ##### Checking that status of your local repository - shows changed but not added files in red - git status + git status ##### Moving your changes to the staging area git add @@ -31,7 +31,7 @@ git pull origin ##### Moving files while preserving git history - git mv + git mv ##### Creates a branch, and moves you onto it AT THE SAME TIME - git checkout -b