1. 程式人生 > >Git-撤銷(回退)已經add,commit或push的提交

Git-撤銷(回退)已經add,commit或push的提交

本文只闡述如何解決問題,不會對git的各種概念多做介紹,如果有興趣可以點選下面的連結,進行詳細的學習:
Pro Git
本文適用的環境

現在先假設幾個環境,本文將會給出相應的解決方法:
1. 原生代碼(或檔案)已經add但是還未commit;
2. 要回退的commit的程式碼已經commit了,但是還未push到遠端個人repository
3. 要回退的commit的程式碼已經push到遠端的個人分支,但是還未merge到公共的repository
4. 要回退的commit的程式碼已被merge(合入)到公共的repository
關鍵的幾個命令

git reset [commit]
git revert [commit]

git reset有三個引數soft,mixed,hard分別對應head的指標移動,index(暫存區)、以及工作目錄的修改,當預設時,預設為mixed引數。
git revert與reset的區別是git revert會生成一個新的提交來撤銷某次提交,此次提交之前的commit都會被保留,也就是說對於專案的版本歷史來說是往前走的。而git reset 則是回到某次提交,類似於穿越時空。
相應的解決方法

1、 對於上面的前兩種情況,我們可以直接使用git reset命令。根據需要的不同使用,不同的引數。但是要注意

git reset –hard 

是一個危險的命令,他是git少數幾個會銷燬資料的命令之一,如果你不小心放了錯,你也許可以使用

git reflog

命令來找回你的資料。
2、 對於第三種情況,如果你的遠端分支只有你一個人用的話,那麼可以在先使用git reset [commit]回退,如何使用git push -f [commit]來強制更新你的遠端庫2

3、 對於最後一種情況,考慮到其他人的版本歷史,使用git reset [commit]是不建議的,此時我們應該使用git revert [commit]改命令不會修改之前的提交歷史,相當於對資料做了一次逆操作,然後再執行add,commit等命令。
總結

對於前三種情況,雖然git revert也適用,但是如要要保持版本歷史乾淨的話,建議還是用 git reset3,但是希望保留完整的歷史的話,還是使用git revert為好。對於和其他人協同的專案,使用git rever是最好的。

相關推薦

Git-撤銷退已經addcommitpush提交

本文只闡述如何解決問題,不會對git的各種概念多做介紹,如果有興趣可以點選下面的連結,進行詳細的學習:Pro Git本文適用的環境現在先假設幾個環境,本文將會給出相應的解決方法:1. 原生代碼(或檔案)已經add但是還未commit;2. 要回退的commit的程式碼已經commit了,但是還未push到遠端

死信佇列和異常退佇列區別

死信佇列: 由於某種原因無法傳遞的訊息都放置在死信佇列上,主要觸發點(MCA 如果遠端訊息不能交付,MCA 傳送的訊息不能進行資料轉換,Trigger Monitor 出發訊息失敗)。 回退佇列: 在外部應用在消費佇列中訊息時,如果發生異常,會發送回滾命令,回滾後的訊息始終會放在佇列的頂

git學習廖雪峰git網站3---時光穿梭機退和前進

前提條件:已經將檔案提交。 (1)修改你提交的文字的內容,執行git status命令看看結果:能夠查到檔案已經修改但未提交; 如果你已經修改過,但忘記是怎麼修改的,用git diff檢視是怎麼修改的; 提交修改和提交新檔案是一樣的步驟:git add 檔名稱   -

Android studio中Git的學習和使用心得在Android studio中如何使用Git進行程式碼退與再提交

這篇部落格是上篇部落格的進階,針對Android studio常用的Git使用情景進行總結。上篇部落格連結https://blog.csdn.net/qq_34820468/article/details/83416326。 下面我們來學習Android stu

git的版本退教程帶你一步一步操作

在之前的文章中我們已經學會了如何使用git提交檔案、下載更新檔案。那麼在git中如何進行版本回退吶 首先,在本地建立一個git專案,並且與 遠端服務端(github) 上的專案進行關聯(如果這一步驟有問題的童靴,請參考我的上一篇文章,害羞….);   1:

Git學習筆記幾個常用的命令 及 版本退

關鍵詞 git status \ git diff \ git log \ git reset \ git reflog git status/檢視版本庫狀態 修改了本地檔案但未新增至暫存區時 已新增至暫存區時 提交至版本庫之後 git di

分針網——每日分享:git提交錯了如何撤銷或者退版本

git http://www.f-z.cn/id/184 前言 前面給大家普及了暫存區的概念以及展示的工作區、版本庫中的暫存區和版本庫之間的關系,如果大家都理解的話,那麽今天的課程就很簡單了。

android_SwipeBackLayout的使用滑動螢幕退

gradle: compile 'me.imid.swipebacklayout.lib:library:1.1.0' github: https://github.com/ikew0ng/SwipeBackLayout 效果圖 點選按鈕進入下一頁面 然後滑動螢幕回到上一頁面

【Activiti】跳轉到工作流的任意節點本例用跳轉到上一節點講解即流程退

所有用到的service以及實現類都是工作流(Activiti)本身的。 public String taskRollback(String taskId){ //根據要跳轉的任務ID獲取

Zuul中的Hystrix的使用Zuul的退

1、pom.xml 在之前的pom中新增 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>

Activity的四種啟動模式退

 在一個Android應用中,不可避免的會包含多個Activity,當開啟多個Activity之後,當按後退鍵時,一般會回退到上一個Activity,這一點和瀏覽器有點類似,但是需要注意的是Android系統只能回退到上一個Activity,沒辦法前進到下一個Activi

git的版本退探索

tag 取消 director alt 進行 -1 png hist cto 簡介 今天改完代碼匆忙提交,上線發現有問題,那怎麽辦?廢話,趕緊回滾,那怎麽回滾,開始用git reset [--soft | --mixed | --hard 命令,但這命令真的能達到我預期的

git 遠端版本退

分支 記錄 ... log ima 圖片 顯示 某個版本 test 情景:本地更改推送遠端後,想要回退到自己推送之前的某個版本。 比如想回退的分支為 test 分支。 風險:遠端回退到某一版本後,之後的所有推送都沒了(對應的日誌記錄也沒了)。如果是團隊開發,不僅自己推送的沒

有關於Git操作持續更新

color 命令 合並 暫存 upstream 操作 col check 跟蹤 Git分支: 查看分支:git branch 創建分支:git branch <name> 切換分支:git checkout <name> 創建+切換分支:git ch

易百教程人工智能python修正-人工智能監督學習

plot imp repr sin 人工智能 ima 多變量 修正 shel 回歸是最重要的統計和機器學習工具之一。 我們認為機器學習的旅程從回歸開始並不是錯的。 它可以被定義為使我們能夠根據數據做出決定的參數化技術,或者換言之,允許通過學習輸入和輸出變量之間的關系來基於數

git rebase變基—— Git 學習筆記 19

git rebase(變基) 認識 git rebase 假設你現在基於遠端分支"origin",建立一個叫"mywork"的分支。 $ git checkout -b mywork origin 現在我們在 mywork 分支做一些修改,生成兩個提交(C5和C6

idea中git遠端版本退

  工作中遇到git遠端倉庫需要回退到歷史版本的問題,根據網上的搜尋結果結合自己的實踐,整理了如下步驟: 1. 在“Show History”中找到當前版本(取名:newVersion)和想要回退到的版本(oldVersion)  2. 選擇newVersion和ol

配置多個Git賬號windows 10

一、為什麼要配置多個Git賬號 一般情況下,我們都是一臺電腦配置一個Git賬號,使用如下命令: git config --golbal user.name "XXX" git config --golbal user.email "[email protected]"

git 指令長期更新

引言:git 是一個非常棒的分散式版本管理系統,我想做開發的小夥伴們對 git 都不陌生,我平時也很喜歡用 git 與github 協同開發(想起以前沒用git 的日子,真是很難受,現在已經是離不開了)。關於git 不得不說的就是 git 指令,平時我自己用的比較多的是:git add ; git commi

自定義Git ~ 忽略特殊檔案.gitignore、配置別名、搭建Git伺服器十八

在 安裝 Git 一節中,我們已經配置了使用者名稱 user.name 和 Email 地址 user.email,實際上,Git還有很多可配置項。比如,讓 Git 顯示顏色,會讓 輸出的命令 看起來更醒目,如下: 這樣,Git 會適當地顯示不同的顏色,比如 git status