1. 程式人生 > >git commit -am 之後,撤銷並保留修改

git commit -am 之後,撤銷並保留修改

環境

作業系統:win7
git: 2.9

場景

有時我們在進行commit之後,後悔了!具體點就是:
我公司的流程應該是程式碼先提交到自己的分支中,再提交到dev分支中,測試完畢後,在合併到master分支中。有時一不小心先提交到了dev分支中,由於dev分支禁止合併到master分支中,所以我得先撤銷,再去提交到自己的分支,再合到dev分支。

撤銷並保留修改

引數 –soft

# 先進行commit ,之後後悔啦
$ git commit -am "對首篇報告研究員欄位改為author_name"

執行git log

$ git log

commit 3d6788f577faba5e1d408e372031c81beee79749
Author: yutao <1185651333
@qq.com> Date: Thu Dec 14 10:08:36 2017 +0800 對首篇報告研究員欄位改為author_name commit 5029f0cc08cffb77f7358de7d5534e8f8eacb82e Author: yutao <1185651333@qq.com> Date: Thu Dec 14 09:52:39 2017 +0800 Revert "Revert "報告型別欄位改為report_type"" This reverts commit c81f785a06804f5f40b41dedd038efbe6d83f8a8. commit
c81f785a06804f5f40b41dedd038efbe6d83f8a8 Author: yutao <1185651333@qq.com> Date: Thu Dec 14 09:52:22 2017 +0800 Revert "報告型別欄位改為report_type" This reverts commit 5a1d18a032d8c9269613ff14593847f82043e627. commit 5a1d18a032d8c9269613ff14593847f82043e627

可以看出,第一個是我剛剛commit的,我要撤銷,當然是選擇第二個;

執行命令git reset --soft <commit>

$ git reset --soft 5029f0cc08cf

之後我們檢視下,狀態:

$ git status
On branch yutao
Your branch is up-to-date with 'origin/yutao'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   dataservice/app/ggservice/v1/event/service/InfoEventService.java

可以看出已經回撤啦,並且保留了修改。

引數 –mixed

$ git reset --mixed 5029f0cc08cff
Unstaged changes after reset:
M       dataservice/app/ggservice/v1/event/service/InfoEventService.java

[email protected] MINGW64 /d/sts/workspace/ggservice (yutao)
$ git status
On branch yutao
Your branch is up-to-date with 'origin/yutao'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   dataservice/app/ggservice/v1/event/service/InfoEventService.java

no changes added to commit (use "git add" and/or "git commit -a")

這種方式也是可以的。
引數--soft--mixed區別:

引數 區別
--soft 會將改動放在快取區
--mixed 不把改動放在快取區

git reset –hard <commit_id>

這種方式,我個人是不推薦,它也是撤銷,但是不會保留修改。
除非你確實是不想要剛剛commit的內容,否則,這個操作會讓你之前乾的活,白乾。
所以非常不推薦這個方式。

git log

檢視日誌,一般用來找commit_id;

參考地址

相關推薦

git commit -am 之後,撤銷保留修改

環境 作業系統:win7 git: 2.9 場景 有時我們在進行commit之後,後悔了!具體點就是: 我公司的流程應該是程式碼先提交到自己的分支中,再提交到dev分支中,測試完畢後,在合併到master分支中。有時一不小心先提交到了dev分支中,

git commit -m 與 git commit -am的區別

解釋 兩個 str 效果 如果 控制 mit txt 這一 字面解釋的話,git commit -m用於提交暫存區的文件;git commit -am用於提交跟蹤過的文件 要理解它們的區別,首先要明白git的文件狀態變化周期,如下圖所示 工作目錄下面的所有文件都不外

git commit -m與git commit -am的區別

字面解釋的話,git commit -m用於提交暫存區的檔案;git commit -am用於提交跟蹤過的檔案 如果你的檔案之前已經通過git add <change file>將其新增到stage,並通過git commit -m "<message>"為這所有已經進入

git commit之後發現message寫錯,修改辦法

如果已經通過git push提交了,看你們公司用的什麼git伺服器了,一般使用者想修改的話需要相關的許可權,找管理員了;如果已經有其他開發人員基於你的提交進行了修改並提交的話,那就更麻煩了,後面的所有提交都要重新做一遍; 如果還沒有push到伺服器,只是本地進行了commit,並且沒有進行新的com

Git撤銷git commit 但是未git push的修改

1. 找到上次Git commit的 id      git log       找到你想撤銷的commit_id 2.  git reset --hard commit_id       完成撤銷,同時將程式碼恢復到前一commit_id 對應的版本。 3. git r

git-刪除已經commit的文件強制更新

remote reflog 1.5 push com m2e git rm pru nal git filter-branch -f --index-filter ‘git rm --cached --ignore-unmatch Spring/day04/32.編程式事務

修改 git commit -m "message" 的 message

AS sage message comm ssa -a 解決 ESS mit 解決方法 git commit --amend -m "new message"修改 git commit -m "message" 的 message

Git 基礎教程 之 撤銷修改

撤銷 pan 文件的 .com 分享 png 基礎教程 mit 技術 Git跟蹤並管理的是修改,而非文件。每次修改,如果不用git add到暫存區,那就不會加入到commit中, 要麽全部改完後,再add → commit ;要麽改一點,就add → commit。 撤

git add , git commit 新增錯檔案 撤銷 1. git add 新增 多餘檔案

1. git add 新增 多餘檔案  這樣的錯誤是由於, 有的時候 可能 git add . (空格+ 點) 表示當前目錄所有檔案,不小心就會提交其他檔案 git add 如果添加了錯誤的檔案的話 撤銷操作 git status 先看一下

使用git遷移git專案保留提交記錄

場景 在平時開發中我們有自己的git倉庫,組內提交都是在這個庫。突然有一天,領導說要把這個庫整合到另一個更大的工程中(華為雲的看板),那裡面有前後端的程式碼;為了方便大家查詢,我們需要將各個組的程式碼遷移到同一個大工程下。 問題 提交要保留提交記錄 changelog要保留 組內成員要保留

git上檔名大小寫重新命名的修改時(git大小寫敏感/預設不敏感),如何重新命名提交

git預設是大小寫不敏感!!! 加了感嘆號是什麼意思呢,意思就是這本身就是一個坑,本人使用的IDE是idea(網上說Eclipse可以避開問題),這個IDE本身就集成了git,但是如果要在terminal使用git命令,還需先安裝並配置好git環境變數,然後在idea配置git安裝路徑。。。。扯

git :不能撤銷本地修改( error:路徑…是未合併)

遇到 git 問題,使用 git checkout -- . 會顯示有檔案 is unmerged 解法: git reset -- . git checkout . 醬子就成功了。

不借助git commit --amend 修改提交說明

本篇博文內容有二: 1、  使用git commit –amend修改提交說明。 2、  一種替代第一種方法的方式,更確切的說是第一種方式的原理。 1、  使用git commit –amend修改提交說明。 這種方式就是大家所熟知的最常用的方式,操作: git co

撤銷git的錯誤提交(git add , git commitgit push)

1. git add 新增 多餘檔案 這樣的錯誤是由於, 有的時候 可能 git add . (空格+ 點) 表示當前目錄所有檔案,不小心就會提交其他檔案 git add 如果添加了錯誤的檔案的話 撤銷操作 git status 先看一下add 中的檔案 git reset HE

git各種狀態下撤銷修改的方法

使用git時會出現各種各樣的問題,下面是幾種情況下怎麼反悔的操作 一,未加入快取區,撤銷檔案修改      git checkout -- file 二,已加入快取區,撤銷檔案提交      git reset HEAD file 三,已提交到本地,回滾提交  

git commit 不小心把賬號密碼檔案提交上去push到遠端後,怎麼刪除commit記錄

當前分支 1.git reset - -hard b66cc2c (b66cc2c為commit_id) 這個commit_id 是錯誤commit 之前的那個commit 2.git push -f 或者 git push origin xxxx(分

gitcommit之前,撤銷add檔案的方法

步驟1:         git  rm  --cached  檔名 步驟2:         git  reset  HEAD  檔名 至此,已經撤銷(add操作)成功 ^-^。 如果需要 撤銷

匯入另一個 Git庫到現有的Git保留提交記錄

提取出的主要步驟如下: 1 切換到要合併到的倉庫 2 git remote add 倉庫名 被合併倉庫路徑 3 git fetch --all 4 git merge 倉庫名/被合併倉庫想合併的分支 問題描述: 我在本地有兩個Git庫專案(D1=PC專案  包含通用

gitgit commit –amend命令修改comment

當git commit -m “your comment”後,想修改提交後的comment,可以使用git commit –amend命令: 1. git commit –amend,會出現上一次提交時的comment(即vim模式下檢視記錄); 2.

修改git commit資訊中的author

話說不是經常有忘記修改git 的author 和email 就直接提交的情況嘛。 這個時候就需要修改commit 中的author資訊啦 1> rebase 到你要修改的那一條commit     git rebase -i <commit_hashcode&