1. 程式人生 > >4 Git 基礎

4 Git 基礎

撤消操作

任何時候,你都有可能需要撤消剛才所做的某些操作。接下來,我們會介紹一些基本的撤消操作相關的命令。請注意,有些撤銷操作是不可逆的,所以請務必謹慎小心,一旦失誤,就有可能丟失部分工作成果。

有時候我們提交完了才發現漏掉了幾個檔案沒有加,或者提交資訊寫錯了。想要撤消剛才的提交操作,可以使用--amend選項重新提交:

$ git commit --amend

此命令將使用當前的暫存區域快照提交。如果剛才提交完沒有作任何改動,直接執行此命令的話,相當於有機會重新編輯提交說明,但將要提交的檔案快照和之前的一樣。

啟動文字編輯器後,會看到上次提交時的說明,編輯它確認沒問題後儲存退出,就會使用新的提交說明覆蓋剛才失誤的提交。

如果剛才提交時忘了暫存某些修改,可以先補上暫存操作,然後再執行--amend提交:

$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend

上面的三條命令最終只是產生一個提交,第二個提交命令修正了第一個的提交內容。

接下來的兩個小節將演示如何取消暫存區域中的檔案,以及如何取消工作目錄中已修改的檔案。不用擔心,檢視檔案狀態的時候就提示了該如何撤消,所以不需要死記硬背。來看下面的例子,有兩個修改過的檔案,我們想要分開提交,但不小心用git add .全加到了暫存區域。該如何撤消暫存其中的一個檔案呢?其實,git status

的命令輸出已經告訴了我們該怎麼做:

$ git add .
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   README.txt
        modified:   benchmarks.rb

就在 “Changes to be committed” 下面,括號中有提示,可以使用git reset HEAD <file>...的方式取消暫存。好吧,我們來試試取消暫存 benchmarks.rb 檔案:

$ git reset HEAD benchmarks.rb
Unstaged changes after reset:
M       benchmarks.rb
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   README.txt

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:   benchmarks.rb

這條命令看起來有些古怪,先別管,能用就行。現在 benchmarks.rb 檔案又回到了之前已修改未暫存的狀態。

如果覺得剛才對 benchmarks.rb 的修改完全沒有必要,該如何取消修改,回到之前的狀態(也就是修改之前的版本)呢?git status同樣提示了具體的撤消方法,接著上面的例子,現在未暫存區域看起來像這樣:

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:   benchmarks.rb

在第二個括號中,我們看到了拋棄檔案修改的命令(至少在 Git 1.6.1 以及更高版本中會這樣提示,如果你還在用老版本,我們強烈建議你升級,以獲取最佳的使用者體驗),讓我們試試看:

$ git checkout -- benchmarks.rb
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   README.txt

可以看到,該檔案已經恢復到修改前的版本。你可能已經意識到了,這條命令有些危險,所有對檔案的修改都沒有了,因為我們剛剛把之前版本的檔案複製過來重寫了此檔案。所以在用這條命令前,請務必確定真的不再需要保留剛才的修改。如果只是想回退版本,同時保留剛才的修改以便將來繼續工作,可以用下章介紹的 stashing 和分支來處理,應該會更好些。

記住,任何已經提交到 Git 的都可以被恢復。即便在已經刪除的分支中的提交,或者用--amend重新改寫的提交,都可以被恢復(關於資料恢復的內容見第九章)。所以,你可能失去的資料,僅限於沒有提交過的,對 Git 來說它們就像從未存在過一樣。

相關推薦

4 Git 基礎

撤消操作 任何時候,你都有可能需要撤消剛才所做的某些操作。接下來,我們會介紹一些基本的撤消操作相關的命令。請注意,有些撤銷操作是不可逆的,所以請務必謹慎小心,一旦失誤,就有可能丟失部分工作成果。 有時候我們提交完了才發現漏掉了幾個檔案沒有加,或者提交資訊寫錯了。想要撤消剛才的提交操作,可以使用--amend

2.4 Git 基礎

撤消操作 任何時候,你都有可能需要撤消剛才所做的某些操作。接下來,我們會介紹一些基本的撤消操作相關的命令。請注意,有些撤銷操作是不可逆的,所以請務必謹慎小心,一旦失誤,就有可能丟失部分工作成果。 有時候我們提交完了才發現漏掉了幾個檔案沒有加,或者提交資訊寫錯了。想要撤消剛才的提交操作,可以使用 --ame

Git總結筆記4-git push origin master 報錯的解決方法

failed 總結筆記 rebase nbsp read hint err ont version 1 錯誤提示如下: 2 [[email protected]/* */ php]# git push -u origin master 3 To [ema

4-Linux基礎

var fig tom orm app 圖形 wrap back side Linux 基礎 切換多用戶虛擬終端 ctrl+alt+Fn pts 右擊打開的默認用戶啊 :0 圖形界面默認登陸的用戶 ttyn :命令行模式登陸的用戶 $ 普通用戶 # 管理員 命令: ma

Git基礎-打標簽

驗證 搜索 存在 gerrit 電子郵件 src 9.png repo pan 打標簽 同大多數 VCS 一樣,Git 也可以對某一時間點上的版本打上標簽。人們在發布某個軟件版本(比如 v1.0 等等)的時候,經常這麽做。本節我們一起來學習如何列出所有可用的標簽,如何新建標

Git基礎-生成Patch和使用Patch

.com push gerrit man log sts rep ger 項目目錄 1.生成Patch(俗稱快照) 先來看看repo manifest 的用法 <1>cd /工作目錄/項目目錄/.repo/manifests <2>repo ma

git基礎命令。

所有 文件夾 遠程服務器 url add 服務器 遠程 nbsp comm 創建一個新的本地倉庫 git init 克隆遠程服務器 git clone URL 打開一個文件夾 cd 添加文件 git add . 本地提交更改 git commit

4基礎應用實例

align += div item fault length dna doctype 九九 1、開關燈 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-

重修課程day7(python基礎4基礎補充)

文件 bit nds strip pytho div 處理 編碼 from 一 bit,和bytes的關系  bit:就是計算機的最小的表示單位。  bytes:就是計算機的最小的儲存單位。   1 字節(bytes) = 8 位(bit)    格式:  print(

git 基礎

地址 ons conf 統計 修改 郵箱 一個 glob 郵箱地址 用戶名和郵箱地址的作用 用戶名和郵箱地址是本地git客戶端的一個變量,不隨git庫而改變。 每次commit都會用用戶名和郵箱紀錄。 github的contributions統計就是按郵箱來統計的。

git基礎

尊重 init 自己 餐廳 優秀 com git add why fig 禮節為上: 一定要對別人客氣一點,無論在餐廳,或者任何事情上面一定要對別人客氣,從這次 上海面試的經歷導致自己滑鐵盧,自己就要好好的總結一下。 即使自己遇到很煩心的事情,也要保持情緒,因

Git基礎入門(四)Git基本操作2

git 操作 基礎忽略文件: 在實際開發過程中總有些文件無需納入Git的管理,比如日誌文件、臨時文件等 在這種情況下,我們可以在工作目錄中創建一個名為.gitignore的文件,列出要忽略的文件名或者表達式 例:cat .gitignore *.[oa]

Git基礎入門(七)Git撤銷操作和遠程倉庫管理

git 操作 基 版本 系統 遠程倉庫撤銷操作:註意:Git的有些撤消操作是不可逆的。 這是在使用Git的過程中,會因為操作失誤而導致之前的工作丟失的少有的幾個地方之一取消暫存的文件git add a.py b.py git status On branch master Changes to

Git基礎入門(八)Git分支的基本概念

git 版本控制 分支管理幾乎所有的版本控制系統都以某種形式支持分支。 使用分支意味著你可以把你的工作從開發主線上分離開來,以免影響開發主線。 在很多版本控制系統中,這是一個略微低效的過程——常常需要完全創建一個源代碼目錄的副本。對於大項目來說,這樣的過程會耗費很多時間。有人把Git的分支模型稱為它的`‘必殺

自動化部署之Git基礎

自動化部署 git GIT基礎 GIT是一個分布式版本管理系統,速度快,適合大規模,跨地區多人協同開。SVN是一個集中式版本管理系統。(1)GIT生態GIT分布式版本管理系統Gitlab git私庫解決方案Github git公有庫解決方案(2)Git安裝Centos:yum install

Git基礎命令使用(個人總結)

down class 一次 onf set .net remote odin -a 個人在開發中整理常用的git命令,相信很多人會需要到的。 全局配置信息: git config --global user.name "Your name"

git 基礎命令

local 方法 git push -m 刪除 直接 OS oca 分支 1、創建本地分支 local_branch git branch local_branch 2、創建本地分支local_branch 並切換到local_branch分支 git

git基礎命令

現在 括號 IT add 就會 功能 git commit git rm git init : 初始化一個倉庫,也就是新建一個倉庫 git clone : 克隆一個倉庫,就是復制一份代碼過來,通過 http、ssh、 git協議 ,可以在URL後 加 一個參數 當

git基礎

介紹 長度 -o sha-1 意義 2.0 ast comm hub 一、 獲取git倉庫 :兩種方法  第一種:在現有項目或目錄下導入所有文件到git中    1.在終端進入項目目錄 cd ..    運行git init 來初始化git倉庫    2.在已經存在

git基礎問題

史記 del bar syn 差距 實的 rect log 例如 1).git add 與gitstage的區別 git stage只是git add的同義詞,所以在使用上沒有區別 i)Git倉庫的三個組成部分:工作區(Working Directory)、暫存區(Stag