@TOC
Install Git in Ubuntu
- Debian or Ubuntu Linux,
sudo apt-get install git
- Set you user name and user email
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
*Note: 注意git config
命令的--global
參數,用了這個參數,表示你這臺機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的用戶名和Email地址。
創建版本庫
- 初始化一個Git倉庫,使用
git init
命令。 - 添加文件到Git倉庫,分兩步:
- 1. 使用命令git add <file>
,注意,可反覆多次使用,添加多個文件;
- 2. 使用命令git commit -m <message>
,完成。
時光機穿梭
- 要隨時掌握工作區的狀態,使用
git status
命令。 - 如果
git status
告訴你有文件被修改過,用git diff
可以查看修改內容。
版本回退
HEAD
指向的版本就是當前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id
。- 穿梭前,用
git log
可以查看提交歷史,以便確定要回退到哪個版本。 - 要重返未來,用
git reflog
查看命令歷史,以便確定要回到未來的哪個版本。
工作區和暫存區
- 工作區(Working Directory)
就是你在電腦裏能看到的目錄,比如我的learngit文件夾就是一個工作區:
-
版本庫(Repository)
工作區有一個隱藏目錄.git
,這個不算工作區,而是Git的版本庫。Git的版本庫裏存了很多東西,其中最重要的就是稱爲stage(或者叫index)的暫存區,還有Git爲我們自動創建的第一個分支
master
,以及指向master
的一個指針叫HEAD
。
分支和HEAD的概念我們以後再講。
前面講了我們把文件往Git版本庫裏添加的時候,是分兩步執行的:
-
第一步是用
git add
把文件添加進去,實際上就是把文件修改添加到暫存區; -
第二步是用
git commit
提交更改,實際上就是把暫存區的所有內容提交到當前分支。
因爲我們創建Git版本庫時,Git自動爲我們創建了唯一一個master
分支,所以,現在,git commit
就是往master
分支上提交更改。
你可以簡單理解爲,需要提交的文件修改通通放到暫存區,然後,一次性提交暫存區的所有修改。
撤銷修改
又到了小結時間。
場景1:當你改亂了工作區某個文件的內容,想直接丟棄工作區的修改時,用命令git checkout -- file
。
場景2:當你不但改亂了工作區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD <file>
,就回到了場景1,第二步按場景1操作。
場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠程庫。