From 54abb7087ba084c0877d46a3c14bd3a90a5ca5b3 Mon Sep 17 00:00:00 2001 From: Rushil Date: Mon, 10 Jun 2024 20:22:21 +0530 Subject: [PATCH] feat-#378: created readme for git conflicts --- GIT_CONFLICTS.md | 127 ++++++++++++++++++++++++++++------------------- 1 file changed, 75 insertions(+), 52 deletions(-) diff --git a/GIT_CONFLICTS.md b/GIT_CONFLICTS.md index b621ff6af..bd3b48e5e 100644 --- a/GIT_CONFLICTS.md +++ b/GIT_CONFLICTS.md @@ -1,77 +1,100 @@ -# Wanderlust Project - -## Overview -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. +## 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. ## Common QnA for Git and Open Source Contributions
- -### How can I know if I’m in a bad situation? +How can I know if I’m in a bad situation? -I suggest you to run **`gitk`** or **`gitk --all`**. The commit tree should be self-explainatory. -Also, if **`git log`** shows you any merge commits, this means that it isn’t properly synced with the upstream branch +- Run `gitk` or `gitk --all` to visualize the commit tree. +- Check if `git log` shows any merge commits, indicating a lack of proper synchronization with the upstream branch.
-### How to Hard Sync Master with Upstream +
+ +How to Hard Sync Master with Upstream + + To hard sync your local master branch with the upstream master branch, follow these steps in your main branch: -``` -git remote add upstream /url-to-original-repo -git fetch upstream -git reset --hard upstream/main -git push origin main --force -``` + +- `git remote add upstream /url-to-original-repo` +- `git fetch upstream` +- `git reset --hard upstream/main` +- `git push origin main --force` +
+ ## Better commits -You should not push what is not needed. Doing **`git commit -a`**, instead, commits just everything. This, often, is bad. -You’d better use **`git add`** and, most of all, **`git add -p`** -**`-p`** stays for “patch”: it will ask, for each “block” of code which you could commit, if you really want to commit it. -It is very simple to use, and will make you more responsible about what you’re commiting. +- Avoid committing unnecessary files: + - Avoid using `git commit -a`, which commits everything. +- Use targeted commit commands: + - Use `git add` to stage specific files. + - Use `git add -p` for a patch mode to review changes before staging. +- Ensure changes are correct before committing: + - Use `git diff --cached` to display staged changes. + - Use `git commit -v` to view diffs while writing the commit message. -If you want to make sure about what you’re commiting, use **`git diff --cached`**, it will display the ready-to-commit changes. -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. +If you want to make sure about what you’re committing, use `git diff --cached` to display the ready-to-commit changes. 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. -## Edit a commit -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). +
+ +Edit a commit + -**`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) -Then edit whatever you want to edit -**`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) +- `git reset --soft HEAD^`: Reset to the previous commit without changing files. +- Edit the necessary changes. +- `git commit -a -v -c ORIG_HEAD`: Recommit with the same message and verify changes. +- After pushing, use force push: `git push -f`. +
-If you do this after pushing, you’ll have to use **`git push -f`** next time you try to push. +
+ +What should I do if I’m in a bad situation? + -## What should I do if I’m in a bad situation? +- **Rebase:** + - Fetch the latest changes: `git fetch main` + - Rebase onto the upstream branch: `git rebase upstream/main` +- **Remove merge commits:** + - Fetch latest changes: `git fetch upstream` + - Discard all changes and reset: `git reset --hard upstream/main` +- **Keep your changes:** + - Create a backup branch: `git branch branchname` + - Safely reset your branch + - Pull changes back to master: `git cherry-pick branchname 1234567890abcdef1234567890abcdef12345678` +
-[](https://github.com/emesene/emesene/wiki/GitHowTo#what-should-i-do-if-im-in-a-bad-situation) +
+ +Recovering from a bad merge or accidental deletion + -rebase. -Just do **`git fetch main`** (fetch the latest changes from the upstream branch) -**`git rebase upstream/main`** (rebase upon the upstream branch) +- `git reflog` +- `git reset HEAD@{index}` +
-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. +
+ +Amending the last commit + -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. +- `git commit --amend --no-edit` +
+
+ +Changing the last commit message + -### Recovering from a bad merge or accidental deletion -``` -git reflog -git reset HEAD@{index} -``` -### Amending the last commit -``` -git commit --amend --no-edit -``` +- `git commit --amend` +
-### Changing the last commit message -``` -git commit --amend -``` +
+ +Undoing a commit from several commits ago + -### Undoing a commit from several commits ago -``` -git log -git revert [saved hash] -``` \ No newline at end of file +- `git log` +- `git revert [saved hash]` +
\ No newline at end of file