1、什麼是git伺服器
Git是一個開源的分布式版本控制系統,可以有效、高速地處理從很小到非常大的項目版本管理。
Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟體。
Git的主要功能:
1、查看郵件或者通過其它方式查看一般開發者的提交狀態。
2、打上補丁,解決沖突(可以自己解決,也可以要求開發者之間解決以後再重新提交,如果是開源項目,還要決定哪些補丁有用,哪些不用)。
3、向公共伺服器提交結果,然後通知所有開發人員。
(1)git免費伺服器擴展資料:
Git的優缺點:
優點:
1、適合分布式開發,強調個體。
2、公共伺服器壓力和數據量都不會太大。
3、速度快、靈活。
4、任意兩個開發者之間可以很容易的解決沖突。
5、離線工作。
缺點:
1、資料少(起碼中文資料很少)。
2、學習周期相對而言比較長。
3、不符合常規思維。
4、代碼保密性差,一旦開發者把整個庫克隆下來就可以完全公開所有代碼和版本信息。
2、Github 代碼託管如何申請?是免費的么?
1、打開github倉庫url,復制SSH clone URL.
2、打開Git Bash進入之前創建的項目目錄.
3、執行git remote add origin [email protected]:770687650/thinkphpclj,git,其中770687650是我在網站上注冊時使用的用戶名,thinkphpclj.git是我為這個項目建立的另一個倉庫名,在網站上顯示是這樣的:
4 、我建立倉庫的時候創建README.md之時,已經算一次提交了,我需要先在本地同步一下倉庫的內容,命令如下:git pull origin master .完成的效果如下圖,並且本地目錄下多出了README.md文件,這是原本在github上的文件.
5 、添加thinkphp項目,將代碼添加到項目目錄下,執行增加命令,如下:git add .add後面加了一個點,是想要提交所有文件,如果想提交指定的文件,可以寫文件名,執行完增加命令後,要執行提交命令,如下:
git commit –m 「ThinkPHP3.2.3完整版」
-m後面跟提示信息,這個提示信息是一定要寫的,不僅是規則,同時也方便我們記錄我們提交的過程,寫清晰為什麼提交或修改了什麼是非常有用的,提交完成後,我們就要把它推送到遠程倉庫上去了,命令如下:git push origin master
這樣就完成了我們要做的所有任務到github去確認代碼是否上傳成功。
6、如果你的代碼開源的話,就免費,意思就是公開。如果你的代碼不開源的話,就收費,意思就是不公開。如圖:
3、什麼是「git」伺服器?
1、git是一種分布式的版本管理系統,Linux的創造者Linus寫的。
2、GitHub是基於git的代碼庫託管站,也算是程序員的SMS(以碼會友),其中一個主要的開源代碼發布或託管站
3、git的作用就是對文件進行版本管理,方便在不同版本進行切換修改,類似文件分不同時間備份讓後需要時找回其中一份代替,不過更方便使用。
4、GitHub某種程度上就是代碼的網盤,也有開源開發商作為代碼發布、存放、徵集Bug和意見用。
5、git的特點:
1)就是雲的概念,代碼可以存在雲端git的網站上,就像我們在各種設備間都能瀏覽到自己存儲的網盤文件 一樣,我們在各個設備間都能訪問到自己的代碼。
2)它的社交屬性。因為代碼是開源的,每個人都可以瀏覽別人的項目並提出意見,而且它像微博一樣,你能粉別人,也能被別人粉。如果你是大牛,如果你或者你的項目夠有趣,你就會有很多粉絲,你的項目也會被更多的人star。
3)它能給團隊合作帶來很大幫助。現在有些公司就是用github來開發項目的。github允許多人多分支的工作,並且標示別人的修改和備注,最後還能合並。
4、git伺服器端有幾種辦法
Git 可以使用四種主要的協議來傳輸數據:本地傳輸,SSH 協議,Git 協議和 HTTP 協議。
Git是一個開源的分布式版本控制系統,可以有效、高速地處理從很小到非常大的項目版本管理。
Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟體。
Git的主要功能:
1. 檢查電子郵件或其他方式來檢查提交狀態的平均開發人員。
2. 修補程序並解決沖突(您自己或要求開發人員稍後重新提交它,如果它是一個開源項目,請確定哪些修補程序可以工作,哪些不能)。
3.將結果提交到公共伺服器,然後通知所有開發人員。
(4)git免費伺服器擴展資料:
Git的優缺點:
優點:
1. 適合分布式開發,強調個人。
2. 公共伺服器壓力和數據量不是太大。
3.快速和靈活。
4.任何兩個開發人員之間的沖突都可以很容易地解決。
5. 離線工作。
缺點:
1. 數據很少(至少是中文)。
2. 學習周期相對較長。
3.不符合傳統思維。
4. 可憐的代碼的機密性。一旦開發人員克隆了整個庫,所有代碼和版本信息都可以完全公開。
5、什麼是git伺服器?
Git是目前世界上最先進的分布式版本控制系統(沒有之一)。
Git有什麼特點?簡單來說就是:高端大氣上檔次!
那什麼是版本控制系統?
如果你用Microsoft Word寫過長篇大論,那你一定有這樣的經歷:
想刪除一個段落,又怕將來想恢復找不回來怎麼辦?有辦法,先把當前文件「另存為……」一個新的Word文件,再接著改,改到一定程度,再「另存為……」一個新文件,這樣一直改下去,過了一周,你想找回被刪除的文字,但是已經記不清刪除前保存在哪個文件里了,只好一個一個文件去找,真麻煩。
看著一堆亂七八糟的文件,想保留最新的一個,然後把其他的刪掉,又怕哪天會用上,還不敢刪,真郁悶。
更要命的是,有些部分需要你的財務同事幫助填寫,於是你把文件Copy到U盤里給她(也可能通過Email發送一份給她),然後,你繼續修改Word文件。一天後,同事再把Word文件傳給你,此時,你必須想想,發給她之後到你收到她的文件期間,你作了哪些改動,得把你的改動和她的部分合並,真困難。
於是你想,如果有一個軟體,不但能自動幫我記錄每次文件的改動,還可以讓同事協作編輯,這樣就不用自己管理一堆類似的文件了,也不需要把文件傳來傳去。如果想查看某次改動,只需要在軟體里瞄一眼就可以,豈不是很方便?
這個軟體用起來就應該像這個樣子,能記錄每次文件的改動:
版本 用戶 說明 日期
1 張三 刪除了軟體服務條款5 7/12 10:38
2 張三 增加了License人數限制 7/12 18:09
3 李四 財務部門調整了合同金額 7/13 9:51
4 張三 延長了免費升級周期 7/14 15:17
這樣,你就結束了手動管理多個「版本」的史前時代,進入到版本控制的20世紀。
搭建Git伺服器
搭建Git伺服器需要准備一台運行Linux的機器,強烈推薦用Ubuntu或Debian,這樣,通過幾條簡單的apt命令就可以完成安裝。
假設你已經有sudo許可權的用戶賬號,下面,正式開始安裝。
第一步,安裝git:
$ sudo apt-get install git
第二步,創建一個git用戶,用來運行git服務:
$ sudo adser gi
第三步,創建證書登錄:
收集所有需要登錄的用戶的公鑰,就是他們自己的id_rsa.pub文件,把所有公鑰導入到/home/git/.ssh/authorized_keys文件里,一行一個。
第四步,初始化Git倉庫:
先選定一個目錄作為Git倉庫,假定是/srv/sample.git,在/srv目錄下輸入命令:
$ sudo git init --bare sample.git
Git就會創建一個裸倉庫,裸倉庫沒有工作區,因為伺服器上的Git倉庫純粹是為了共享,所以不讓用戶直接登錄到伺服器上去改工作區,並且伺服器上的Git倉庫通常都以.git結尾。然後,把owner改為git:
$ sudo chown -R git:git sample.git
第五步,禁用shell登錄:
出於安全考慮,第二步創建的git用戶不允許登錄shell,這可以通過編輯/etc/passwd文件完成。找到類似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bas
改為:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
這樣,git用戶可以正常通過ssh使用git,但無法登錄shell,因為我們為git用戶指定的git-shell每次一登錄就自動退出。
第六步,克隆遠程倉庫:
現在,可以通過git clone命令克隆遠程倉庫了,在各自的電腦上運行:
$ git clone git@server:/srv/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.
剩下的推送就簡單了。
管理公鑰
如果團隊很小,把每個人的公鑰收集起來放到伺服器的/home/git/.ssh/authorized_keys文件里就是可行的。如果團隊有幾百號人,就沒法這么玩了,這時,可以用Gitosis來管理公鑰。
這里我們不介紹怎麼玩Gitosis了,幾百號人的團隊基本都在500強了,相信找個高水平的Linux管理員問題不大。
管理許可權
有很多不但視源代碼如生命,而且視員工為竊賊的公司,會在版本控制系統里設置一套完善的許可權控制,每個人是否有讀寫許可權會精確到每個分支甚至每個目錄下。因為Git是為Linux源代碼託管而開發的,所以Git也繼承了開源社區的精神,不支持許可權控制。不過,因為Git支持鉤子(hook),所以,可以在伺服器端編寫一系列腳本來控制提交等操作,達到許可權控制的目的。Gitolite就是這個工具。
這里我們也不介紹Gitolite了,不要把有限的生命浪費到許可權斗爭中。
6、有沒有可以部署php的免費伺服器,比如github,gitee?
使用內網穿透,可以將自己的電腦作為伺服器,工具有很多,推薦一款「小米球ngrok」,自己研究吧
7、搭建git伺服器需要什麼樣的配置
搭建Git伺服器需要准備一台運行Linux的機器,強烈推薦用Ubuntu或Debian,這樣,通過幾條簡單的apt命令就可以完成安裝。
假設你已經有sudo許可權的用戶賬號,下面,正式開始安裝。
第一步,安裝git:
$ sudo apt-get install git
第二步,創建一個git用戶,用來運行git服務:
$ sudo adser git
第三步,創建證書登錄:
收集所有需要登錄的用戶的公鑰,就是他們自己的id_rsa.pub文件,把所有公鑰導入到/home/git/.ssh/authorized_keys文件里,一行一個。
第四步,初始化Git倉庫:
先選定一個目錄作為Git倉庫,假定是/srv/sample.git,在/srv目錄下輸入命令:
$ sudo git init --bare sample.git
Git就會創建一個裸倉庫,裸倉庫沒有工作區,因為伺服器上的Git倉庫純粹是為了共享,所以不讓用戶直接登錄到伺服器上去改工作區,並且伺服器上的Git倉庫通常都以.git結尾。然後,把owner改為git:
$ sudo chown -R git:git sample.git
第五步,禁用shell登錄:
出於安全考慮,第二步創建的git用戶不允許登錄shell,這可以通過編輯/etc/passwd文件完成。找到類似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改為:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
這樣,git用戶可以正常通過ssh使用git,但無法登錄shell,因為我們為git用戶指定的git-shell每次一登錄就自動退出。
第六步,克隆遠程倉庫:
現在,可以通過git clone命令克隆遠程倉庫了,在各自的電腦上運行:
$ git clone git@server:/srv/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.
剩下的推送就簡單了。
管理公鑰
如果團隊很小,把每個人的公鑰收集起來放到伺服器的/home/git/.ssh/authorized_keys文件里就是可行的。如果團隊有幾百號人,就沒法這么玩了,這時,可以用Gitosis來管理公鑰。
這里我們不介紹怎麼玩Gitosis了,幾百號人的團隊基本都在500強了,相信找個高水平的Linux管理員問題不大。
管理許可權
有很多不但視源代碼如生命,而且視員工為竊賊的公司,會在版本控制系統里設置一套完善的許可權控制,每個人是否有讀寫許可權會精確到每個分支甚至每個目錄下。因為Git是為Linux源代碼託管而開發的,所以Git也繼承了開源社區的精神,不支持許可權控制。不過,因為Git支持鉤子(hook),所以,可以在伺服器端編寫一系列腳本來控制提交等操作,達到許可權控制的目的。Gitolite就是這個工具。
8、如何搭建git伺服器 windows
GitLab是由Ruby語言開發的基於Linux的Git伺服器,是我見過的最強大的Git伺服器。發現它之後,立即決定將Git伺服器換成GitLab。但安裝好GitLab之後面臨一個問題,如何將伺服器上的git項目直接導入到GitLab,之前的Git伺服器是由是git+apache搭建的(詳見在Linux上用Apache搭建Git伺服器)。在網上發現了這篇文檔——,並按之進行了操作。1)設置存放代碼庫的主目錄vi/etc/gitlab/gitlab.rb比如這里設置為:git_data_dir"/gitlab/repos"2)訪問剛搭建的GitLab站點,創建一個group,比如cnblogs。這時會在/gitlab/repos下創建/gitlab/repos/repositories/cnblogs文件夾。然後在/gitlab/repos/repositories/創建一個文件夾,比如cnblogs3)將現有的所有git項目文件復制到這個文件夾cp-r/data/git/*/gitlab/repos/repositories/cnblogs4)修改一下復制過來的文件夾的所有者:chown-Rgit:git/gitlab/repos/repositories/cnblogs5)運行GitLab導入命令cd/var/opt/gitlabgitlab-rakegitlab:import:repos等了一段時間之後,顯示done,卻一個項目也沒導入進來。經研究發現,在導入時,GitLab只認文件夾名以.git結尾的項目。於是,將要導入的項目文件夾名稱加上.git後綴,再次進行導入。結果顯示導入成功,比如:Processingcnblogs/CNBlogsJob.git*CreatedCNBlogsJob(cnblogs/CNBlogsJob.git)Done!可以是GitLab站點上卻看不到已導入的項目。多次努力,也沒能解決這個問題。後來,實在沒法,改為手動導入,導入方法如下:1)在GitLab站點上創建與要導入的項目同名的項目。2)進入剛創建的項目文件夾cd/gitlab/repos/repositories/cnblogs/項目名稱.git3)刪除該文件下的所有文件rm-rf*4)將要導入的項目文件夾下的所有文件復制過來cp-r/data/git/CNBlogsJob/*/gitlab/repos/repositories/cnblogs/CNBlogsJob.git就這樣將項目一個一個地導入進來。5)導入完成後,修改一下導入的所有項目的文件所有者chown-Rgit:git/gitlab/repos/repositories/cnblogs如果不修改所有者,客戶端無法進行gitpush。就這樣手動地完成了現有Git項目的導入。備註:操作系統是CentOS6.2,GitLab版本是7.8.4。
9、Git伺服器里如何為各個開發者設置用戶名和密碼呢?
你要開git伺服器,才有配置帳號的嘛,gitolite自己去看看。Git是一款免費、開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的項目。Torvalds 開始著手開發 Git 是為了作為一種過渡方案來替代 BitKeeper,後者之前一直是 Linux 內核開發人員在全球使用的主要源代碼工具。
拓展:
1、Git是一個開源的分布式版本控制系統,用以有效、高速的處理從很小到非常大的項目版本管理。Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟體。Torvalds 開始著手開發 Git 是為了作為一種過渡方案來替代 BitKeeper,後者之前一直是 Linux 內核開發人員在全球使用的主要源代碼工具。開放源碼社區中的有些人覺得 BitKeeper 的許可證並不適合開放源碼社區的工作,因此 Torvalds 決定著手研究許可證更為靈活的版本控制系統。
2、開放源碼社區中的有些人覺得 BitKeeper 的許可證並不適合開放源碼社區的工作,因此 Torvalds 決定著手研究許可證更為靈活的版本控制系統。盡管最初 Git 的開發是為了輔助 Linux 內核開發的過程,但是我們已經發現在很多其他自由軟體項目中也使用了 Git。例如 最近就有很多 Freedesktop 的項目也遷移到了 Git 上。
10、如何將git伺服器提供給其他人使用
1. 架設Git伺服器
我們以Ubuntu為例。首先,在git伺服器上創建一個名為 'git' 的用戶,並為其創建一個.ssh 目錄。並將其許可權設置為僅git用戶有讀寫許可權
$ sudo adser git
$ su git
$ cd
$ mkdir .ssh
$ chmod 700 .ssh
接下來,把開發者的 SSH 公鑰添加到這個用戶的 authorized_keys 文件中。假設你通過電郵收到了幾個公鑰並存到了臨時文件里。重復一下,公鑰大致看起來是這個樣子:
$ cat /tmp/id_rsa.john.pub
ssh-rsa /ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17//5zytK6Ztg3RPKK+4k
Ez
/nLF6JLtPofwFBlgc+myiv
Pq
dAv8JggJICUvax2T9va5 gsg-keypair
只要把它們逐個追加到 authorized_keys 文件尾部即可,同時將authorized_keys設置為僅git用戶有讀寫許可權。
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
現在可以用 --bare 選項運行 git init 來建立一個裸倉庫,這會初始化一個不包含工作目錄的倉庫。
$ cd /opt/git
$ mkdir project.git
$ cd project.git
$ git --bare init
這時,Join,Josie 或者 Jessica 就可以把它加為遠程倉庫,推送一個分支,從而把第一個版本的項目文件上傳到倉庫里了。值得注意的是,每次添加一個新項目都需要通過 shell 登入主機並創建一個裸倉庫目錄。我們不妨以 gitserver 作為 git 用戶及項目倉庫所在的主機名。如果在網路內部運行該主機,並在 DNS 中設定 gitserver 指向該主機,那麼以下這些命令都是可用的:
# 在 John 的電腦上
$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/opt/git/project.git
$ git push origin master
這樣,其他人的克隆和推送也一樣變得很簡單:
$ git clone git@gitserver:/opt/git/project.git
$ vim README
$ git commit -am 'fix for the README file'
$ git push origin master
用這個方法可以很快捷地為少數幾個開發者架設一個可讀寫的 Git 服務。
作為一個額外的防範措施,你可以用 Git 自帶的 git-shell 工具限制 git 用戶的活動范圍。只要把它設為 git 用戶登入的 shell,那麼該用戶就無法使用普通的 bash 或者 csh 什麼的 shell 程序。編輯/etc/passwd 文件:
$ sudo vim /etc/passwd
在文件末尾,你應該能找到類似這樣的行:
git:x:1000:1000::/home/git:/bin/sh
把 bin/sh 改為 /usr/bin/git-shell (或者用 which git-shell 查看它的實際安裝路徑)。該行修改後的樣子如下:
git:x:1000:1000::/home/git:/usr/bin/git-shell
現在 git 用戶只能用 SSH 連接來推送和獲取 Git 倉庫,而不能直接使用主機 shell。嘗試普通 SSH 登錄的話,會看到下面這樣的拒絕信息:
$ ssh git@gitserver
fatal: What do you think I am? A shell?
Connection to gitserver closed.
這里提供的方法,組內所有成員對project都有讀寫許可權,也就是說每個分支都可以push代碼,如果需要更加細致的許可權控制,請使用Gitosis或者Gitolite。
2. 搭建Gitweb
安裝gitweb之後就可以通過網站訪問我們的項目了。就像http://git.kernel.org一樣顯示了
首先需要安裝Gitweb,如果沒有安裝apache,那麼直接安裝Gitweb,也會將apache2安裝的。
$ sudo apt-get install gitweb apache2
安裝完成之後,我們只需要修改一下配置文件,將/etc/gitweb.conf文件中的$projectroot修改為放工程文件的目錄。
$ vim /etc/gitweb.conf
# path to git projects (<project>.git)
$projectroot = "/opt/git";
至此gitweb就可以使用了,現在可以通過http://[git_server_IP]/gitweb訪問了。
3. Push之後發送郵件通知
當組內成員push代碼到伺服器上之後,會自動發送郵件通知組內所有人員,該次push的具體內容是什麼。具體配置方法:
一般在安裝Git的時候發送郵件的腳本/usr/share/git-core/contrib/hooks/post-receive-email已經存在了,首先要修改所有者和執行許可權,並且安裝sendmail。
$ sudo chown git:git post-receive-email
$ sudo chmod 755 post-receive-email
$ sudo apt-get install sendmail
然後到切換到工程目錄下的hooks中,添加 post-receive軟鏈接指向 /usr/share/git-core/contrib/hooks/ post-receive-email。
$ cd /opt/git/project.git/hooks
$ ln -s /usr/share/git-core/contrib/hooks/post-receive-email post-receive
最後修改工程目錄中的config文件即可。mailinglist是郵件列表, envelopesender是發件人的郵箱,
$ vim /opt/git/project.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = true
[hooks]
mailinglist = "[email protected], [email protected]" # 收件人列表
envelopesender = [email protected] # 送件人地址
emailprefix = "[Project commit] " # 郵件標題前綴
showrev = "git show -C %s; echo" # 不只顯示有變化的文件,同時也顯示改變的內容
為了使郵件顯示的更清楚,還要修改一下工程目錄當中的description文件,在description文件中,默認第一行是項目名稱,所以要在第一行填入該項目的名稱,這個在郵件中會有顯示。
$ vim /opt/git/project.git/description
Project_A