Home  >  Article  >  Development Tools  >  How to modify history in git

How to modify history in git

WBOY
WBOYOriginal
2022-01-14 14:19:279009browse

Method: 1. Use the "git commit --amend" command to modify one history record; 2. Use the "git rebase -i specify submission number" command to modify multiple history records; 3. Use "git filter- The range modified by the branch --filer command" command rewrites the history.

How to modify history in git

The operating environment of this article: Windows 10 system, Git version 2.30.0, Dell G3 computer.

How to modify the history of git

Junior player git amend

If you are just submitting Later I found that I was handicapped, so I used git commit --amend to modify the previous commit. After this command is executed, it will remove the previous commit from the current branch, restore the workspace to the state where it was last prepared for submission (while mixing the changes after the last commit), and then display a vim interface for You go and modify the last commit information. After saving in vim, all current modifications will be submitted with new submission information.

This command can only modify the last commit. One command is equivalent to executing the following series of actions:

    $ORIG_HEAD=`git show`#保存当前的这次提交的 commit 号
    $git reset --soft HEAD^#回到最后一次提交准备提交前的状态
    $...#做一些操作和修改
    $git commit -c $ORIG_HEAD#表示用最后一次提交的提交信息来做为提交信息,不过会调出编辑器界面

Intermediate player git rebase

Previous The git commit --amend can only modify the last commit, but when we are on a whim and handicapped all the way, this command cannot save us. At this time, we have to use the killer tool of git rebase -i to help We revise those past events that are unbearable to look back on.

Actually, git rebase -i is not a command specifically used to modify historical records, but a command that allows us to perform rebase operations interactively (that is, one by one), but we can use This command is used to modify the commit history.

The method of using this command is git rebase -i . For example, you can use git rebase -i HEAD~3 to modify this submission, the last submission, and the previous submission three times in total. submit.

How to modify history in git

As shown in the picture, if I submit the changes three times and enter git rebase -i HEAD~3, the following interface will appear:

How to modify history in git

This is a vim editor interface. Let us edit this script. The commands that can be used are the six commands in the comments below. After exiting the page where you are currently editing it, git will perform corresponding operations on the submissions one by one according to this script (starting from the earliest submission).

If you just want to modify the submission information, change all picks to r, and then save with:wq. Then git will let you modify it one by one starting from the earliest submission information.

Among the remaining commands, e will jump out of the vim editor when modifying the corresponding submission. At this time, the HEAD pointer points to this submission. At this time, you can use git commit --amend to make various modifications to this submission. , and then execute git rebase --continue to continue the next operation; s will merge this submission and its parent submission into one submission when modifying the corresponding submission; f is similar to s but will ignore the current submission. Information, directly use the information submitted by the parent; x requires entering the command after x and then executing it when HEAD points to this submission. These commands can also be used to rearrange submissions and split submissions.

Ultimate killer git filter-branch

Suppose we submitted N times, and suddenly found that the email addresses we submitted were all wrong (╯°□° )╯︵ ┻━┻, if you use the previously mentioned command at this time, you will probably be exhausted before the changes are completed. At this time, we can use git filter-branch to rewrite the branch, which can batch each branch. Submit and perform our preset operations.

The basic usage format used by the git filter-branch command is git filter-branch -- 'Command' , different filter will provide different input and output to the command. For example, --msg-filter means modifying the submission information, the original submission information is read from the standard input, and the new submission information is output to the standard output; --tree-filter means modifying the file list, etc. Etc. Finally, there will be a scope for rewriting. For example, git filter-branch --env-filter 'GIT_AUTHOR_EMAIL=john@example.com export GIT_AUTHOR_EMAIL' HEAD can be used to rewrite the mailbox. It is recommended to print it out before calling the command Try one branch and then perform the operation on the branch you want to modify.

Recommended study: "Git Tutorial"

The above is the detailed content of How to modify history in git. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn