2016年2月11日 星期四

Git指令:Rebase觀念 & 雜項

Atom

最近改試用Atom, 下面是個人認為可以安裝的套件.
1. Autocomplete-python 自動幫你把 python 語言完成,變相可以放更多心思在開發而不是重覆代碼上面
2. linter-flake8 可以幫你將某些重點的代碼 highlight,有助減少錯誤
3. atom-runner 按下 Alt + R,就可以在右方看到你的代碼在執行了!

Git branch and merge/rebase

雖然Merge 跟 Rebase都是合併分支但是使用上還是有些不一樣. 合併的方式與步驟不同
* MERGE 如何合併 – 假設你有一個 new_feature 分支想合併回 master – 你會這樣執行
* git checkout master
* git merge new_feature (會建立起一條分支線圖)

  • REBASE 如何合併 – 假設你有一個 new_feature 分支想合併回 master ( 事實上是將自己的所有變更 commit 在 master 最新版後面)
    • git checkout new_feature
    • git rebase master (會讓 new_feature 併進 master 的線圖上)
    • git checkout master
    • git merge new_feature

Rebase優點:
用來確保整體分支線圖保持乾淨, 還有在整理分支線圖時會用到.
enter image description here

Run below command will print out the history of your commits, showing where your branch pointers are and how your history has diverged.

$ git log --oneline --decorate --graph --all

發生 confict 時的處理步驟

  1. 若合併失敗 (發生confict),會停留在 Unmerged 狀態,需人工介入處理,處理完衝突,需繼續完成合併動作 (需做一次commit動作)
  2. 將發生 confict 的檔案打開,處理內容( 別忘了刪除<<<、===、>>>)。
  3. 使用 git add 將處理好的檔案加入 stage。
  4. 反覆步驟 1~2 直到所有 confict 處理完畢。
  5. git commit 提交合併訊息。
  6. 完成

如果放棄合併可用:

$ git reset --hard

取消已暫存的檔案

有時候手殘不小心將還沒修改完的檔案使用 git add 加入了 stage ,這時候可以使用 git reset HEAD <file> 來將這支檔案取消 stage:

$ git reset HEAD <file name>

取消修改過的檔案

想完全放棄這次修改 (將檔案狀態回復到最新的一次 commit 時的狀態):

$ git checkout -- <file name> 

git reset中 hard 與 soft 的差異

使用 git reset 的時候,都會把目前狀態回復到你想回復的版本,但若是不加參數的情況,會把你做過的修改仍然保留,但是,若是加上 —soft 參數,則會把做過的修改加入 stage ,若是加上 hard 參數的話則是把做過的修改完全刪除,回到那個版本原本的樣子。

協作

  1. 利用clone下載檔案
$ git clone git@github.com:ihower/sandbox.git
  1. 遠端更新
$ git pull or git pull origin master

實際作用是先 git fetch 遠端的 branch,然後與本地端的 branch 做 merge,產生一個 merge commit 節點
3. 將 Commit 送出去

$ git push or git push origin master

實際的作用是將本地端的 master branch 與遠端的 master branch 作 fast-forward 合併。如果出現 [rejected] 錯誤的話,表示你必須先作 pull。

參考:
1. http://www.slideshare.net/WillHuangTW/git-merge-rebase
2. http://gogojimmy.net/2012/01/21/how-to-use-git-2-basic-usage-and-worflow/
3. http://eltonnoteshk.blogspot.tw/2015/10/ide-atom-20102015.html
4. https://git-scm.com/

1 則留言: