[Git] gerrit flow

gerrit 流程:
1. git clone 完後,先開一個 branch 給開發用: git checkout -b <branch_name>
2. 在 new branch 修改完後,本地commit: gerrit_commit (多了 commit message template)
3. 把 new branch 的 commit 送到 remote 端:
(1) gerrit_pull (做 fetch + rebase)。如遇到 conflict,把 >>>>HEAD 的地方修改,再 git rebase –continue
(2) 整理 local 端的 commit: git rebase -i HEAD~<number>,把後面的 commit squash 到第一個
(3) 送到 server 上 review: gerrit_push

PS: Windows 上 pull / push 要加 -u <user_name>
PS: local 端的修改如果不想要新增一個 commit node,用 git commit –amend 可合併到最後一個 commit

Git 中的 AutoCRLF 與 SafeCRLF 換行符問題

CR回車 LF換行
Windows/Dos CRLF \r\n
Linux/Unix LF \n
MacOS CR \r

一、AutoCRLF

#提交時轉換為LF,檢出時轉換為CRLF
git config --global core.autocrlf true

#提交時轉換為LF,檢出時不轉換
git config --global core.autocrlf input

#提交檢出均不轉換
git config --global core.autocrlf false

二、SafeCRLF

#拒絕提交包含混合換行符的文件
git config --global core.safecrlf true

#允許提交包含混合換行符的文件
git config --global core.safecrlf false

#提交包含混合換行符的文件時給出警告
git config --global core.safecrlf warn

原文出處:http://boliquan.com/git-and-autocrlf-in-safecrlf-line-break-problem/

[git] 如何在 codio 建立遠端 repository

codio 是很棒的線上 text editor,除了可以多人同時協作開發、內建 git,還有許多 snippets 幫助程式師 auto complete。本篇教你如何把 codio 專案變成 remote git repository。
1. 首先要能 ssh 到你專案的那台虛擬主機。codio 有上傳 public key的功能,在功能表的 Project -> Upload Public Key to the Box。上傳public key 以後就能連進去(亂搞),這裡就不說明如何產生 public key 了。
2. ssh 進去主機:功能表的 Project -> Box Info 裡面有類似 ssh codio@ssh1.codio.com -p <port> 的這行字,打開本機 terminal 貼上這行字 -> Enter,確定是否可以連進去。
3. 連進去會到~/workspace,ls -a 可以看到你的專案以及 .git 目錄,代表專案已經有自己的 git repository。
4. 我們要建立此專案的純 git repository (就是bare repository),當作我們的 remote repository。首先cd 到家目錄,建立一個 git 目錄,然後在此目錄建 bare git repo:
cd ~
mkdir -p git/<專案名稱>.git && cd git/<專案名稱>.git
git init –bare –shared
5. 切回原本 codio 專案的目錄: cd ~/workspace/<專案名稱>,加上remote url:
git remote add origin /home/codio/git/<專案名稱>.git
6. 接下來要合併 remote repo 進來:
git fetch origin
git merge -s ours –no-commit origin/master
git read-tree –prefix=/home/codio/git/<專案名稱>.git -u origin/master
git commit -m “Merge remote repo into our local repo"
git push origin master
7. 這樣,/home/codio/git/<專案名稱>.git 就會與 codio 專案的 repo 合併了,也就是說以後可以在local 端 git clone ssh://codio@ssh1.codio.com:<port>/home/codio/git/<專案名稱>.git,改完再git push回去。

VS2012 Git頁面功能一覽

1.Home:
i).Changes – 跳到2
ii).Unsynced Commits – 看目前Local與Remote的差異
<加過Remote Repository URL>:
a.Sync – 同步Local與Remote(自動抓最新的Commit)
b.Pull – 把Remote拉回Local
c.Push – 把Local推送到Remote
d.Actions
Open in File Explorer – 打開專案目錄
Open Command Prompt – 打開cmd.exe
View History – 看Git Log
e.Incomming Commits – 還沒Push到Remote的Commit
f.Outgoing Commits – 已與Remote同步的Commit
<沒加過Remote Repository URL>:
e.Publish to Remote Repository – 輸入Remote URL,必須是HTTP(S)協定!SSH還不支援,詳見LibGit2Sharp相關討論。(補充: 儲存credential的方法: git config credential.helper store,刪除: git config –unset credential.helper;若是Windows可以利用git-credential-winstore小工具,它會幫你儲存到控制台→使用者帳戶→管理您的認證。資料來源)
iii).Branches
a.Changes – 跳到2
b.Unsynced Commits – 跳到ii
c.New Branch – 新增Branch、輸入Branch Name
d.Merge Branch – 合併Branch
e.Actions – 跳到1.ii.d
f.Published Branch – Remote的Branch List
g.Unpublished Branch – Local的Branch List
iv).Settings – 跳到3

2.Changes: 看目前Local尚未Commit的檔案
i).Commit – 輸入Commit message
a.Commit – 提交到Local
b.Commit and Push – 提交並Push
c.Commit and Sync – 提交並Push & Pull
d.Actions – 跳到1.ii.d
e.Included Changes – Local已做Git Add、尚未Commit的檔案
f.Excluded Changes – Local已做Git Add、不打算Commit的檔案
g.Untracked Files – Local尚未做Git Add的檔案

3.Settings:
i).Git Settings
Global Settings –
設定 User Name、Email Address、Default Repository位置
Repository Settings –
設定 Ignore File、Attribute File

參考資料:http://visualstudiogallery.msdn.microsoft.com/abafc7d6-dcaa-40f4-8a5e-d6724bdb980c

[轉] Git-rebase 小筆記

http://blog.yorkxin.org/posts/2011/07/29/git-rebase
補充: 再搭配ihower這個影片