Git撤銷已經推送(push)至遠端倉庫的提交(commit)信息操作_相關技巧

來源:腳本之家  責任編輯:小易  

你剛剛將你本地的分支2113推送到了遠5261程倉庫中,但是卻突然發現到其中4102的一個Commit錯了,或者有一些很嚴1653重的拼寫錯誤。當然,這沒什么大不了的,你能解決。但是你必須手腳快一點,在別人同步這些Commit前解決它,否則被坑了的同事會畫小圈圈詛咒你的:)首先,有兩個備選方案可以讓你的歷史記錄完好無損:備選方案一:在一個新的Commit中改正錯誤最簡單的方法就是將錯誤的文件修復好后作為一個新的Commit提交,并同步到遠程倉庫中。這是一種很直觀、也很安全的修復方式,在99%的情況下你都應該使用這種方法,除非這個錯的Commit中包含敏感信息。備選方案二:完全恢復(Revert)這個Commit有時候你會希望撤銷一個Commit的全部更改,幸運的是你可以告訴Git去恢復這個Commit而不用手動地去做這件事;謴偷臅r候甚至可以不必是最后一個Commit;謴鸵粋Commit意味著你會撤銷這個錯誤的Commit中的所有更改。就像剛剛的例子中,這個錯誤的Commit的記錄仍然存在,只不過它不再影響當前工作的分支和任何后續的Commit了。$ git revert dd61ab32關于歷史重寫一般來說我們會避免重寫提交的Commit歷史,一個很重要的原因就是它會使其他Clone過或Fork過你代碼的人和你岔出不同的分支,導致他們不再能pull你重寫了的歷史記錄和后續Commit。如果他們在本地做了一些更改想同步到遠程倉庫上,需要一些高級的Git知識來理解怎樣讓Git正常進行工作。然而有時候你確實就像重寫歷史記錄,無論是因為泄露了敏感信息還是想清除一些本不應該在代碼中的非常龐大的文件,亦或者你僅僅就是想要一個干凈的歷史記錄(當然我確實這么做過)。我平常遷移Subversion或Mercurial項目到Git中時也做過大量的重寫歷史記錄的工作,無論是為了統一LF行結束符,修改提交者的名字、郵箱地址,還是為了從版本庫中徹底刪除那些大文件。最近我也因為一個大的版本庫中一個很早的Commit引起了越來越來多錯誤而重寫了版本庫歷史。是的,如果可能的話你應該重寫那些已經擴散到了其他fork代碼中的歷史記錄,即使你這樣做了也不會世界末日。比如,你仍然可以用Cherry-pick在歷史記錄中來移動Commit來處理那些在舊歷史記錄中的Pull請求。請記住,在開源項目中重寫歷史記錄前先聯系版本庫的管理者。有的管理者一般情況下不允許任何重寫歷史,并且會拉黑那些這么做的人,而另外一些管理者傾向于他們自己來做重寫。情形1:刪除最后一次Commit刪除最后一次Commit是最簡單的一種情況。例如,我們現在有一個擁有master分支的遠程倉庫mathnet,它現在處于最新的Commitdd61ab32下。我們希望移除這個最新的Commit,或者用Git語言說,我們想force遠程倉庫mathnet的master分支到dd61ab32的父Commit上。$ git push mathnet +dd61ab32^:master在Git命令中,x^代表x的父節點,+代表一個強制的非快速推送(forced non-fastforward push)。如果你在本地已經處于master分支下了,你也可以通過兩個簡單的步驟來實現同樣的效果:先回退到父Commit,然后強制推送給遠程倉庫。$ git reset HEAD^ --hard$ git push mathnet -f情形2:刪除倒數第二個Commit現在我們假設需要刪除的Commit沒有在歷史記錄的頂部,而是一個稍舊一點的Commit,比如倒數第二個。我們希望刪除它同時保留其后的所有Commit,換句話說我們希望重寫歷史記錄然后將重寫強制應用到mathnet的master分支上。重寫歷史的最簡單的方法是對錯誤的Commit做一個互相的變基:$ git rebase -i dd61ab32^這個命令會打開一個vi編輯窗口,顯示了從我們想刪除的Commit以來的所有Commit。pick dd61ab32pick dsadhj278簡單地刪除我們想刪除的Commit信息,在這里我們刪除第一行即可(在vi中刪除當前行的命令為dd)。保存退出編輯器(在vi中輸入:wq然后按回車鍵),然后解決一下有可能的沖突,然后強制推送到遠程倉庫就大功告成了:$ git push mathnet -f情形3:修復一個Commit中的拼寫錯誤這種情形下的操作與情形2十分相似,但不是刪除Commit信息,而是將pick和edit換一下位置然后保存退出即可。然后變基時,操作將會停在那個Commit上,這時你可以對這個索引做任何你想做的操作。完成后Commit改動然后繼續變基(如果你想的話Git會告訴你如何保持Commit的附加信息),然后繼續按情形2進行推送。用同樣的方法可以將一個Commit分成很多小的Commit,或者將很多Commit合并到一起www.755717.tw防采集請勿采集本網。

有關修改提交(git commit)信息的方法可以參考: Git commit –amend 修改提交信息

任何一個版本控制系統中,最有用的特性之一莫過于 “撤銷(undo)”操作。在Git中,“撤銷”有很多種含義。 當你完成了一次新的提交(commit),Git會及時

有時,在git push之后,才發現還有一些代碼需要進行很小的改動,這些改動在原則上不應該作為一次新的提交。

如果不小心commit了一個不需要commit的文件,可以對其進行撤銷。 先使用git log 查看 commit日志 commit 422bc088a7d6c5429f1d0760d008d86c505f4abe

這時,我們需要撤銷這次推送(git push)與提交(git commit),然后進行代碼修改,再重新進行提交和推送。

1、打開git終端窗口,切換目錄,然后git init進行一個初始化動作。 2、git status,可以查看有多少個文件可以加入暫緩區。 3、git add -A,這個時候把狀態

為了實現這個目的,需要進行三步操作。

一、本地切換到master分支git checkout master 二、新建old_master分支備份,以防萬一 git branch old_master git push origin old_master:old_master 將

1.撤銷提交信息

一、本地切換到master分支git checkout master 二、新建old_master分支備份,以防萬一 git branch old_master git push origin old_master:old_master 將

首先,通過git log查看提交信息,以便獲取需要回退至的版本號:

$ git logcommit a44822002522f2ab1e3a5e2a1cec00a7d3d02185 (HEAD -> master, origin/master, origin/HEAD)Author: hanchao5272 <[email protected]>Date: Sun Mar 4 11:14:55 2018 +0800CSDN-java反射06-成員變量Field-代碼優化

commit aa909cff2239536df14820fe086d96305b24e9f1Author: hanchao5272 <[email protected]>Date: Sat Mar 3 23:43:03 2018 +0800CSDN-java反射-修飾符-代碼優化

我們需要撤銷CSDN-java反射06-成員變量Field-代碼優化這次提交,所以需要回退至的版本是CSDN-java反射-修飾符-代碼優化,即需要回退至的版本號是:aa909cff2239536df14820fe086d96305b24e9f1。

然后,通過git reset –soft <版本號>重置至指定版本的提交,達到撤銷提交的目的:

$ git reset --soft aa909cff2239536df14820fe086d96305b24e9f1

參數soft指的是:保留當前工作區,以便重新提交

還可以選擇參數hard,會撤銷相應工作區的修改,一定要謹慎使用

然后,通過git log確認是否成功撤銷:

$ git logcommit aa909cff2239536df14820fe086d96305b24e9f1 (HEAD -> master)Author: hanchao5272 <[email protected]>Date: Sat Mar 3 23:43:03 2018 +0800CSDN-java反射-修飾符-代碼優化

已經成功撤銷。

2.撤銷

通過git push origin master –force強制提交當前版本號,以達到撤銷版本號的目的:

$ git push origin master --forceTotal 0 (delta 0), reused 0 (delta 0)To github.com:hanchao5272/myreflect.git+ a448220...aa909cf master -> master (forced update)

必須添加參數force進行強制提交,否則會提交失敗,并報錯:

$ git push origin masterTo github.com:hanchao5272/myreflect.git! [rejected] master -> master (non-fast-forward)error: failed to push some refs to '[email protected]:hanchao5272/myreflect.git'hint: Updates were rejected because the tip of your current branch is behindhint: its remote counterpart. Integrate the remote changes (e.g.hint: 'git pull ...') before pushing again.hint: See the 'Note about fast-forwards' in 'git push --help' for details.

報錯原因:本地項目版本號低于遠端倉庫版本號。

3.修改代碼,重新提交和推送

//修改代碼,添加修改git add .//重新提交git commit -m "CSDN-java反射06-成員變量Field-代碼優化"http://重新推送git push origin master

以上這篇Git撤銷已經推送(push)至遠端倉庫的提交(commit)信息操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持真格學網。 您可能感興趣的文章:Git commit --amend 修改提交信息操作Git提交日志修改方法實例匯總git log根據特定條件查詢日志并統計修改的代碼行數git push 本地項目推送到遠程分支的方法(git命令版)git 將本地文件(夾)上傳到gitee指定分支的處理方法

首先已經push到遠程倉庫2113的提交5261,有可能已經被其他人pull到他們的本地倉4102庫,而且他們有可能已1653經在你的提交的基礎上進行開發,這樣你rollback你的提交,就會影響到其他人。如果你確定你的提交沒有被其他人pull,或者你可以通知到其他人。那么你可以在push命令里加入 --force,這樣遠程分支的HEAD就會被強制修改成和你本地的一樣。如果你想rollback你的本地提交,可以用 rebase 命令內容來自www.755717.tw請勿采集。


  • 本文相關:
  • git rebase -i 修改歷史提交的方法
  • git 命令使用技巧提供工作效率
  • 極驗驗證碼 安裝部署詳細介紹
  • adb shell input keyevent 控制按鍵輸入的數值(收藏版)
  • 程序開發中的幾個請不要相信
  • vscode 打字特效插件power mode安裝使用介紹
  • windows 中 \r\n 區別于 類unix中的\n 疑問理解(crlf回車換行)
  • vscode的jsconfig配置文件說明詳解
  • http協議詳解_動力節點java學院整理
  • tcp關閉問題詳細介紹
  • git 如何撤銷遠程倉庫中的最后一個commit
  • 如何還原一個已經同步到遠程倉庫的Commit
  • 如何在 Git 里撤銷任何操作
  • Git中把自己的本地版本庫推送到遠程版本庫后,怎么...
  • 如何在Git中撤銷一切
  • git 已經commit的文件怎么撤銷
  • git commit后怎么撤銷
  • 怎么刪除git遠程倉庫上某次commit
  • git 怎樣刪除遠程倉庫的某次錯誤提交
  • git回退到某一次提交以后再怎樣回到最新的
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全javascriptasp.netphp編程ajax相關正則表達式asp編程jsp編程編程10000問css/htmlflex腳本加解密web2.0xml/rss網頁編輯器相關技巧安全相關網頁播放器其它綜合dart首頁相關技巧git commit --amend 修改提交信息操作git提交日志修改方法實例匯總git log根據特定條件查詢日志并統計修改的代碼行數git push 本地項目推送到遠程分支的方法(git命令版)git 將本地文件(夾)上傳到gitee指定分支的處理方法git rebase -i 修改歷史提交的方法git 命令使用技巧提供工作效率極驗驗證碼 安裝部署詳細介紹adb shell input keyevent 控制按鍵輸入的數值(收藏版)程序開發中的幾個請不要相信vscode 打字特效插件power mode安裝使用介紹windows 中 \r\n 區別于 類unix中的\n 疑問理解(crlf回車換行)vscode的jsconfig配置文件說明詳解tcp關閉問題詳細介紹2019最新的pycharm激活碼(推薦)進制轉換算法原理(二進制 八進制eclipse 格式化代碼時不換行與自微信小程序設置http請求的步驟詳幾款開源的中文分詞系統從console.log說起(console.log詳十進制負數轉換為二進制、八進制url 長度有限制嗎?git 撤銷操作、刪除文件和恢復文git入門【推薦】人工智能機器學習常用算法總結及各個常用github入門教程 手把手教你最簡單的開源項git之如何把本地文件上傳到遠程倉庫的指定三招兩式 解決圖片盜鏈無法查看問題詳解http協議簡介flippingbook使用教程(附下載)深度學習開源框架基礎算法之傅立葉變換的git rebase 成功之后撤銷的操作方法
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.755717.tw All Rights Reserved
    2013年排列5开奖号码