GitHub常用命令

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




Date: 2012-08-27 一

Author: hic

Org version 7.9.1 with Emacs version 23

Validate XHTML 1.0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章