Various ways to remove local Git changes

前端 未结 9 955
难免孤独
难免孤独 2020-11-27 08:45

I just cloned a git repository and checked out a branch. I worked on it, and then decided to remove all my local changes, as I wanted the original copy.

In short, I

9条回答
  •  暗喜
    暗喜 (楼主)
    2020-11-27 09:13

    Reason for adding an answer at this moment:

    So far I was adding the conclusion and ‘answers’ to my initial question itself, making the question very lengthy, hence moving to separate answer.

    I have also added more frequently used git commands that helps me on git, to help someone else too.

    Basically to clean all local commits $ git reset --hard and $ git clean -d -f


    First step before you do any commits is to configure your username and email that appears along with your commit.

    #Sets the name you want attached to your commit transactions

    $ git config --global user.name "[name]"
    

    #Sets the email you want atached to your commit transactions

    $ git config --global user.email "[email address]"
    

    #List the global config

    $ git config --list
    

    #List the remote URL

    $ git remote show origin
    

    #check status

    git status
    

    #List all local and remote branches

    git branch -a
    

    #create a new local branch and start working on this branch

    git checkout -b "branchname" 
    

    or, it can be done as a two step process

    create branch: git branch branchname work on this branch: git checkout branchname

    #commit local changes [two step process:- Add the file to the index, that means adding to the staging area. Then commit the files that are present in this staging area]

    git add 
    
    git commit -m "commit message"
    

    #checkout some other local branch

    git checkout "local branch name"
    

    #remove all changes in local branch [Suppose you made some changes in local branch like adding new file or modifying existing file, or making a local commit, but no longer need that] git clean -d -f and git reset --hard [clean all local changes made to the local branch except if local commit]

    git stash -u also removes all changes

    Note: It's clear that we can use either (1) combination of git clean –d –f and git reset --hard OR (2) git stash -u to achieve the desired result.

    Note 1: Stashing, as the word means 'Store (something) safely and secretly in a specified place.' This can always be retreived using git stash pop. So choosing between the above two options is developer's call.

    Note 2: git reset --hard will delete working directory changes. Be sure to stash any local changes you want to keep before running this command.

    # Switch to the master branch and make sure you are up to date.

    git checkout master
    

    git fetch [this may be necessary (depending on your git config) to receive updates on origin/master ]

    git pull
    

    # Merge the feature branch into the master branch.

    git merge feature_branch
    

    # Reset the master branch to origin's state.

    git reset origin/master
    

    #Accidentally deleted a file from local , how to retrieve it back? Do a git status to get the complete filepath of the deleted resource

    git checkout branchname 
    

    that's it!

    #Merge master branch with someotherbranch

    git checkout master
    git merge someotherbranchname
    

    #rename local branch

    git branch -m old-branch-name new-branch-name
    

    #delete local branch

    git branch -D branch-name
    

    #delete remote branch

    git push origin --delete branchname
    

    or

    git push origin :branch-name
    

    #revert a commit already pushed to a remote repository

    git revert hgytyz4567
    

    #branch from a previous commit using GIT

    git branch branchname 
    

    #Change commit message of the most recent commit that's already been pushed to remote

    git commit --amend -m "new commit message"
    git push --force origin 
    

    # Discarding all local commits on this branch [Removing local commits]

    In order to discard all local commits on this branch, to make the local branch identical to the "upstream" of this branch, simply run

    git reset --hard @{u}
    

    Reference: http://sethrobertson.github.io/GitFixUm/fixup.html or do git reset --hard origin/master [if local branch is master]

    # Revert a commit already pushed to a remote repository?

    $ git revert ab12cd15
    

    #Delete a previous commit from local branch and remote branch

    Use-Case: You just commited a change to your local branch and immediately pushed to the remote branch, Suddenly realized , Oh no! I dont need this change. Now do what?

    git reset --hard HEAD~1 [for deleting that commit from local branch. 1 denotes the ONE commit you made]

    git push origin HEAD --force [both the commands must be executed. For deleting from remote branch]. Currently checked out branch will be referred as the branch where you are making this operation.

    #Delete some of recent commits from local and remote repo and preserve to the commit that you want. ( a kind of reverting commits from local and remote)

    Let's assume you have 3 commits that you've pushed to remote branch named 'develop'

    commitid-1 done at 9am
    commitid-2 done at 10am
    commitid-3 done at 11am. // latest commit. HEAD is current here.
    

    To revert to old commit ( to change the state of branch)

    git log --oneline --decorate --graph // to see all your commitids

    git clean -d -f // clean any local changes

    git reset --hard commitid-1 // locally reverting to this commitid

    git push -u origin +develop // push this state to remote. + to do force push

    # Remove local git merge: Case: I am on master branch and merged master branch with a newly working branch phase2

    $ git status
    

    On branch master

    $ git merge phase2 $ git status

    On branch master

    Your branch is ahead of 'origin/master' by 8 commits.

    Q: How to get rid of this local git merge? Tried git reset --hard and git clean -d -f Both didn't work. The only thing that worked are any of the below ones:

    $ git reset --hard origin/master

    or

    $ git reset --hard HEAD~8

    or

    $ git reset --hard 9a88396f51e2a068bb7 [sha commit code - this is the one that was present before all your merge commits happened]

    #create gitignore file

    touch .gitignore // create the file in mac or unix users

    sample .gitignore contents:

    .project
    *.py
    .settings
    

    Reference link to GIT cheat sheet: https://services.github.com/on-demand/downloads/github-git-cheat-sheet.pdf

提交回复
热议问题