-
-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Git cheat sheet
This page is meant as a handy reference for some basic Git commands.
- Add a remote to link your local copy of the repository (cloned from your fork) to the main Oppia repository. Required for all the 'upstream' based commands below.
$ git remote add upstream https://github.com/oppia/oppia.git
- After making a local clone of Oppia, you can change code in your local
oppia/
directory. Git will track these changes. At any time, you can check what git thinks has been changed using:
$ git status
You can also view diffs of your changes by typing:
$ git diff
- To sync your local code with the latest updates from the GitHub repo, run:
$ git fetch upstream
$ git merge upstream/develop
- To download a branch someone else created:
$ git checkout -b {{branch-name}}
$ git pull https://github.com/{{their-repo-name}}/oppia.git {{branch-name}}
- To create a patch:
$ git checkout {{branch-to-patch-from}}
$ git format-patch -1 # goes back one commit
This should create a file with the extension .patch. The name should include part of the commit message from the change it is patching. You may need to move this file outside oppia/
so that it won't disappear when you switch branches.
- To apply a patch:
$ git checkout {{branch-to-patch-to}}
$ git apply {{patch-file-name}}
- To squash the last three commits into a single one:
git reset --soft HEAD~3 &&
git commit -m "{{YOUR_COMMIT_MESSAGE_HERE}}"
Be careful to only squash "local" commits -- never squash anything that has been uploaded to the codesite before (no matter what branch). In particular, don't squash commits that already have code review comments on them. Also, don't squash any commit that merged two branches.
If you want to squash commits that you previously pushed to GitHub, make a new local branch that includes the small commits, squash the commits locally, and push the new branch instead.
Have an idea for how to improve the wiki? Please help make our documentation better by following our instructions for contributing to the wiki.
Core documentation
Developing Oppia
- FAQs
- How to get help
- Getting started with the project
- How the codebase is organized
- Making your first PR
- Debugging
- Testing
- Codebase policies and processes
- Guidelines for launching new features
- Guidelines for making an urgent fix (hotfix)
- Testing jobs and other features on production
- Guidelines for Developers with Write Access to oppia/oppia
- Release schedule and other information
- Revert and Regression Policy
- Privacy aware programming
- Code review:
- Project organization:
- QA Testing:
- Design docs:
- Team-Specific Guides
- LaCE/CD:
- Developer Workflow:
Developer Reference
- Oppiabot
- Git cheat sheet
- Frontend
- Backend
- Backend Type Annotations
- Writing state migrations
- Calculating statistics
- Storage models
- Coding for speed in GAE
- Adding a new page
- Adding static assets
- Wipeout Implementation
- Notes on NDB Datastore transactions
- How to handle merging of change lists for exploration properties
- Instructions for editing roles or actions
- Protocol buffers
- Webpack
- Third-party libraries
- Extension frameworks
- Oppia-ml Extension
- Mobile development
- Performance testing
- Build process
- Best practices for leading Oppia teams
- Past Events