2 時光魔法

2021-08-29 16:31:11 字數 3557 閱讀 9679

修改已經提交的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開發領域,那是頁遊起飛...