地球上的大熊, 巧遇上火星的你

有人用過Git來做程式碼管理嗎?

@ 2011-4-19 04:06 PM

之前都是用svn…但git可以分散式管理…也就是commit,log等都可以離線進行。

而且分支功能蠻強的…有朋友用過嗎?請分享一下經驗~

==short-cut==
有圖有真相
Git+ssh @centos 安裝步驟+Windows client
TortoiseGit (windows client)
Mac Git Client

31 評論

恩…
目前我也是使用msysgit來架試試
但不知msysgit是否有把自己公開在網路上讓大家自由使用的功能這樣
linux架的應該是可以吧

--
後來看教學,利用msysgit已架起web
再來就是找新增專案的方式了

[陽だまり 在  2011-5-14 04:17 PM 作了最後編輯]

發佈者 : 陽だまり 等級: 15等級: 15等級: 15等級: 15等級: 15  @ 2011-5-14 03:22 PM

我是用官方網路介紹的windows版本git,叫git extensions (((((((((有看過TortoiseGit,烏龜好像不是用gui介面去下git指令?)))))))))
還不錯用,但一開始就有亂碼的問題,檔案名稱是中文,就不能使用UTF8匯入,會ERROR
而COMMIT使用BIG5會變亂碼… 切回UTF8又會有問題....
這好像是因為WINDOWS存的是BIG5格式的關係,有專案有中文檔名,現在只好用英文當commit message

---------

用ubuntu10.4長期支援版32bit架git server,使用git+gitosis來管理帳號
預設client使用windows + git extensions來使用做版本控制…

git extensions是使用putty key generate來產生private key和public key
產生的格式和直接在ubuntu上ssh key-gen -t rsa的格式不同…
加入到gitosis的config設定檔中,雖然在ubuntu上的帳號可以git clone
,但卻無法從windows上git clone,不知是哪裡出問題,已經搞快1天了…

---------

不過這幾天玩git到是發現一些有趣的東西
1.vsftpd,直接安裝就能在FTP使用帳號密碼登入
2.noip2,配合rc.local開機自動更新dynamic dns
3.nomachine fx free版,算xwindows的一種,比內建的vnc快多了,free版只能讓2位remote user使用xwindow的session。
4.linux的備份策略… (學心酸的,常常需要restore感覺很差

[zoho 在  2011-5-14 07:49 PM 作了最後編輯]

發佈者 : zoho 等級: 11等級: 11等級: 11等級: 11  @ 2011-5-14 07:45 PM


引用:
Vic寫到:
新建Repository,假如project已壓縮為tarball檔(projectA.tar.gz)
tar xzf projectA.tar.gz
cd projectA
git init
git add . #記錄project全部檔案
git commit -m 'init projectA' #第一次commit,git會將上一步add的檔案作記錄


產生git bare source…也就是讓別人clone的repo
cd /home
mkdir git
cd /home/git
git clone --bare ./projectA projectA.repo.git


完成以上的步驟,就是已經建立了git server…別人可以clone source了。


現在一些軟體原始碼內也會附上 .gitignore,有時在設置git repo.時會因此遺漏一些檔案。如:Linux kernel、redmine。
以 2.6.22 Linux kernel 來說,它的 .gitignore 會忽略檔名是 . 開頭的所有檔案。
那麼用git add . ; git commit 做出來的git repo.,實際上不會有.gitignore, .mailmap 檔案。
建議建好 git repo. 後,再clone一份出來,檢查一下是否有遺漏檔案。

發佈者 : miholee 等級: 11等級: 11等級: 11等級: 11  @ 2011-5-14 09:16 PM


引用:
陽だまり寫到:
後來看教學,利用msysgit已架起web
再來就是找新增專案的方式了


在windows下架…看別人好像是用CopSSH+ msysgit…自己沒試過。不肯定是否可行

Windows 上架設 Git 伺服器
http://bone.twbbs.org.tw/blog/archives/1487




引用:
zoho寫到:
有看過TortoiseGit,烏龜好像不是用gui介面去下git指令?


烏龜直接用它的介面來操作git…它也有指令…tgit



引用:
zoho寫到:
,但卻無法從windows上git clone,不知是哪裡出問題,已經搞快1天了…


我用烏龜是直接指定windows下的public key file…選Load Putty Key什麼的…就可以bypass password


引用:
zoho寫到:
不過這幾天玩git到是發現一些有趣的東西
1.vsftpd,直接安裝就能在FTP使用帳號密碼登入
2.noip2,配合rc.local開機自動更新dynamic dns
3.nomachine fx free版,算xwindows的一種,比內建的vnc快多了,free版只能讓2位remote user使用xwindow的session。
4.linux的備份策略… (學心酸的,常常需要restore感覺很差


謝謝分享…不過這些算是git plugin嗎?



引用:
miholee寫到:
現在一些軟體原始碼內也會附上 .gitignore,有時在設置git repo.時會因此遺漏一些檔案。如:Linux kernel、redmine。


謝謝指教…之前就是忘了將一些有db password的file加到.gitignore…最後一起push了出去。

還好只有我一個人用…也不是public…最後要去改password…

發佈者 : Vic 等級: 32等級: 32等級: 32等級: 32等級: 32等級: 32等級: 32等級: 32  @ 2011-5-14 11:34 PM


引用:

引用:
zoho寫到:
,但卻無法從windows上git clone,不知是哪裡出問題,已經搞快1天了…


我用烏龜是直接指定windows下的public key file…選Load Putty Key什麼的…就可以bypass password

今天在virtual box上的ubuntu可以git clone自己架的git server上的repo,但是在windows上不行
後來發現原因了… 原來… 我是用git extensions上的git bash (開git extensions按ctrl+g出現的那個git command line),去做git clone,結果不行
然後我改用程式集中的git bash… 竟然就可以了!!! 這兩個git command line外觀有點不同,雖然都能下git指令,但git extensions開的git bash竟然不能git clone,原因我不懂…
有使用的可以注意一下… 我想push失敗搞不好也是因為相同的原因… 反正我最低需求是「能在windows上存取remote repo」,能讓我能測試remote 指令就夠了…Orz


引用:

引用:
zoho寫到:
不過這幾天玩git到是發現一些有趣的東西
1.vsftpd,直接安裝就能在FTP使用帳號密碼登入
2.noip2,配合rc.local開機自動更新dynamic dns
3.nomachine fx free版,算xwindows的一種,比內建的vnc快多了,free版只能讓2位remote user使用xwindow的session。
4.linux的備份策略… (學心酸的,常常需要restore感覺很差


謝謝分享…不過這些算是git plugin嗎?

不,前3個是linux的軟體,最後一個只是備份策略,其實備份我用tar打包整個根目錄,反而是還原可以根據還原的資料夾不同來達到甲機備份,乙機還原的功能
但我只有試過用ubuntu live cd開機,先把原本的系統砍掉,再使用tar指令把usb上的壓縮檔還原回硬碟

給個參考網站,有教備份功能
http://blog.miniasp.com/post/200 ... -Restore-Notes.aspx

我是在家裡架git server,不喜歡記浮動ip,reboot後就連不上,所以弄了noip2來開機動態更新linux的dns ip
而vsftpd是因為linux和windows的網芳問題,改用ftp來解決,因為直接apt-get install vsfptd就會自己用linux上的帳密來架ftp,所以很方便
另外ubuntu內建的vnc遠端桌面真的超lag… 大概是傳畫面的關係,改用xwindows的架構,只傳資訊,這樣連LINUX的遠端桌面就快多了
最後再tar指令備份,還原用ubuntu安裝光碟兼live cd,這樣就可以把linux玩爛之後再還原~ 一還原就能直接遠端桌面連線~ ssh連線什麼的~ @_@

有點離題了… 不過git還不錯用~ 習慣了scm後就沒辦法沒有scm,自己改什麼沒紀錄,沒訊息的話,久了就忘了
不過我以前是玩cc cq,偏偏這個IBM的SCM要收費… 但對免費的svn cvn不熟…Orz, git的觀念不好理解

有什麼git的書可以推薦嗎~ 有去書店看過幾乎沒有~

damn! 突然有個想法,直接在linux的root執行
git init
git commit  -am "my linux v1.0.0"
git tag v1.0.0

以後要還原就直接下
git checkout v1.0.0

git本身用recursion的方式處理底下的repo, 理論上是可以的…
.gitignore設定一下,這樣要備份還原系統,就用git指令就行了…~ ^_^ 來測試~ yeah!!
啊… 系統操作到一半還原理論上好像也不行,理論上也是要用live cd開機再還原才安全… 不過用來備份文件應該還ok… 大概…
--

[zoho 在  2011-5-15 10:58 AM 作了最後編輯]

發佈者 : zoho 等級: 11等級: 11等級: 11等級: 11  @ 2011-5-15 10:25 AM


引用:
zoho寫到:
有什麼git的書可以推薦嗎~ 有去書店看過幾乎沒有~


熊小看過幾本後…覺得Pro Git最清楚最完整。

書本的全部內容都可以網上看…包括中文翻譯版...想支持他的話…可以考慮買實體書。

至於PDF版…上emule搜索Pro Git…



引用:
zoho寫到:

damn! 突然有個想法,直接在linux的root執行
git init


哈哈~ 真有你的…竟然想用Git來備份整台主機~!

發佈者 : Vic 等級: 32等級: 32等級: 32等級: 32等級: 32等級: 32等級: 32等級: 32  @ 2011-5-15 12:06 PM

哈,我也有在用Git備份wine安裝的檔案。
至於整台主機,要小心機密的檔案外流唄。而且,每次更新套件後,多多少少會有一堆新檔案等者加入Git repo。

發佈者 : miholee 等級: 11等級: 11等級: 11等級: 11  @ 2011-5-15 03:46 PM

我的情形,是要管理http server (tomcat server) 的程式碼
但我們已經有個issue tracker的web介面,所以不能另外再架redmine之類的project管控軟體 (而且我們的RD只有三隻,實在不想自找麻煩)

-------------

這幾天用ubuntu架好git + gitosis + gitweb後,已經可以透過windows的git extension來存取設定好的git project

git = scm的主體
gitosis = 透過其它git user產生的ssh-key來設定每個git repository存取的權限 (簡單的說就是,讓git server不必對每個git user都開帳號,透過ssh-key的private和public key來認證,並透過gitosis.conf來設定每個git user的對gitosis管理的git project的存取權限,我是透過這種方式,在windows上用git extension產生ssh-key,上傳到git server,設定好權限後,就可以在windows上存取remote private git repository了)
gitweb = git內建的web介面,但看起來只能設定顯示與不顯示,無法設定每個人的讀取權限,對private git repository很不實用,因為很多檔案都有資料庫的存取帳號和密碼
目前有幾點希望大家能給點意見

1. git web interface的選擇 (private 使用)

引用:

git只是個資料夾,如果能透過http圖形介面看到誰改了什麼,現在的分支,而且能直接點進去看程式和修改的地方,會比較直觀…
比方說git extension的這張圖,點選能進去看每個commit所修改的檔案清單,再點檔案則能看到修改的內容,如果這麼漂亮的介面能用web interface就好了…

GIT WIKI我每個都google一下,但很多都找不到範例介面,不然就是看起來都很像gitweb,實在很難找到一個漂亮又直觀web圖形介面,而且又能設定讀取權限(最好能和gitosis結合),希望大家能推薦


2. git repository 和 http server的同步問題

引用:
用git來管理http server上的程式碼時,如果git server和http server位於不同主機,就必須要能同步兩台主機的狀態
對同步的功能我試想了一下,有幾個解法,但都不是很滿意
一、使用git hook,自定義post-update script,再透過ftp更新http server (難度極高… 根本是自找麻煩)
二、使用rsync (還可以接受,但看來還是要用git hook,每次push都要git archive解開到git server某個web資料夾,再讓rsync同步這個資料夾和遠端的http server)
三、直接在http server執行git pull或 git sync (還可以接受,但project蠻大的,是否有其它side effect,比方說更新所需時間)
四、每天定期關閉http server,再做同步… (變成1天只能sync 1次)
如有其它解法,希望能給點意見


3.git repository內含git repository的問題

引用:

程式碼一龐大起來,勢必要再細分為子git repository,並設定權限…看起來就是submodule!?
大致上看了這一篇,git已經很不直觀了,還看到這鬼東西,…
Git Submodule 的認識與正確使用!
這部份我還不瞭解,還要再看書確定需求和做法才行,如果有經驗者能指點方向更好…




[zoho 在  2011-6-6 09:38 AM 作了最後編輯]

發佈者 : zoho 等級: 11等級: 11等級: 11等級: 11  @ 2011-6-6 09:29 AM

把最近的操作錄成影片上傳到youtube, 要選1080而且要全畫面才能看清楚字
ubuntu 架 gitosis server 和 gitweb 範例 (繁體中文) (1/2)
ubuntu 架 gitosis server 和 gitweb 範例 (繁體中文) (2/2)

//這兩個是給有興趣的人看的
Host win7 Guest ubuntu by vmware player (繁體中文)
ubuntu 架phpBB3 (繁體中文)

[zoho 在  2011-6-6 08:26 PM 作了最後編輯]

發佈者 : zoho 等級: 11等級: 11等級: 11等級: 11  @ 2011-6-6 08:21 PM

以前在看ProGit時有看到gitolite支援gitweb。不過我自己只有用gitosis及SSH兩種方式,還沒用過這一套。平時也都是git、tig、gitk交叉使用。很少用Web介面。

http://progit.org/book/ch4-8.html

Gitweb support: Gitolite supports gitweb in several ways. You can specify which repos are visible via gitweb. You can set the “owner” and “description” for gitweb from the gitolite config file. Gitweb has a mechanism for you to implement access control based on HTTP authentication, so you can make it use the “compiled” config file that gitolite produces, which means the same access control rules (for read access) apply for gitweb and gitolite.

我覺得 submodule 用起來不是很順手,尤其是 submodule 無法獨立開發時。
若要修改 submodule 內資料,記得先開分支再做修改。不然哪天git submodule update一下,就準備用reflog找遺失的commit了。

發佈者 : miholee 等級: 11等級: 11等級: 11等級: 11  @ 2011-6-7 11:53 PM

有關web介面…我之前找過…的確沒什麼"好樣”的…

發佈者 : Vic 等級: 32等級: 32等級: 32等級: 32等級: 32等級: 32等級: 32等級: 32  @ 2011-6-9 06:28 PM

簡單明瞭ˋ阿!~~

發佈者 : homiwu 等級: 3等級: 3  @ 2012-4-7 01:16 PM

一開始接觸時用google code來進行各種操作
我想一般的軟體開發者可以在這上面熟悉各種命令與GUI

發佈者 : cyberlk 等級: 4  @ 2012-4-7 07:59 PM

補一下mac方面的git client…熊小主要介紹幾個免費的。(我也不是太熟悉…如有錯請指正

1. GitX -- 快,簡單,但沒有push/pull

Log (History) screen


Commit screen


2. SmartGit (個人用免費) -- 支援Windows/Linux/Mac(java runtime),功能齊全,不時更新,個人認為它的diff比較完整…缺點是非mac native,起動比較慢。如果有utf8的檔案…請到Project->Repository Setting->Text Encoding改成UTF-8...否則非英文不能正常顯示。

Main screen


Log screen


3. Gity -- 快, 但不知道為何push會出error, 沒有去研究...圖片來自作者網站。


其他的還有
Gitti...下載回來想用的時候告訴我過期了不能用!叫我email作者。
Tower…看上去不錯…$59
SourceTree…以前收費… 現在好像不收費了…可以免費登記。


綜合來說:

熊小推薦SmartGit...如果只是做commit…就直接用GitX…想push時再用smartgit…2者加起來已經很好。

發佈者 : Vic 等級: 32等級: 32等級: 32等級: 32等級: 32等級: 32等級: 32等級: 32  @ 2012-5-31 12:15 AM

剛發現GitHub有個try git可以玩…不錯。

https://try.github.io/

發佈者 : Vic 等級: 32等級: 32等級: 32等級: 32等級: 32等級: 32等級: 32等級: 32  @ 2014-7-17 06:34 AM

 31  2/3  <  1  2  3  > 
   


  可打印版本 | 推薦給朋友 | 評分