- 示例中 Git 倉庫目錄為
/git/OnlineBookingSystem/- 下文中所有路徑均從根目錄
/git/開始。$為終端提示符。當(dāng)前路徑一般會標(biāo)識在$前方的括號內(nèi),如果命令較多,則標(biāo)識在代碼段頭部。#后為輸出內(nèi)容。%后為筆者注釋內(nèi)容
創(chuàng)建倉庫目錄
(git) $ mkdir OnlineBookingSystem
(git) $ cd OnlineBookingSystem
查看幫助信息
git help 命令用于查看常見命令的幫助信息。
查看當(dāng)前目錄狀態(tài)
git status 命令用于查看當(dāng)前目錄中是否存在倉庫,如果存在,報(bào)告?zhèn)}庫狀態(tài)。
(git/OnlineBookingSystem)
$ git status
# fatal: Not a git repository (or any of the parent directories): .git
% 注釋:該目錄中暫時還沒有建立過git倉庫。
建立新倉庫
git init 命令用于建立一個全新的倉庫。
(git/OnlineBookingSystem)
$ git init
# Initialized empty Git repository in C:/Users/11523/Desktop/git/OnlineBookingSystem/.git/
% 注釋:在該目錄中新建倉庫。
$ git status
# On branch master
#
# Initial commit
#
# nothing to commit (create/copy files and use "git add" to track)
% 注釋:新倉庫已經(jīng)建立,默認(rèn)在master分支。
跟蹤新文件
git add <filename> 命令用于將指定文件加入跟蹤的范圍并將變更存至緩存區(qū)。
該命令可以多次使用,緩存區(qū)會存儲每個文件在最后一次跟蹤時的狀態(tài)。
(git/OnlineBookingSystem)
% 注釋:使用如下命令前,在該目錄新建一個README.md文件。
$ git add README.md
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: README.md
% 注釋:已經(jīng)開始跟蹤README.md,等待變更被提交。也可以使用"git rm --cached <file>..."移除該緩存。
提交
完成階段性的工作之后,可以將代碼的變動提交到倉庫。
提交變更
git commit -m "commit information" 命令用于提交當(dāng)前緩存中的變更,并且可以指定提交的信息。
提交變更實(shí)際上是將緩存區(qū)中記錄的變更提交至倉庫。若最后一次 add 操作后修改了文件甚至根本沒有追蹤過某些文件,則這些文件的狀態(tài)不會被提交。因此建議在提交變更前使用 git status 命令查看當(dāng)前目錄狀態(tài),確保緩存區(qū)的文件狀態(tài)都是最新的。
(git/OnlineBookingSystem)
$ git commit -m "README.md"
# [master (root-commit) 2f31dad] README.md
# 1 file changed, 0 insertions(+), 0 deletions(-)
# create mode 100644 README.md
% 注釋:該變更已經(jīng)提交。
$ git status
# On branch master
# nothing to commit, working tree clean
% 注釋:當(dāng)前本地倉庫已經(jīng)最新,無需提交。
查看提交記錄
git log" 命令用于查看所有 commit 記錄。
(git/OnlineBookingSystem)
$ git log
# commit 2f31dadcb141ad4ebf9452ec64fb81263e32a8c4 (HEAD -> master)
# Author: UserName <example@abc.com>
# Date: Sat Aug 12 23:33:10 2017 +0800
#
# README.md
% 注釋:該記錄就是上述提交的記錄。
分支
分支(branch)相當(dāng)于當(dāng)前狀態(tài)的一個副本,可以在該副本上繼續(xù)工作而不必?fù)?dān)心影響到原來的狀態(tài)。
Git 的分支方式與其他版本控制系統(tǒng)不同。在很多版本控制系統(tǒng)中,創(chuàng)建分支通常意味著拷貝一份完整的代碼,效率較低。而 Git 通過分支指針的方式實(shí)現(xiàn)了高效率的分支操作,因此建議使用分支來控制工作流程。
查看當(dāng)前分支狀態(tài)
git branch 命令用于查看當(dāng)前分支狀態(tài)。
(git/OnlineBookingSystem)
$ git branch
# * master
% 注釋:當(dāng)前只有一個分支master,并且處于激活狀態(tài)。
建立新分支
git branch <branchname> 命令用于創(chuàng)建新分支(但不會改變分支激活狀態(tài))。
(git/OnlineBookingSystem)
$ git branch develop
% 注釋:新建分支develop。
$ git branch
# develop
# * master
% 注釋:當(dāng)前有兩個分支(master、develop),并且master分支處于激活狀態(tài)。
更改活動分支
git checkout <branchname> 命令用于激活指定分支。
(git/OnlineBookingSystem)
$ git checkout develop
# Switched to branch 'develop'
$ git branch
# * develop
# master
% 注釋:當(dāng)前有兩個分支(master、develop),并且develop分支處于激活狀態(tài)。
新建并激活分支
git checkout -b <branchname> 命令用于創(chuàng)建新分支并激活該分支,等效于使用上述兩個命令。
合并分支
git merge <branchname> 命令用于合并分支。使用時需切換到最后保留的分支上,執(zhí)行此命令將指定分支合并到當(dāng)前分支上。
如果兩個分支都對某個文件做了修改,那么合并操作中會產(chǎn)生沖突。沖突內(nèi)容會被 Git 表明在文件中,在文件中解決沖突后再次提交即可解決沖突。
刪除無用分支
git branch -d <branchname> 命令用于刪除無用分支。其中無用分支包括新建的分支與已經(jīng)合并到其他分支的分支。
強(qiáng)制刪除分支
git branch -D <branchname> 命令用于強(qiáng)制刪除 git branch -d <branchname> 命令無法刪除的分支,例如尚未合并到其他分支的含有新代碼的分支。
版本標(biāo)簽
git tag <version> 命令用于產(chǎn)生版本標(biāo)簽。筆者建議代碼開發(fā)至新版本時直接創(chuàng)建一個新分支 <versionname> 存放該版本代碼,而不是使用標(biāo)簽。