This GitHub repo is a resource for Software Engineering students to get started with Revision Control Software, specifically, Git. It also covers some GitHub concepts.
-
Git overview video: First, watch this to get a quick overview of Git.
-
Try Git: Now, try this online Git simulation + tutorial to learn Git basics hands-on.
-
Install SourceTree on your Computer.
SourceTree comes with Git and a GUI for Git.
-
Follow this tutorial to try git commands for real.
Tip: This is how you open a Git command line window from SourceTree
-
Now you should be ready to start using Git. Here are two more resources to keep in mind:
- The Pro Git Book: An online version of probably the
most popular book on Git.
Use it as a reference when you want to learn a Git feature in more detail. - Use web search to find how to perform a Git task.
e.g. How to undo a Git commit
- The Pro Git Book: An online version of probably the
most popular book on Git.
- Learn some Git basics by following the Git learning resources given above.
- Create a local repo with some dummy content.
- Do some Git stuff on your repo. e.g.
- Edit some files in the repo,
stage
the changes, and acommit
. - Add a new file, stage it, and commit.
- Edit some files in the repo,
Prerequisite: [LO-GitLocal]
- Complete the GitHub HelloWorld tutorial.
- Use SourceTree to clone the HelloWorld repo you created in the previous step.
- Clone the same remote repo to another location of your computer
(let's call the two clones
clone1
andclone2
). - Do some commits in the
clone1
. push
the new commits to your remote repo on GitHub.pull
the new commits to yourclone2
.
-
Fork this repo to your GitHub account.
-
Clone the fork onto your Computer.
-
Add a text file
{YourName}.txt
to theusers
folder e.g.users/JayYong.txt
. Add some content to the file. Commit the changes. Suggested commit messageAdd {YourName}.txt
It's common practice to write commit message in imperative mood.
e.g.Add abc.txt
rather thanAdded abc.txt
orAdding abc.txt
. -
Push the commit to your fork.
-
Create a PR from your fork to this repo. The PR name should be
Add YourFileName
e.g.Add JayYong.txt
. -
When the PR is ready, add a comment with the text
Ready for review
.
-
Submit an issue in this repo's issue tracker. Issue name
Add {YourFullName-Intro.md}
e.g.Add JayYong-Intro.md
-
Create a branch in your local clone of this repo with the name
add-{YourFullName-Intro-md}
e.g.add-JayYong-Intro-md
-
Switch to the new branch.
-
Create a new file named
users/YourFullName-Intro.md
(e.g.users/JayYong-Intro.md
) in your local repo.
Add some info about yourself to the file and commit the changes in the new branch.When adding content to your file, you can use plain text or GitHub Flavored Markdown format in your file.
-
Push the branch to your fork.
-
Go to your fork on GitHub and create a PR for your new branch against the master branch of this repo.
-
When the PR is ready, add a comment with the text
Ready for review
.
When working as a team, you need to be able to write code in parallel and merge the code later. There are different workflows you can adopt for this purpose. The centralized workflow is one of the simplest.
This is a team exercise.
-
These steps are to be done by only one member of the team.
- Fork this repo to your account, if you haven't done that already. Let's call it the 'team fork'
- Give other team members push access to your fork.
-
These steps are to be done by all members.
- Clone the team fork to your computer.
- While staying in the
master
, add a new file to the repo with the name/centralized/{YourName}.txt
. e.g.centralized/JamesYong.txt
- Add some content into the file and commit it.
-
Now follow the centralized workflow (see link given above) to push your changes to the team fork.
- You can ignore references to SVN (in the workflow description). SVN is an older RCS tool. You can also ignore the bit about setting up the repo. As you are using a fork, there is no need to set it up.
- As team member is editing a different file, there should not be any merge conflicts.
This is a team exercise.
Prerequisites: LO-CentralizedWorkflow
- [Only one member] While staying in the
master
branch, create a file/centralized/{Team-ID}.txt
, commit, and push to the team fork. - [All members]
- Pull the master branch to your clone, add your own name as the first line of the file, and commit. Wait for other members to finish this step.
- Now try to push to the team fork. This is likely to create merge conflicts. Resolving them will give you an opportunity to learn how to resolve merge conflicts. More instructions about resolving conflicts can be found in the centralized workflow
This is a team exercise.
[Step 1: Only one member]
- Create a GitHub organization for your team.
- Fork a repo to that org: you can fork this repo or any other repo that you team members were previously working in.
- Add your team members as collaborators to that fork. Let's call it the team repo.
[Step 2: All members]
-
If you have a clone of the team repo on your computer (or a clone of any upstream version of the repo), add the team repo as a
remote
of that clone. Otherwise clone the team repo to your computer.Adding a remote using SourceTree
- Choose
Repository > Repository Settings
from the menu. - Click
Add
. - Copy-paste the team repo URL into the
URL/Path
box.
e.g.https://github.com/se-edu/rcs.git
(Note the.git
at the end) - Give a suitable name in the
Remote name
box. e.g.teamrepo
- Click
OK
.
- Choose
-
Now, each member add a feature to the code base using the feature branch workflow also known as the Github flow.
- Damith C. Rajapakse : Project Advisor
- Bug reports, Suggestions : Post in our issue tracker if you noticed bugs or have suggestions on how to improve.
- Contributing : We welcome pull requests. Follow the process described here