Gitlab Workflow Project Management🔗
One goal of using Gitlab is to not clobber other contributers' work, even when working on different features and recombining new code. Using it to manage a personal project will help you keep a history of your code, plan out what you want to add, and share your work so others can contribute or work on their own version.
For a fuller perspective on why we try to
branch into development code to add features then
merge that code back into our previous work,
here is a post from gitlab with some nice diagrams.
It's not important to understand every detail, but it highlights some best practices like using informative names and comments.
For motivation on why a system like git makes sense to use, here's a brief, not-so-technical post 'the git parable' by Tom Preston-Werner
Action Item: Clone the Site🔗
Your first task, which will hopefully be a useful example to reference in the future, is to change up this website by adding your information to the main page.
NOTE: You only have to do this once per project / repository.
- Navigate to the project website:
- Open a new
Terminalwindow (or Git Bash / Powershell on Windows) and enter the following commands one by one (you can replace
web-resourceswith whatever folder name and
dev-YOURNAMEHEREwith something like
dev-gb, just make sure to use the same every time,
TYPSO ARE BAD)
Now you should have a folder with all the code for the site called
web-resources, probably in your Home directory ('~/web-resources'). If you want to understand what's happening with these folders, check out my
Start a feature / development branch🔗
Make sure you Change Directories in the Terminal to your
/web-resources/ folder, then start a branch to work on (you can name it anything, easy to remember and spell is best)
NOTE: If you've already started a branch and are returning to working on it, you might not need this step, but may want to update your branch with code that others have added to master.
Update feature branch to master🔗
When returning to working on a project it's usually a good idea to use
git status to find what branch you're on,
git fetch to download any files that are new on the server, and
git pull origin BRANCHNAME to update your local files if needed.
To make future merges easier and access others' code contributions, it is good to occasionally fetch changes from master and merge them into our feature / dev branch. I'll copy commands from this gist, see the link for more explanation. This is similar to 'rebasing'
This may get you into Vim to complete the merge, see Common Issues below (or
Once the merge is done you can
git checkout YOUR-FEATURE-BRANCH-NAME, work on it, add, commit, and finally
git push origin YOUR-FEATURE-BRANCH-NAME
Record what you're doing🔗
When working on a new feature, we want to tell everyone that we're working on it in Issues
- To tell the rest of the team what Issue / Task you're working on, go to the Issues -> Boards tab
- Click the
+Plus button on the top right of
Doingand add a comment about what you're improving like "Adding my name to the website" (try to be specific)
- Everyone can see that you are / were working on that task and that it needs to get done
- BONUS: If you want to get real fancy, include the number of your issue in the branch name (
#47, etc...) so that we can remember it and automatically set it to Done later
Make some edits🔗
- Add a headshot image to the folder
images/headshots/. For this example the filename will be
- Open up your Code Editor and open the file
- Add your name to the main page
- Save the file
Send your changes to the server🔗
Now we want to make your changes go live.
To do that, commit your code changes to the
dev-YOURBRANCHNAME branch, push it to the online server to be saved, merge it into the master branch, and finally update the live website with the master branch
If anything goes wrong in this process or to understand it better, see the references below
If you remembered your issue number above (let it be 47 for now), add
fixes #47 or
closes #47 to your git commit message below (in the double quotes) and it automatically goes from Doing / To Do to Done!
Merge your changes with the live / master branch🔗
Now you're changes are saved online, but on your development branch. When we merge it into the master branch there may be conflicts / overwrites that need to be resolved.
NOTE: This is the traditional (command line) way to merge, using git commands in the Terminal. If any conflicts or errors arise, scroll down to check common issues
- Using the gitlab site to might help you get fewer:
error: failed to push some refs to ......hangups
- Instead of the above commands, after you push your dev-YOURBRANCHNAME, navigate to the project page
- You should see a banner near the top like the following with the branch that you just pushed to (in this example
add-stylingbranch), click the
Create Merge Request: [TODO IMAGE]
- On the next screen you should assign the task of merging to yourself and add comments if you wish. Near the bottom you can observe the files and changes affected by the merge. Continue creating the merge request.
- Once all conflicts are sorted out (if any), a testing pipeline will run (if in place), and you'll be able to press the green
Mergebutton as below. (You don't need to check the
Delete Source branchbut you can always make a new branch): [TODO IMAGE]
Confirm your work on gitlab🔗
pipeline will be triggered to test and deploy your changes, which you can see in the CI/CD -> Pipelines tab
You can click through to the
pages job (either a blue semi circle or green check or red x) to see what the server is actually doing to execute your changes.
Hopefully that won't take too long and the Blue semi circle becomes a Green check (and not a Red x).
Now you can go back to the Issues -> Boards tab and drag your TO Do / Doing item to the Done Bin!
Check out the (main page)[TODO MAIN LINKE] to confirm your work.
Common Git Issues🔗
Created: June 7, 2023