延續上一篇的基本指令, 這裡介紹更多Git的操作指令
git config -l/ git config –unset / git config alias 指令
開啟到Git bash環境下, 輸入以下指令,
$git config -l
就可以看到三個設定檔呈現在A/B/C區域中, 優先權以A最低, B次高, C最高!
A區為–>安裝Git路徑裡的/mingw64/etc/gitconfig, 也可以利用下面各區域指令查詢.
$git config –system -l
B區為–>登入帳號的home directory裡的.gitconfig
$git config –global -l
C區為–>檔案庫資料夾裡的.git/config檔
$git config –local -l
一般是直接操作C區裡的相關config指令, 在這裡已經利用下面指令增加了一組新的user.name 和user.email
$git config –local user.name ‘test123’
$git config –local user.email ‘test123@gmail.com’
主要用意是,當推送進檔案庫時, 就不需要在使用git commit時, 多加–author指令來設定使用者名稱與email.而且也可以隨意更改不同的名稱與email.
如果要取消此使用者名稱或email,也可以利用下面指令完成.
$git config –unset user.name
$git config –unset user.email
有時會遇到指令比較長, 如果打字慢的, 很會浪費時間, 也容易打錯, 所以可以利alias別名的功能來簡化指令的輸入.
$git config alias.s ‘status’ //利用alias的別名s, 來代替status這一個完整的指令.
在圖中的最後一行就可以看到, 當用此指令時, 就可以簡少打指令的時間, 如果要移除, 一樣用–unset指令就可以了!
$git s
$git config –unset alias.s
一般安裝好Git程式時, 其實都是用預設的帳號名稱去使用, 也就是B區的帳號名稱,但為了比較有彈性的操作, 所以利用以上相關指令去增加不同帳號名稱使用.
diff
一開始在windows環境下C:\test 資料夾中, 建立二個文字檔, 裡面各自加入一行英文字.
此時就可以用diff 的指令去比較二個文字的差異性了, 此指令目前不支援中文, 之後會有git UI畫面介紹, 所以現在大約了解一下就可以了! 畢竟git 的指令很多, 無法一一完整描述. 輸入以下指令就會顯示出二個檔案的相關差異了.
$diff content3.txt content4.txt
touch .gitignore
$touch .gitignore //新增一個忽略的檔案, 沒有副檔名, .gitignore的檔案中也要把自己加入.
— .gitignore —
.gitignore
Folder/ //它是資料夾, 如果名稱之後有一個 ” / ” 反斜線的話.
touch指令會新增一個空檔案, 也就是沒有內容的檔案, 然後把本身的檔名也要加入, 和增加要忽略的檔案名稱或資料夾名稱, 用意為–>在.gitignore檔案裡中的任何檔案(資料夾)都不會被git指令所建立索引與推進資料庫.
log
$git log –author=’t’ //列出只有以t開頭的人名所執行的commit
$ git log –shortstat //顯示簡略的log檔內容
一個指令內, 一定會有各式不同的參數可供使用!
branch
這是其中一個很重要的功能, 當一個專案的進行時, 建立一個branch(分支)時, 可以在另一個地方去新增專案所需要的功能, 在完成這一部份時, 可以再透過merge或 rebase指令做合併, 即使要被合併的主線也有更新, 也並不會影響.
但如果Git的檔案庫是在遠端的伺服器上,就不適合執行rebase指令了!
下面列出部份相關指令的用法.
$git branch //列出所有的分支
$git branch three //建立新的分支”three”
$git checkout 分支名稱 //切換到不同的分支名稱
$git branch third second //在”second”分支中, 再建立一個”third”分支
$git checkout -b second //建立一個新的分支(second), 然後直接切換過去新的分支
$ gitk –all & //以背景模式啟動Git圖示介面,而且可以看到全部分支
$ git branch -d 要刪除的分支名稱
–>$ git branch -d third
$touch content5.txt //此時已經切換到second分支
$git add .
$git commit -m ‘第二分支中建立一個content5的文字檔’
$gitk
下圖顯示, 目前利用上面相關指令所產生的’second’第二個分支時, 所增加的content5這個文字檔.
rebase
$git checkout second //切換到second分支上
$git rebase master //將主分支master同步到目前分支所在的分支
reset
$git reset commit節點
執行上面的指令之後, 可以回到rebase之前的節點!
到目前為止, 了解git許多指令的用法, 但並沒有包含全部指令的介紹!如有興趣者, 可以利用Google搜尋[Git],相信可以找到更多內容去學習.
這裡用一個簡單的例子來說明開發專案時, 如何利用這些指令來做學習,下一篇也將會使用git UI的程式,用圖解的方法來介紹使用git!
專案開始階段需要下列幾個項目工作:
1.建立一個新的程式專案, 例如:Android Studio 的工作環境. //cd (進入程式專案的資料夾路徑), 利用git bash的指令去操作
2.初使化專案的git 檔案庫. //git init
3.編輯.gitignore檔案. //排除不必要存入git檔案庫的檔案和資料夾. //Android Studio的工作環境, 會自動產生此檔案.
4.建立開發程式專案用的分支. //一般都會有其他分支, 方便在開發專案時另外在新增功能用, 或是debug, 或是其他作用, 最後在分支完成的功能, 再利用merge或是rebase去做合併於主專案的分支, 而完成開發專案的工作.
下圖為使用git bash環境中, 使用指令方式去建立git檔案庫. 可以在圖中看到已經先在windows環境中利用Android Studio先建立一個新專案, 資料夾名稱叫(android_app). 一開始先切換到此專案的工作路徑.
$cd C:/test/android_app //C槽內的test資料夾中的android_app
$git init //初使化的git 檔案庫
$git status //此時可以看到目前有些檔案/資料夾還沒有送進檔案庫中. (後面有一個反斜線為資料夾)
$git add . //將上圖的untracked files 送入索引區
$git status //此時可以看到目前已送入索引區, 但還沒有送進檔案庫中!
$git commit -m ‘The first init’ //第一次加入節點內容,送入檔案庫裡.
此時在Android Studio環境中, 隨意加入一個功能.
在git環境中,可以利用git status發現檔案庫中, 有哪些檔案已變更了, git bash的程式可以不需要一直開著, 只要當檔案庫中有任何異變, git 都會察覺到, 此時一樣和一開始用git add . 然後再一個git commit -m ‘XXXX’ 就完成此次變更的推送到資料庫中了!
到目前為止依舊在master分支上作業, 這裡新增加一個開發專案的分支”testing’, 同時也立即切換過去.
$git checkout -b testing
然後一樣在Android Studio環境中再增加一個功能, 或任何變動, 利用git status依然可以看到哪些有變動了!
和剛才一樣, 用git add . ,然後再一個git commit -m ‘XXXX’ 就完成此次變更的推送到資料庫中了!
最後在分支testing上, 完成工作之後,然後利用merge合併到主分支master.
$git branch //一開始先確認目前分支的所在, 以及共有幾個分支名稱
$git checkout master //切換到master主分支上.
$git merge –no-ff testing //將分支testing, 合併到主分支master上.也就是不要用(Fast-forward merge)快轉合併, 但它是會產生一個commit節點
此時就利用gitk圖形介面可以看到, 在圖的下面, testing這個分支已經合到master裡了!
到目前為止, 都是屬於單人的開發模式來示範, git強大的管理能力是在多人的同時使用, 以及遠端存取, 使用方式也是用類似的觀念來操作, 下篇會再說明如何利用git UI來管理.