GitHub常用命令

1 Git簡介
 

Git是用C語言開發的分佈版本控制系統。版本控制系統可以保留一個文件集合的歷史記錄,並能回滾到另外一個狀態(歷史記錄狀態)。對 於任何一個文件,在 Git 內都只有三種狀態:已提交(committed),已修改 (modified)和已暫存(staged)。已提交表示該文件已經被安全地保存在本地數據庫中了;已修改表示修改了某個文件,但還沒有提交保存;已暫 存表示把已修改的文件放在下次提交時要保存的清單中。

 

2 Git命令基本格式
 

一般情況下,Git的命令都是git [command] [option] [argument]格式。其中 command指的是某種操作命令,比如config,mv,rm,pull,push等等。而option和 argument指的是操作命令後面的具體參數,比如:

git config --golobal user.name="hic"

其中,config指的就是配置命令,接着後面跟上配置的具體參數,其中–global指的是對全局配置生效,後面的user.name就是對用戶名進行設置。

 

3 配置文件
 

配置文件是從事所有所有工作的基礎,在這裏配置文件決定了工作時候的用戶,郵箱,以及默認編輯器等等常用的配置參數,下面就先說一說配置文件。

在Git中,配置文件有三大類,分別放在不同的位置。

/etc/gitconfig
 
系統中所有用戶都普遍適用的配置。git config –system就是用來配置這個文件的。
 
 ~/.gitconfig
 
用戶目錄下的配置文件,該文件只適用於該用戶。git config –global就是用來配置這個文件的。
 
~/*/.git/config
 
這是當前項目的配置文件,僅對該項目適用。

注意:每一級別的配置,都會覆蓋上層的相同配置。

 

3.1 配置信息
 

用戶名設置

git config --system user.name "hic"
git config --global user.name "hic" git config user.name "hic"

電子郵件

git config --global user.email "[email protected]"

設置文本編輯器,默認爲vi,這裏設置爲emacs

git config --global core.editor emacs

查看配置信息

git config --list

如果要查看某個特定的環境變量,只要把它的名字放到最後即可

git config user.name
 
 
4 選擇工作目錄
 

選擇一個工作目錄,開始工作,同時我們添加一些文件和目錄。

~$ mkdir test
~$ cd test/
~/test$ ls
~/test$ echo "Hello world! " > README
~/test$ echo "This is a test! " > file
 
 
5 初始化
 
 
~/test$ git init Initialized empty Git repository in /home/hic/test/.git/
~/test$ la file .git README

執行這條命令之後,在test目錄下會出一個隱藏的.git目錄,該目錄會保存工程中所有的信息。

 

6 Git中文件的三種狀態
 

在Git中,文件只有三種狀態,已修改,已暫存和已提交。這三個文件分別放在工作目錄,暫存區域和git目錄。當一 個文件修改完畢之後,它仍然在工作目錄;只有當它被add之後,纔會進入暫存區域,文件狀態變爲已暫存;最後,當文件被 commit之後,它就會進去git目錄區域。這三個文件狀態非常重要,請慢慢理解。

 

7 add命令暫存已修改文件
 

接着上面的初始化。當初始化之後,在test目錄下,有README,file和.git/三個文件或目錄,其中.git/是在初始化之後生成的。

此時在test中的文件都是存在於工作目錄區域,尚未添加到暫存區。使用下面的命令可以查看到如果此時我要修改README文件。

~/test$ git status
# On branch master # 
# Initial commit #
# Untracked files:
# (use "git add <file>..." to include in what will be committed) #
# README
# file nothing added to commit but untracked files present (use "git add" to track)

你會發現,README和file文件均是Untracked。接着使用add命令將它們添加到暫存區。

~/test$ git add .
~/test$ git status
# On branch master #
# Initial commit #
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage) #
# new file: README
# new file: file #

此時的文件均已放在暫存區,其中git add . 就是將本目錄下所有文件暫存。

 

8 commit命令提交已暫存文件
 

暫存區其實更像是一個緩衝區域,只有將文件commit到git目 錄區域才表示真正的提交。其中commit命令提交的時候,需要對提交內容進行說明,有兩種方法,一種是使用 -m "Message" 指令,這適用與比較短小的信息;另外一種就是使用編輯器進行編輯,前面設定的編輯器就是爲它服務的,默認編輯器是vi,不過我這裏設定的是emacs。

在這裏,我使用-m參數。其中-a選項,表示提交所有在暫存區的文件,當然你也可以使用 git commit file README這樣的方式來提交。

~/test$ git commit -a -m "hahah"
[master (root-commit) 81fde76] hahah 2 files changed, 3 insertions(+) create mode 100644 README create mode 100644 file

這是再查看文件狀態,就會發現沒有可以提交的文件了。

~/test$ git status
# On branch master nothing to commit (working directory clean)
 
 
9 分支
 

如果事先沒有作出任何的更改,一個項目是沒有分支的,它只有一條主線,例如:

~/test$ git branch * master

這裏master就是主幹,就是整個開發的流程,它前面的星號表示當前開發的流程。

如果在開發過程中,我們突然需要添加某個功能,或者打上某個補丁,可以在 master主幹上添加一個分支,比如host,例如:

~/test$ git checkout -b host
Switched to a new branch 'host'
~/test$ git branch
* host master

這個時候,你可以清楚的看到星號已經在host頭上,表示當前已經切換到host上,你可以開發你的補丁,而不會打亂主幹的開發。

如果你在開發過程中想要回到主幹,可以使用checkout命令進行切換。

~/test$ git checkout master
Switched to branch 'master'

此時,你又回到主幹了。

 

10 合併
 

當某個分支的開發結束後,你會需要將其合併到主幹上,從而集中精力進行主幹的開發。合併前只需要將指針切換到主幹,即master,然後使用merge命令。

~/test$ git checkout host Switched to branch 'host'
~/test$ echo "lsdknl" >> file
~/test$ git add file
~/test$ git commit file -m "add somthing"
[host 0dacfd9] add somthing 1 file changed, 1 insertion(+)
 
~/test$ git checkout master Switched to branch 'master'
~/test$ git merge host Updating 81fde76..0dacfd9 Fast-forward file | 1 + 1 file changed, 1 insertion(+)

此時的host分支已經失去作用了,可以將刪除。

~/test$ git branch -d host Deleted branch host (was 0dacfd9).
 
 
 
11 遠程庫操作
 
 
11.1 查看當前遠程庫
 
git remote
 
 
11.2 添加遠程庫
 
git remote add emacs git://github.com/lishuo/emacs
 
 
11.3 從遠程庫抓取數據
 
git fetch [remote-name]
 
 
11.4 推送數據到遠程倉庫
 
git push [remote-name] [branch-name]
 
 
11.5 查看遠程倉庫
 
git remote [remote-name]
 
 
11.6 遠程倉庫的刪除和重命名
 
git remote rm [remote-name] git remotw rename form-name to-name
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章