修改已經提交的readme.md
檔案
git is a distributed version control system.知道了對git is free software.
readme.md
作了什麼修改後,再把它提交到倉庫就放心多了。:
$ git add readme.md
在執行git commit
之前,我們再執行git status
看看當前倉庫的狀態
$ git commit -m "add distributed"
提交後,我們再用git status
命令看看倉庫的當前狀態
每當你覺得檔案修改到一定程度的時候,就可以「儲存乙個快照」,這個快照在git中被稱為commit
。一旦你把檔案改亂了,或者誤刪了檔案,還可以從最近的乙個commit
恢復,然後繼續工作,而不是把幾個月的工作成果全部丟失。
使用git log
命令, 檢視檔案更改的歷史紀錄:
$ git log
commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (head -> master)
author: michael liao date: fri may 18 21:06:15 2018 +0800
commit e475afc93c209a690c39c13a46716e8fa000c366
author: michael liao date: fri may 18 21:03:36 2018 +0800
add distributed
commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
author: michael liao date: fri may 18 20:59:18 2018 +0800
wrote a readme file
git log
命令顯示從最近到最遠的提交日誌.
如果嫌輸出資訊太多,看得眼花繚亂的,可以試試加上--pretty=oneline
引數:
$ git log --pretty=oneline
e475afc93c209a690c39c13a46716e8fa000c366 add distributed
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file
大串類似1094adb...
的是commit id
(版本號)
首先,git必須知道當前版本是哪個版本,在git中,用head
表示當前版本,也就是最新的提交1094adb...
(注意我的提交id和你的肯定不一樣),上乙個版本就是head^
,上上乙個版本就是head^^
,當然往上100個版本寫100個^比較容易數不過來,所以寫成head~100
。
$ git reset --hard head^
head is now at e475afc add distributed
$ git reset --hard 1094a
版本號沒必要寫全,前幾位就可以了
$git reflog
e475afc head@: reset: moving to head^
e475afc head@: commit: add distributed
eaadf4e head@: commit (initial): wrote a readme file
git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有git為我們自動建立的第乙個分支master
,以及指向master
的乙個指標叫head
。
我們把檔案往git版本庫里新增的時候,是分兩步執行的:
因為我們建立git版本庫時,git自動為我們建立了唯一乙個master
分支,所以,現在,git commit
就是往master
分支上提交更改。
可以簡單理解為,需要提交的檔案修改通通放到暫存區,然後,一次性提交暫存區的所有修改。
git跟蹤並管理的是修改,而非檔案。
提交後,用git diff head -- readme.txt
命令可以檢視工作區和版本庫裡面最新版本的區別:
每次修改,如果不用git add
到暫存區,那就不會加入到commit
中。
命令git checkout -- readme.txt
意思就是,把readme.txt
檔案在工作區的修改全部撤銷,這裡有兩種情況:
總之,就是讓這個檔案回到最近一次git commit或git add時的狀態。
命令中的--
很重要,沒有--
,就變成了「切換到另乙個分支」的命令。
用命令git reset head
可以把暫存區的修改撤銷掉(unstage),重新放回工作區。
git reset
命令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用head時,表示最新的版本。
場景1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout -- file
。
場景2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset head
,就回到了場景1,第二步按場景1操作。
一般情況下,你通常直接在檔案管理器中把沒用的檔案刪了。
這個時候,git知道你刪除了檔案,因此,工作區和版本庫就不一致了,git status
命令會立刻告訴你哪些檔案被刪除了。
現在你有兩個選擇,
$ git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
[master d46f35e] remove test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
$ git checkout -- test.txt
git checkout
其實是用版本庫里的版本替換工作區的版本,無論工作區是修改還是刪除,都可以「一鍵還原」。
2 時光穿梭機
根據廖雪峰的git教程進行學習,以問題的形式來學習,懶得記太多筆記 修改檔案之後如何操作提交?修改文件儲存 option 用git status檢視當前目錄的變動 option 用git diff檢視修改的內容 重新提交,git add git status git commit m note 中間...
Git系統學習記錄 二 時光穿梭
1,本地版本庫建立 1,建立目錄,進入目錄,git init變成倉庫 例如 mkdir repository cd repository git init git init 將目錄變成git可以管理的倉庫 2,將檔案放到git倉庫 git add filename 將檔案放入暫存區 git comm...
回首程式設計師4年時光
猶記得在2010年9月隻身一人來上海找實習機會,因為自己的演算法和資料結構基礎很牢固,很容易找到了一家100多人的外資公司,這家公司是開發兒童英語學習虛擬社群的。做的產品是基於flash實現的,產品含有很多課件,益智遊戲,目的就是寓教於樂。所以,來到這家公司,我踏進了flash開發領域,那是頁遊起飛...