成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用 Git,要常備后悔藥

開發 前端
使用Git的過程,難免由于手快或者別的什么原因,需要對做過的事情進行“反悔”或者多次“反悔”。不用擔心,Git強大到幾乎任何操作都是可以“反悔”的,讓我們一起來看看吧。

Git是目前世界上最優秀最流行的分布式版本控制系統,也是程序員們日常使用最頻繁的工具之一(幾乎每天都需要使用它來對源代碼進行版本管理)。

使用Git的過程,難免由于手快或者別的什么原因,需要對做過的事情進行“反悔”或者多次“反悔”。不用擔心,Git強大到幾乎任何操作都是可以“反悔”的,讓我們一起來看看吧。

1.在未暫存前,撤銷本地修改

在介紹Git“反悔”操作之前,先簡單提及下Git的一些基礎知識。

Git項目有3個區域:工作區、暫存區和Git倉庫(分成本地倉庫和遠程倉庫)。如下圖:

 

使用 Git,要常備后悔藥

本地編寫的代碼,不執行任何git命令,處于工作區。

執行git add命令時,會將工作區的文件標記為已暫存,保存在暫存區。

執行git commit命令時,會將標記為已暫存的文件保存都本地Git倉庫,并生成一個快照。

在沒有暫存之前(沒有執行git add命令),我們可以通過以下命令查看本地修改:

  1. git diff 

顯示的格式如下圖所示:

 

使用 Git,要常備后悔藥

如果我們不想要這些代碼本地代碼(比如一些臨時的測試代碼),可以通過以下命令一次性撤銷所有本地修改:

  1. git checkout -- . 

注意:該命令不可二次“反悔”,本地操作一旦撤銷,將無法通過Git找回。

撤銷之后再次執行git diff命令將沒有任何輸出,代表沒有文件在暫存區。

我們也可以指定具體的文件路徑,撤銷該文件的修改:

  1. git checkout -- [filename] 

2.在暫存之后,撤銷暫存區的修改

本地寫完代碼,提交到本地倉庫之前,需要先將修改的文件添加到暫存區,執行以下命令將本地所有已修改的文件添加到暫存區(當然也可以指定具體的文件):

  1. git add . 

此時我們執行git diff命令,將不會有任何輸出(因為文件已被添加到暫存區),想要查看暫存區的修改,可以執行以下命令:

  1. git diff --staged 

看到的效果和之前為暫存前,通過git diff看到的一模一樣。

如果這時我們想要一次性撤銷暫存區的全部修改,可以執行以下命令(當然也可以撤銷暫存區指定文件的修改):

  1. git reset . 

 

使用 Git,要常備后悔藥

注意:

該命令可以二次“反悔”,通過git add .命令可以將文件再一次添加到暫存區。

這里的“撤銷暫存區的修改”是指撤銷git add .這個命令,回到執行git add .之前的狀態,即已修改為暫存狀態。

此時,如果執行git diff --staged命令,將沒有任何輸出,執行git diff命名將看到已修改未暫存狀態的輸出。

1和2的兩個命令可以合并成一個:

  1. git reset --hard<=>git reset .git checkout -- 

即:如果已暫存,但未提交本地倉庫之前,想把所有文件直接拋棄(而不是從暫存區刪除),可以直接執行以上命令。

3.提交到本地倉庫之后(但未推送到遠程倉庫),撤銷本次提交

執行以下命令,可以將暫存區的所有文件保存到本地Git倉庫,并生成文件快照(便于之前的回退等操作):

  1. git commit -m "modify some files" 

此時提交歷史里面會有一條記錄f8651ff(Commit ID):

 

使用 Git,要常備后悔藥

如果我們不想要這次修改的內容,有以下2種方法:

方法一

回到當前提交的父對象a18c6fa(即上一次提交,通過git log查看),就等于撤銷了本次提交:

  1. git checkout a18c6fa 

 

使用 Git,要常備后悔藥

執行git log命令,發現已經回到之前的提交:

 

使用 Git,要常備后悔藥

方法二

重置之前的提交

  1. git diff 

 

使用 Git,要常備后悔藥

效果和方法一一樣:

 

使用 Git,要常備后悔藥

注意:該命令是可以二次“反悔”的,具體步驟如下:

  1. git checkout -- . 

 

使用 Git,要常備后悔藥

4.修改提交

考慮以下場景:

原本打算修改兩個文件,結果只提交了一個文件,但又不想生成兩個提交記錄(Commit ID),具體執行的命令如下:

  1. git add src/app/app.component.html 
  2. git commit -m "add test block" 
  3. git log 

 

使用 Git,要常備后悔藥

這樣其實只提交了app.component.html一個文件,不是我們想要的。

可以通過以下命令“反悔”(添加遺漏文件,又不重新生成新的Commit ID):

  1. git add src/app/app.component.css 
  2. git commit --amend 

 

使用 Git,要常備后悔藥

還有一種場景可能更加常見,沒有遺漏的文件,只是提交信息里有一個單詞寫錯了,可以使用以下命令進行修補:

  1. git commit --amend -m "add test container" 

注意:--amend修補參數會將改變之前的Commit ID,但不會生成新的Commit ID。

5.撤銷提交歷史中的某一次指定的提交

第3小結提到回退最近一次提交的方法(使用git reset命令),該方法只能針對連續的提交,如果只想撤銷提交歷史中的某一次提交(比如:),該怎么辦呢?

比如:Commit ID為711bb0b的提交,該次提交將標簽的target屬性由"_blank"改成了"_self"。

 

使用 Git,要常備后悔藥

可以使用以下命令撤銷該次提交(將提交的內容“反操作”),并生成一個新的提交在最前面:

  1. git checkout -- [filename] 

 

使用 Git,要常備后悔藥

revert之后,會在提交歷史的最前面生成一個新的Commit ID(1f49a42),該次提交將標簽的target屬性由"_self"改回了"_blank"。

 

使用 Git,要常備后悔藥

6.合并出現沖突時,撤銷合并操作

兩個分支改了同一個文件的同一個地方,合并時將出現沖突:

 

使用 Git,要常備后悔藥

 

使用 Git,要常備后悔藥

如果不想解決沖突,想撤銷這個合并,可以使用以下命令:

  1. git add . 

abort之后,將恢復合并之前的狀態。

7.暫存區的文件加多了,想移除,又不想刪掉本地的文件

  1. git diff --staged 

8.分支重命名

  1. git br -m [old_br] [new_br] 

9.撤銷變基操作

將 rebase_test 分支的修改變基到master上:

  1. git co rebase_test 
  2. git rebase master 

 

使用 Git,要常備后悔藥

撤銷的步驟如下:

  1. 使用 git reflog 命令找到變基前的提交 09b0adc 
  2. 使用 git reset --hard 09b0adc 重置到該提交 

 

使用 Git,要常備后悔藥

10.以腳本方式改寫提交

考慮以下場景,在一次很早的提交中,將一個儲存密碼的文件passwords.txt提交到了遠程倉庫,這時如果只是從遠程倉庫中刪除該文件,別人依然可以通過提交歷史找到這個文件。

因此我們需要從每一個快照中移除該密碼文件,用以下命令就可以做到:

  1. git filter-branch --tree-filter 'rm -f passwords.txt' HEAD 

該命令執行完會將提交歷史中所有提交的passwords.txt文件徹底刪除,永遠沒法通過Git找回。

除了以上“反悔”操作,還有一個很強大的命令,也可以以某種形式對過去做過的事情進行“反悔”,那就是交互式變基:

  1. git rebase -i 

 

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2014-02-09 09:47:44

Windows 8.1Windows 8.1

2020-11-02 08:21:50

Git辦法代碼

2017-02-06 19:17:28

云主機IT運維磁盤

2016-10-24 22:41:06

大數據Google

2020-04-27 09:21:25

Android谷歌功能

2022-01-19 18:02:42

chrome插件使用者

2017-08-21 15:54:47

IOS越獄工具

2015-07-20 11:47:46

Windows 10升級

2015-01-12 11:07:22

2019-01-18 09:20:40

蘋果WiFi路由器

2019-01-02 08:17:20

微信功能系統

2012-01-04 10:50:41

金山快盤文件存錯

2021-03-19 08:16:03

數據庫

2021-06-10 14:22:57

iOS 15iOS 14降級

2011-05-29 15:28:30

文件恢復360

2021-05-22 06:42:34

Windows10操作系統微軟

2020-09-08 11:54:11

戴爾

2013-11-08 15:40:44

IE11Windows 7

2021-02-19 09:01:37

Go項目模塊

2025-04-21 00:00:00

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品亚洲| 欧美精品久久久久 | 久久电影一区 | 中文字幕国产一区 | 91久久久久久久 | 欧美va大片 | 亚洲国产自产 | 中文字幕成人av | 亚洲欧美另类在线 | 一级毛片免费完整视频 | 日本二区在线观看 | 中文字幕av一区 | 亚洲人成在线观看 | 日本不卡一区二区三区在线观看 | 免费看啪啪网站 | 草比网站| 青青草这里只有精品 | 亚洲成人一区 | 久久久免费电影 | 天天色天天色 | 黄频免费 | 一区二区三区四区在线播放 | 狠狠躁躁夜夜躁波多野结依 | 99热99| www.99热.com | 免费一级做a爰片久久毛片潮喷 | 亚洲中午字幕 | 在线观看日本网站 | 国产精品国产精品国产专区不卡 | 欧美久久久久久久 | 538在线精品 | 欧美激情欧美激情在线五月 | 国产精品视频导航 | 99在线免费观看 | 狠狠干狠狠操 | 性做久久久久久免费观看欧美 | 日韩精品三区 | 久久人体视频 | caoporn国产 | 久久综合久久综合久久 | 一级黄色片网址 |