最近幫別公司處理 denying non-fast forward 的 git server 問題,沒事就別動檔案權限,不管是不是修改內容,只要用 chmod 指令,Git 還是會判別檔案變動。處理 git push 直接給我噴 $ git push –force origin master Total 0 (delta 0), reused 0 (delta 0) error: denying non-fast forward refs/heads/master (you should pull first) To git@git.example.com:myrepo.git ! [remote rejected] master -> master (non-fast forward) error: failed to push [...]
Tag Archive 'git'
在 git Commit 之前檢查 PHP 是否有錯誤
Posted in Git on Feb 8th, 2013
在 commit code 之前,程式設計師必須確保程式碼的正確性,包含不要放入 debug message 到 git server,寫了一個簡單的 pre-commit 程式,來確保 PHP 是否有 Parse error,或者是在寫 CoffeeScript 及 JavaScript 時,常常會用到 console.* 來當作中斷點或者是顯示變數資料,這也是需要盡量避免 commit 到伺服器,你可不想要長官 review 的時候看到這麼多 debug 訊息吧。這時候就是需要 git-hooks 的 pre-commit 幫忙檢查這些 Syntax 語法,可以直接參考我的 git-hooks 專案。安裝方式很簡單: $ git clone https://github.com/appleboy/git-hooks.git $ chmod +x bin/hooks.sh pre-commit $ ./bin/hooks.sh your_project_path 如果使用 git commit 之前,就會檢查 .js、.coffee、.php 等副檔名。
今天筆者來介紹幾套目前免費的雲端虛擬主機服務,自從 Git 版本控制的出現後,大家可以發現,以往免費的虛擬主機搭配後台 Panel,這種模式已經不再看到,取代而之的就是用 Git 來管理程式碼,而不是用 FTP 上下傳方式了。筆者認為學會 Git,是一件非常重要的事情,這樣可以嘗試不同雲端服務,,像是 PHPFog,Pagoda Box,AppFog …等。這次介紹的雲端主機服務不同於 Linode VPS,Linode 是可以拿到完整的虛擬主機權限,可以進行主機的效能優化,以及安裝合適的套件。
昨日去台北簡報如何快速學習 git,投影片主要是給新手 git 基礎介紹,如何使用 branch model,git submodule 及 tag。內容不會很難,適合之前就玩過任何一套 version control 的使用者來閱讀,如果有 svn 基礎,學習會比較輕鬆。簡報搭配 github 內容來教學。 Introduction to git View more presentations from Bo-Yi Wu 投影片內容參考 Git Pro book 這網站教學,大家可以直接看原文說明,會更清楚 Git 使用。
Github 一年前宣佈開始支援 SVN Client,不過這是必須透過 https://svn.github.com 才可以取得資料,跟一般 git 的網址不一樣,然而就在最近宣佈了同步支援 svn 也可以存取 https://github.com/,並且過不久的將來會移除 https://svn.github.com/ 網域。 URL 處理 git 方式: $ git clone https://github.com/appleboy/PHP-CodeIgniter-Framework-Taiwan git-ds Cloning into git-ds… remote: Counting objects: 4177, done. remote: Compressing objects: 100% (665/665), done. remote: Total 4177 (delta 3544), reused 4140 (delta 3509) Receiving objects: 100% (4177/4177), 2.65 MiB | 239 KiB/s, done. [...]
看到 gslin 大神寫了一篇 把 GitHub 上的 private repository 搬到 BitBucket 上…,最近自己也把一些不能公開的專案轉到 BitBucket 上面,由於在 BitBucket 上面可以無限開 private repository,所以我想也沒有必要付費給 Github,雖然論 Web 功能上而言,Github 還是略勝一籌,個人還是比較習慣 github 有 Network 的圖形可以看,不過平常還是都是在打指令,所以也沒差了,在 push 速度上面,感覺 BitBucket 也沒有輸 github 許多,所以決定就轉過去了,人總是為了錢所考量,當然 BitBucket 還是有些缺點的,可以參考之前寫的 Bitbucket 開始支援 Git Repository
在 CentOS 上面安裝 Ruby 環境
Posted in Compass CSS Framework, CSS, Git, Linux, 版本控制 on Oct 13th, 2011
目前開發網站都傾向於用 Compass 這套 CSS Framework 來 develop,開發之前必須把環境先弄好,就是要有 Ruby 套件才可以安裝 Compass,網路上的教學幾乎都在是 Ubuntu 底下用 apt-get 方式來安裝,其實相當方便,但是 Fedora 或 CentOS 就是要用 yum 方式來安裝,這次碰到 CentOS 竟然 yum search git 出來的結果是空的,所以決定全部都透過 tar 的方式來安裝全部套件了。由於 Fedora 幾乎都可以找到套件,但是碰到 rubygems 需要用到 ruby 1.8.7 以上版本,所以還是乖乖的用 tar 方式吧。 大家可以試試看透過底下 yum 方式安裝: yum install -y ruby ruby-devel rubygems 雖然 Fedora 透過上面可以安裝成功,可是 ruby 跟 rubygems 的版本根本是…太舊了吧 …
很高興剛剛收到 Bitbucket 寄來一封會員信,標題非常吸引大家的注意,那就是 Bitbucket now rocks Git.,是的,你沒看錯,Bitbucket 現在開始支援 Git repository,不再只有 Mercurial 可以使用,這還不算什麼,Bitbucket 更是推出無限制免費 private repos for free ,這樣的推出,不知道會有多少 Github 用戶轉移到 Bitbucket 上面,還有另一項主因就是 Unlimited disk space 無限制硬碟容量,不過也許不用高興的太早,Bitbucket 在使用者人數上面有些限制,可以參考 Plans & Pricing,免費方案每個 Repository 只能有5個 User,反觀 Github 並沒有這限制,不過我想這也不是問題,大家可以 Fork 到自己的專案,在 Pull Request 即可。 補充官方網站提供了轉換各大 Source Hosting 工具,目前支援 Github、SourceForge、Google Code、Subversion、Mercurial…等。
公司採用 svn 當作版本控制,而我最近在整理 svn 上面全部的 source code。基本上我都會將 git 跟 svn 也一起搭配著用,因為個人比較熟悉 git 的操作方式,然而跟同事討論了專案目錄的架構,進而要把一些目錄轉換大小寫,本來的 App 就改成 app,這個在 git 底下(OS: Linux)操作非常容易,直接 git mv App app,之後看 git status 可以發現底下輸出: # On branch develop # Changes to be committed: # (use "git reset HEAD <file>…" to unstage) # # renamed: nav/hacks.txt -> Nav/hacks.txt # [...]
Git Submodule 介紹與使用
Posted in Git on Sep 22nd, 2011
自己用 Git 已經很長一段時間了,沒用過 git submodule 的話真的是對不起自己,今天來筆記 Git Submodule 一些操作步驟及說明。 git Submodule 使用時機 大家在開發新專案的時候,不知道有沒有用到其他專案的程式碼,像是 Web 專案,也許會用到 Blueprintcss CSS Framwork 或者是 Sass,這些專案目前都放在 Github 上面進行維護,以前的作法就是先 git clone 下來,把要的檔案分別複製到自己專案,可是問題來了,如果官方更新了程式碼,那自己的專案如何更新呢?難道是重複步驟把檔案複製到原來地方嗎?這樣會不會太麻煩,這時候就是需要 git submodule 來幫助大家進行程式碼的更新,這樣隨時隨地都可以取得最新的程式碼。補充說明一點,git 目前無法針對單一專案底下的單一檔案或目錄進行 clone,而必須 clone 整個目錄,這點跟 svn 有很大的不同,所以 git 可以建立各個不同的 submodule 來整合成一個大型 Project。換句話說就是: 在您的專案底下,你可以任意將其他人的專案掛載在自己任何目錄底下。