|
| 1 | +# Wanderlust Project |
| 2 | + |
| 3 | +## Overview |
| 4 | +Welcome to the Wanderlust project! This is a collaborative effort to build an amazing application. We appreciate your contributions and aim to make the process as smooth as possible. |
| 5 | + |
| 6 | +## Common QnA for Git and Open Source Contributions |
| 7 | + |
| 8 | +<details> |
| 9 | +<summary> |
| 10 | + |
| 11 | +### How can I know if I’m in a bad situation? |
| 12 | +</summary> |
| 13 | +I suggest you to run **`gitk`** or **`gitk --all`**. The commit tree should be self-explainatory. |
| 14 | + |
| 15 | +Also, if **`git log`** shows you any merge commits, this means that it isn’t properly synced with the upstream branch |
| 16 | +</details> |
| 17 | + |
| 18 | +### How to Hard Sync Master with Upstream |
| 19 | +To hard sync your local master branch with the upstream master branch, follow these steps in your main branch: |
| 20 | +``` |
| 21 | +git remote add upstream /url-to-original-repo |
| 22 | +git fetch upstream |
| 23 | +git reset --hard upstream/main |
| 24 | +git push origin main --force |
| 25 | +``` |
| 26 | +## Better commits |
| 27 | + |
| 28 | +You should not push what is not needed. Doing **`git commit -a`**, instead, commits just everything. This, often, is bad. |
| 29 | +You’d better use **`git add`** and, most of all, **`git add -p`** |
| 30 | +**`-p`** stays for “patch”: it will ask, for each “block” of code which you could commit, if you really want to commit it. |
| 31 | +It is very simple to use, and will make you more responsible about what you’re commiting. |
| 32 | + |
| 33 | +If you want to make sure about what you’re commiting, use **`git diff --cached`**, it will display the ready-to-commit changes. |
| 34 | +Also, I like to use **`git commit -v`**, which displays the diff as a comment, so that I can view it while writing the commit message. |
| 35 | + |
| 36 | +## Edit a commit |
| 37 | +Sometimes you committed something, but someone asks you to fix something, or you want to fix something yourself. Instead of making a new commit, you can also edit the previous commit(s). |
| 38 | + |
| 39 | +**`git reset --soft HEAD^`** (will reset the commit history to the previous commit. The —soft option makes sure the files don’t get reset too) |
| 40 | +Then edit whatever you want to edit |
| 41 | +**`git commit -a -v -c ORIG_HEAD`** (recommits with the same commit message. Because of the -v option, you can check if everything goes well) |
| 42 | + |
| 43 | +If you do this after pushing, you’ll have to use **`git push -f`** next time you try to push. |
| 44 | + |
| 45 | +## What should I do if I’m in a bad situation? |
| 46 | + |
| 47 | +[](https://github.com/emesene/emesene/wiki/GitHowTo#what-should-i-do-if-im-in-a-bad-situation) |
| 48 | + |
| 49 | +rebase. |
| 50 | +Just do **`git fetch main`** (fetch the latest changes from the upstream branch) |
| 51 | +**`git rebase upstream/main`** (rebase upon the upstream branch) |
| 52 | + |
| 53 | +Sometimes, if you have any merge commits in your branch, this won’t work. The best way to get rid of them is using **`git fetch upstream`** (this will fetch the latest changes of the upstream branch) and then do **`git reset --hard upstream/main`**. BE AWARE THAT THIS WILL THROW AWAY ALL YOUR CHANGES. |
| 54 | + |
| 55 | +If you want to keep your changes, you can put them in a different branch first **`git branch branchname`**. Now you’ll have a branch with your committed changes backed up. It’s now safe to reset. If you want to pull the changes back to your master branch, you could use **`git cherry-pick branchname 1234567890abcdef1234567890abcdef12345678`**, where 1234567890abcdef1234567890abcdef12345678 is the commit you want in your master branch. |
| 56 | + |
| 57 | + |
| 58 | +### Recovering from a bad merge or accidental deletion |
| 59 | +``` |
| 60 | +git reflog |
| 61 | +git reset HEAD@{index} |
| 62 | +``` |
| 63 | +### Amending the last commit |
| 64 | +``` |
| 65 | +git commit --amend --no-edit |
| 66 | +``` |
| 67 | + |
| 68 | +### Changing the last commit message |
| 69 | +``` |
| 70 | +git commit --amend |
| 71 | +``` |
| 72 | + |
| 73 | +### Undoing a commit from several commits ago |
| 74 | +``` |
| 75 | +git log |
| 76 | +git revert [saved hash] |
| 77 | +``` |
0 commit comments