圖解優秀的版本控制工具GIT(2)

發表于:2013-11-11來源:nettedfish作者:不詳點擊數: 標簽:Git
在開始階段,我們處于topic分支上,執行git rebase master,那么169a6和2c33a上發生的事情都在master分支上重演一遍,分別對應于master分支上的e57cf和f7e63,最后

  在開始階段,我們處于topic分支上,執行git rebase master,那么169a6和2c33a上發生的事情都在master分支上重演一遍,分別對應于master分支上的e57cf和f7e63,最后checkout切換回到topic分支。這一點與merge是一樣的,合并前后所處的分支并沒有改變。git rebase master,通俗的解釋就是topic分支想站在master的肩膀上繼續下去。

  cherry-pick

  cherry-pick命令復制一個提交點所做的工作,把它完整的應用到當前分支的某個提交點上。rebase可以認為是自動化的線性的cherry-pick。

  例如執行git cherry-pick 2c33a :

  正反過程對比

  理解了上面最晦澀的幾個命令,我們來從正反兩個方向對比下版本在本地的3個階段之間是如何轉化的。如下圖(history就是本地倉庫):

  如果覺得從本地工作目錄到本地歷史庫每次都要經過index暫存區過渡不方便,可以采用圖形右邊的方式,把兩步合并為一步。

  Some Tips

  如何管理空文件夾

  git本身不會對空文件夾進行版本控制,如果希望項目被clone后自帶一些空目錄,那么可以:

  在要被管理的空目錄下創建.gitignore文件。

  在.gitignore文件內寫入如下代碼。第一行忽略所有文件。第二行除了.gitignore文件不被忽略。

  *

  !.gitignore

  用git實現遠程備份

  git本地倉庫的初始化采用git init . 即可。如果需要搭建異地備份,除了可以使用開源的gitlab等來搭建服務器外,還可以git --bare init . 來初始化遠服務器倉庫,然后把本地倉庫推送到服務器倉庫。這樣可以輕松實現代碼或文檔的異地備份,即使把代碼備份到本地也是可以的(這或許可以避免rm -rf *的悲劇哦):

  git remote add origin git://127.0.0.1/abc.git

  然后建立本地到本地的ssh信任關系,enjoy yourself!

  無密碼登陸git服務器

  調試技巧:ssh -v git@github.com

  GIT與知識管理

  日常工作中,我習慣用git來管理github和本地的代碼;也用git來管理各種配置文件,例如.vimrc,.bashrc等,以及各種技術文檔。我的博客用vim+markdown來編寫,也用git來做版本控制,很方便。感謝linus大神為我們寫了這么好的工具!

  歡迎批評指正!

原文轉自:http://nettedfish.sinaapp.com/blog/2013/08/05/deep-into-git-with-diagrams/

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97