教學:http://blog.gogojimmy.net/2012/01/17/how-to-use-git-1-git-basic/
---
PM GitLab 實作範例:
‧ 上傳一個已完成之專案:
- 登入 GitLab (http://120.117.72.71/) → 進入/建立 Group (請整齊分類)
- 新增 Projects:
- 輸入 Project path:JAVA-CustomizablePizza
- 輸入Description:簡單說明…
- 權限(設內部會員可使用):Internal Project
- 至本機下載剛創立的 Git 專案:
- 選擇「HTTP」取得網址
- 本機下指令: git clone git@120.117.72.71:$USER/javaProject.CustomizablePizza.git
- 上傳做好的程式及檔案至 GitLab 的 javaProject.CustomizablePizza 專案:
- cd javaProject.CustomizablePizza.git
- cp ../CustomizablePizza .
- cp ../CustomizablePizza_v5.jar .
- cp ../README.md .
- git add .
- git commit -m "Java Project Customizable Pizza - OK"
- git push -u origin master
- master 下的後續更新:
- touch file1
- git add
- git commit -m "add file1"
- git push -u origin master
- 建立新分支(版本)來加入新功能或 Debug
- git branch → 查看目前所在分支
- git branch TEST → 建立一個新分支名稱為 TEST
- git checkout TEST → 切換至分支 TEST
- git branch → 檢查所在分支
- edit file → 變動、更新檔案(原 master 下檔案不會被變動)
- git add <file>
- git commit -m "new message"
- git push -u origin TEST → 至 GitLab 會發現有新版本 TEST
- 合併分支至主版本 master (確定所增功能或 Debug 版本完成再做)
- git checkout master → 會發現剛剛所編的 file 不見為正常,因為是不同 branch
- git merge TEST → 可以 ls 又發現剛剛所編檔案合併過來了,接著只要上傳至 GitLab
- git add .
- git commit -m "Combine TEST and master"
- git push -u origin master → 此時可能會提示訊息要使用 git pull
- git pull
- 登入 GitLab 查看完成
- 將私人專案共享至 Group 的方法
- 換入 GitLab
- Projects → 選則要共享的專案
- Settings → Project Settings → 「Transfer project」→ 選擇所要加到的 Group
- 輸入提示字串(粉底紅字) → 按 CONFIRM → 完成。
---
零、安裝 Git:
‧ Mac : 安裝 Homebrew
‧ Linux(APT):apt-get install git-core
‧ Linux(YUM):yum install git-core
‧ Windows:安裝 msysGit
---
壹、設定 Git UI
‧查看設定:
git config --list
‧可以記錄 git commit 提交的作者資訊:
git config --global user.name "廖凱霖" git config --global user.email "ma330101@stust.edu.tw"
‧自訂指令 alias 功能(git status → git st):
git config --global alias.st status
‧設定 git 自動忽略’空白’的變化(適需求而定):
git config --global apply.whitespace nowarn
‧設定 git 輸出加入顏色變化:
git config --global color.ui true---
貳、常用上傳基本指令:
‧ 查看 Git 狀態:
git status
‧ git add 加入 stage 狀態(-i 互動模式):
git add <File> git add -i <File>
‧ git commit 提交 (-m 加入訊息)(-v 列出更動記錄):
git commit git commit -m <Message> git commit -v
‧ 查過去記錄(更詳細過去 --stat)(-p 檔案詳細記錄)
git log git log --stat git log -p
‧ push 上傳流程:
1. mkdir workDirectory 2. git init 3. git remote add origin http://120.117.72.71/fate615030/gitProject.git 4. git add <File> 5. git commit -m “<Message>" 6. git push -u <remote> <branch> → 例如: git push -u origin master
‧ 讓 Git 忽略版本控制的追蹤(編輯檔案加入要忽略的檔名):
vim .gitignore---
參、第一次使用 Git
‧自建一個新的資料庫( Repository)
1. 建立一個目錄: mkdir gitProject 2. 進入目錄: cd gitProject 3. git init 4. 輸出告訴我們建立好了一個新的 Git Repository 。 → Initialized empty Git repository in /UsersPath/gitProject/.git/
‧複製別人的 Git Repository
git clone http://120.117.72.71/fate615030/gitProject.git---
肆、管理分支(Branch):
‧ 安裝圖形化介面 GitGUI:
sudo apt-get install gitk gitk --all
‧ 查看分支(本機、-r 遠端、-a 全部):
git branch git branch -r git branch -a
‧ 加入一個新分支名為 cat:
git brach cat
‧ 切換至 cat 分支:
git checkout cat
‧ 建立新分支並切換過去:
git checkout -b "branch名稱"
‧ 刪除分支:
git branch -d "branch 名稱"
‧ 分支整理(cat 會保留並加到master):
git rebase master
‧ 分支完全合併:
git merge cat
‧ 查看不同分支差異:
git diff cat master
‧ 取消上一次合併 merge:
git reset --hard ORIG_HEAD---
伍、當合併 branch 發生衝突(conflict):
1. 將發生 conflict 的檔案打開,處理內容( 別忘了刪除<<<、===、>>> )。
2. 使用 git add 將處理好的檔案加入 stage(git add)。
3. 反覆步驟 1~2 直到所有 confict 處理完畢。
4. git commit 提交合併訊息。
5. 完成
---
陸、反回功能:
‧ 取消上一次 merge:
git reset --hard ORIG_HEAD
‧ 取消暫存檔案(add):
git reset HEAD <file>
‧ 放棄檔案修改(回到上次 commit):
git checkout -- <file>
‧ 修改 commit 訊息:
git commit --amend
‧將檔案1、檔案2加入上次 commit:
git commit --amend 檔案1 檔案2 …
‧ 回複上一個 commit 版本:
git reset --hard HEAD^
‧ 回複上兩個 commit 版本:
git reset --hard HEAD~2
‧取消 commit,但保留修改過檔案:
git reset HEAD^ --soft---
柒、遠端 Git
‧建立一個 tracking 遠端
branch git branch --track <branch名稱> <遠端branch>
‧將已存在的 branch 設定成遠端
git branch --set-upstream <branch> <遠端branch>
‧刪除一個 tracking 的遠端
branch git -r -d <遠端branch>
‧刪除一個 repository 的 branch
git push <repository名稱> :<遠端branch>
‧加入一個 remote repository
git remote add <remote名稱> <remote網址>
‧下載遠端的 branch 並合併至本機
git pull <remote名稱> <branch名稱>
‧本機上傳至遠端的 branch
git push <remote名稱> <branch名稱>---
捌、Git 整體工作規程:
1. 在專案中會有一條主 branch 是大家將開發好或是修好的東西合併回去的對象,所有要開發的新功能或是修 bug 都是從主 branch 拉出一條新的 branch 去工作。
2. 當你完成一個階段性的任務時,將你剛剛 所新增的內容使用 git add 加入到 stage 的狀態,並且使用 git commit 加上 commit 的訊息來提交一次的 commit。
3. 反覆動作 2 直到你完成這支 branch 的主要目的(新功能/修 bug ),若這時你離主 branch 已經有一段時間,或是確定主 branch 上已經有新的 commit ,使用 git rebase 將自己的分支整理然後使用 git merge 合併回主 branch,反之則是直接使用 git merge 將自己 branch 的內容合併回去。