1、前期准備
伺服器上配置好的git
git客戶端
1.1
在伺服器上安裝git (本機所使用的linux是ubuntu)
在伺服器輸入命令:sudo apt-get install git即可 然後創建名字為git的用戶組和用戶
1.2
下載客戶端 在瀏覽器地址欄輸入:https://git-for-windows.github.io/
回車後
點擊Download進行下載
2、具體操作
2.1
在合適的位置創建一個目錄充當git遠程倉庫(本機位置為/usr/testgit),然後使用init命令初始化倉庫
在命令終端輸入:
sudo git init –bare
2.2
將git init生成的目錄所屬者改為git
輸入命令:sudo chown -R git:git *
至此伺服器端的操作完成。
在客戶端合適位置使用git 客戶端從伺服器資源
2.3
首先打開git客戶端
點擊Git Bash Here 後出現
在git客戶端命名終端輸入:
git clone git@xxxxxx:/rrrrr 其中xxxxxx是遠程伺服器的地址 rrrrr為git倉庫所在位置
如果配置正確你選中的目錄下會出現名字為testgit的文件夾 testgit文件夾下隨意創建若干個文件
2.3
在git客戶端上使用命令 git add 111.txt 222.txt 333.txt 或者使用git add .(將本文件夾下所有文件都add) 該命令的作用是告訴git把文件添加到git倉庫
2.4
然後使用git commit命令將文件提交到git倉庫
-m 後面的內容為本次提交文件的一些注釋內容
此時文件還沒有從本地倉庫上傳到遠程伺服器倉庫
2.5
使用push命令將本地倉庫中的內容提交到遠程倉庫
在git客戶端命令終端輸入:git push origin master
至此本地倉庫中的文件上傳已經上傳到遠程伺服器倉庫。
在其他文件夾下再次使用 git clone 命令 從遠程伺服器同步倉庫
㈡ linux怎麼搭建git伺服器
GitHub就是一個免費託管開源代碼的遠程倉庫。但是對於某些視源代碼如生命的商業公司來說,既不想公開源代碼,又捨不得給GitHub交保護費,那就只能自己搭建一台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.
剩下的推送就簡單了。
㈢ linux怎麼搭建git伺服器
1.創建Gitblit安裝目錄 首先我們將在我們的伺服器上建立一個目錄,並在該目錄下安裝最新的Gitblit。 $ sudo mkdir -p /opt/gitblit $ cd /opt/gitblit 創建gitblit目錄 2. 下載並解壓 現在,我們將從Gitblit官方站點下載最新版的Gitblit。
㈣ 如何搭建linux git伺服器
首先我們分別在Git伺服器和客戶機中安裝Git服務程序(剛剛實驗安裝過就不用安裝了):
[root@linuxprobe ~]# yum install git
Loaded plugins: langpacks, proct-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Package git-1.8.3.1-4.el7.x86_64 already installed and latest version
Nothing to do
然後創建Git版本倉庫,一般規范的方式要以.git為後綴:
[root@linuxprobe ~]# mkdir linuxprobe.git
修改Git版本倉庫的所有者與所有組:
[root@linuxprobe ~]# chown -Rf git:git linuxprobe.git/
初始化Git版本倉庫:
[root@linuxprobe ~]# cd linuxprobe.git/
[root@linuxprobe linuxprobe.git]# git --bare init
Initialized empty Git repository in /root/linuxprobe.git/
其實此時你的Git伺服器就已經部署好了,但用戶還不能向你推送數據,也不能克隆你的Git版本倉庫,因為我們要在伺服器上開放至少一種支持Git的協議,比如HTTP/HTTPS/SSH等,現在用的最多的就是HTTPS和SSH,我們切換至Git客戶機來生成SSH密鑰:
[root@linuxprobe ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
65:4a:53:0d:4f:ee:49:4f:94:24:82:16:7a:dd:1f:28 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
| .o+oo.o. |
| .oo *.+. |
| ..+ E * o |
| o = + = . |
| S o o |
| |
| |
| |
| |
+-----------------+
將客戶機的公鑰傳遞給Git伺服器:
[root@linuxprobe ~]# ssh--id 192.168.10.10
[email protected]'s password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '192.168.10.10'"
and check to make sure that only the key(s) you wanted were added.
此時就已經可以從Git伺服器中克隆版本倉庫了(此時目錄內沒有文件是正常的):
[root@linuxprobe ~]# git clone [email protected]:/root/linuxprobe.git
Cloning into 'linuxprobe'...
warning: You appear to have cloned an empty repository.
[root@linuxprobe ~]# cd linuxprobe
[root@linuxprobe linuxprobe]#
初始化下Git工作環境:
[root@linuxprobe ~]# git config --global user.name "Liu Chuan"
[root@linuxprobe ~]# git config --global user.email "[email protected]"
[root@linuxprobe ~]# git config --global core.editor vim
向Git版本倉庫中提交一個新文件:
[root@linuxprobe linuxprobe]# echo "I successfully cloned the Git repository" > readme.txt
[root@linuxprobe linuxprobe]# git add readme.txt
[root@linuxprobe linuxprobe]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached ..." to unstage)
#
# new file: readme.txt
#
[root@linuxprobe linuxprobe]# git commit -m "Clone the Git repository"
[master (root-commit) c3961c9] Clone the Git repository
Committer: root
1 file changed, 1 insertion(+)
create mode 100644 readme.txt
[root@linuxprobe linuxprobe]# git status
# On branch master
nothing to commit, working directory clean
但是這次的操作還是只將文件提交到了本地的Git版本倉庫,並沒有推送到遠程Git伺服器,所以我們來定義下遠程的Git伺服器吧:
[root@linuxprobe linuxprobe]# git remote add server [email protected]:/root/linuxprobe.git
將文件提交到遠程Git伺服器吧:
[root@linuxprobe linuxprobe]# git push -u server master
Counting objects: 3, done.
Writing objects: 100% (3/3), 261 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:/root/linuxprobe.git
* [new branch] master -> master
Branch master set up to track remote branch master from server.
為了驗證真的是推送到了遠程的Git服務,你可以換個目錄再克隆一份版本倉庫(雖然在工作中毫無意義):
[root@linuxprobe linuxprobe]# cd ../Desktop
[root@linuxprobe Desktop]# git clone [email protected]:/root/linuxprobe.git
Cloning into 'linuxprobe'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
[root@linuxprobe Desktop]# cd linuxprobe/
[root@linuxprobe linuxprobe]# cat readme.txt
I successfully cloned the Git repository
這篇是詳細介紹Git的,中間有一部分是怎麼去搭建,你可以看下
㈤ linux搭建git遠程倉庫
1. linux和windows端分別安裝git,其中linux中可以用yum安裝
[root@node0~]#yum install git
git的默認安裝路徑在/usr/libexec/git-core
[root@node0 git-core]#cd /usr/libexec/git-core
[root@node0 git-core]#git --version
git version 1.7.1
2.設置linux端git的用戶名和密碼
[root@node0 git-core]# groupadd git
[root@node0 git-core]# useradd wang -g git
[root@node0 git-core]# passwd wang
New password:
3.在伺服器端創建遠程倉庫
[root@node0 ~]# mkdir -p /mnt/gitrep/wjf
[root@node0 ~]# cd /mnt/gitrep/wjf/
[root@node0 wjf]# git init
Initialized empty Git repository in /mnt/gitrep/wjf/.git/
把倉庫所屬用戶改為wang(git的用戶名)
[root@node0 wjf]# chown -R wang:git .git/
註:chown將指定文件的擁有者改為指定的用戶或組 -R處理指定目錄以及其子目錄下的所有文件
4.在windows客戶端克隆倉庫
$ git clone [email protected]:/mnt/gitrep/wjf/.git
Cloning into 'wjf'...
The authenticity of host '192.168.111.60 (192.168.111.60)' can't be established.
RSA key fingerprint is SHA256:MgWCWF************************1m2tI.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.111.60' (RSA) to the list of known hosts.
[email protected]'s password:
第一次連接遠程倉庫,出現黑體部分,這是因為Git使用SSH連接,而SSH連接在第一次驗證GitHub伺服器的Key時,需要你確認GitHub的Key的指紋信息是否真的來自GitHub的伺服器,鍵入yes,然後輸入遠程倉庫的密碼就可以了。
5.實際中也通常通過設置公鑰的方式來連接遠程倉庫,這樣就不用每次連接都需要密碼了。
設置公鑰:
1.在windows客戶端的gitbash中生成用戶私鑰和公鑰
$ ssh-keygen -t rsa -C "[email protected]"
在c盤用戶路徑下的/.ssh文件夾下會生成私鑰id_rsa和公鑰id_rsa.pub
2.linux端
首先 Git伺服器打開RSA認證,即,修改/etc/ssh/sshd_config,將其中的以下三項打開
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
然後,將客戶端生成的公鑰給到伺服器端
即,將公鑰給到 home/wang(git的用戶名)/.ssh/authorized_keys
[root@node0 ~]# cd /home/wang
[root@node0 wang]# mkdir .ssh
[root@node0 wang]# chmod 777 .ssh
[root@node0 wang]# touch .ssh/authorized_keys
在windows客戶端的gitbash中 執行:
$ ssh [email protected] 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
然後在linux端:
[root@node0 wang]# chmod 600 .ssh/authorized_keys
[root@node0 wang]# chmod 700 .ssh
[root@node0 wang]# chown wang:git .ssh
[root@node0 wang]# chown wang:git .ssh/authorized_keys
至此,以後再連接遠程倉庫就不需要密碼了。
若仍需要密碼,可以查看ssh連接日誌/var/log/secure:
常見連接失敗原因:Authentication refused: bad ownership or modes for directory /home/wang/.ssh
這時需要檢查該目錄的所屬用戶和讀寫許可權等級是否符合要求。公鑰以及.ssh文件的許可權應該屬於git的用戶和用戶組,讀寫許可權等級.ssh 700,authorized_keys 600.
㈥ linux如何搭建git
1、環境准備
伺服器:CentOS 7.3 + git (1.8.3.1)
客戶端:win10 + git (2.17.0.windows.1)
2、伺服器安裝git
yum install -y git
3、創建git用戶,管理 git服務
[root@localhost home]# useradd git
[root@localhost home]# passwd git
4、伺服器創建git 倉庫
設置/home/git/repository-git 為git 伺服器倉庫,然後把 git 倉庫的 owner 修改為 git 用戶。
復制代碼
[root@localhost git]# mkdir repository-git
[root@localhost git]# git init --bare repository-git/
Initialized empty Git repository in /home/git/repository-gt/
[root@localhost git]# chown -R git:git repository-git/
5、客戶端安裝git
下載 Git for Windows,地址:https://git-for-windows.github.io/
安裝完之後,可以使用 Git Bash 作為命令行客戶端。
5.1、選擇一個目錄 F:\project\sell 作為本地倉庫,右鍵進入Git Bash 命令行模式
初始化本地倉庫:git init
5.2、嘗試克隆一個伺服器的空倉庫到本地倉庫
git clone [email protected]:/home/git/repository-gt
第一次連接到目標 Git 伺服器時會得到一個提示:
The authenticity of host '192.168.116.129(192.168.116.129)' can't be established.
RSA key fingerprint is SHA256:Ve6WV/.
Are you sure you want to continue connecting (yes/no)?
選擇 yes:
Warning: Permanently added '192.168.116.129' (RSA) to the list of known hosts.
此時 C:\Users\用戶名\.ssh 下會多出一個文件 known_hosts,以後在這台電腦上再次連接目標 Git 伺服器時不會再提示上面的語句。
㈦ linux系統下怎麼搭建git伺服器
我們很多人知道Git可能是從Github開始的。因為Github是如此流行,幾乎所有寫代碼的人都知道它,以至於一提到Git就以為是Github,其實兩者並沒有多少關系,只是名字類似而已(這有點像Java和JavaScript)。
152855_dxab_940492.png
實際上,Git是一個分布式版本控制軟體,原來是Linux內核開發者Linus Torvalds為了更好地管理Linux內核開發而創立的。雖然Git比SVN優秀很多,但它們最初被設計出來的想法是一致的,那就是版本控制。而Github卻是一個網站,充當Git公共伺服器的作用,只要擁有Github賬號的人都可以把自己的項目託管在那裡,如果你捨不得花些錢,你的項目是強制公開的。所以,Github就是一個通過Git協議為眾多開發者提供代碼託管的地方,同時它提供了很多特性,第一次使得大家可以這么公開地討論起各自的項目。
153043_4iw8_940492.png
上面之所以說這么多,是因為今天要講的Gitosis有點類似Github的功能。什麼意思呢?就是我們可以在自己的伺服器上安裝Gitosis,那麼這台伺服器就可以向Github一樣對外提供代碼託管服務了,這對於很多不願意把自己的代碼公諸於世的公司來說最好不過了。
這里以CentOS充當伺服器為例給大家講解一下Gitosis的安裝和配置。
1.編譯安裝git
yum install git
2.安裝gitosis
$ yum install python python-setuptools
$ git clone git://github.com/res0nat0r/gitosis.git
$ cd gitosis
$ python setup.py install
網址:https://github.com/res0nat0r/gitosis
3.在開發機器上生成公共密鑰(用來初始化gitosis)
$ ssh-keygen -t rsa #不需要密碼,一路回車就行(在本地操作)
$ scp ~/.ssh/id_rsa.pub root@xxx:/tmp/ # 上傳你的ssh public key到伺服器
4.初始化gitosis[伺服器端]
$ adser git # 新增一個git用戶(先添加用戶組 groupadd git)
$ su git # 切換倒git用戶下
$ gitosis-init < /tmp/id_rsa.pub # id_rsa.pub是剛剛傳過來的,注意放在/tmp目錄主要是因為此目錄許可權所有人都有定許可權的
$ rm /tmp/id_rsa.pub # id_rsa.pub已經無用,可刪除.
5.獲取並配置gitosis-admin [客戶端]
$ git clone git@xxx:gitosis-admin.git # 切換到root用戶並在本地執行,獲取gitosis管理項目,將會產生一個gitosis-admin的目錄,裡面有配置文件gitosis.conf和一個 keydir 的目錄,keydir目錄主要存放git用戶名
$ vi gitosis-admin/gitosis.conf # 編輯gitosis-admin配置文件
如果無法git clone的話,可以使用git clone git@xxx:/home/git/repositories/gitosis-admin.git
# 在gitosis.conf底部增加
[group 組名]
writable = 項目名
members = 用戶 # 這里的用戶名字 要和 keydir下的文件名字相一致
# VI下按ZZ(大寫)兩次會執行自動保存並退出,完成後執行
$ cd gitosis-admin
$ git add .
$ git commit -a -m 「xxx xx」 # 要記住的是,如果每次添加新文件必須執行git add .,或者git add filename,如果沒有新加文件,只是進行修改的話就可以執行此句。
# 修改了文件以後一定要PUSH到伺服器,否則不會生效。
$ git push
如果在git push的時候,遇到錯誤「ddress 192.168.0.77 maps to bogon, but this does not map back to the address – POSSIBLE BREAK-IN ATTEMPT!」,解決為修改/etc/hosts文件,將ip地址與主機名對應關系寫進去就可以了。
注意:這里我們並沒有進行任何的修改的,現在只有一個管理git的項目。下面的為新添加項目的配置,大家經常用到的也就是下面的操作的。
新建項目
到此步就算完成gitosis的初始化了。接下來的是新建一個新項目到伺服器的操作,如第5步中配置gitosis.conf文件添加的是
[group project1] # 組名稱
writable = project1 # 項目名稱
members = xxx # 用戶名xxx一定要與客戶端使用的用戶名完全一樣,否則無許可權操作
提交修改並更新到git server服務端
$ git commit -a -m 「添加新項目project1,新項目的目錄是project1,該項目的成員是xxx「 # 「」里的內容自定
$ git push
將新創建的項目提交到git server 上進行登記。以便客戶可以操作新項目.
# 在客戶端創建項目目錄(客戶端,當前用戶為 XXX )
現在回到開發者客戶端,上面創建了一個新項目project1並提交到了git server 。我們這里就創建此項目的信息.注意 項目名稱 project1要與gitosis.conf文件配置一致,
$ mkdir /home/用戶/project1
$ cd /home/用戶/project1
$ git init
$ git add . # 新增文件 留意後面有一個點
$ git commit -a -m 「初始化項目project1″
# 然後就到把這個項目放到git server伺服器上去.
$ git remote add origin git@xxx:project1.git # xxx為伺服器地址
$ git push origin master
# 也可以把上面的兩步合成一步
$ git push git@xxx:project1.git master
說明:如果在執行 git push origin master 的時候,提示以下錯誤:
error: src refspec master does not match any.
error: failed to push some refs to 『[email protected]:pro2.git』
這是由於項目為空的原因,我們在項目目錄里新創建一個文件。經過->add -> commit -> push 就可以解決了
$ touch a.txt
$ git add a.txt
$ git commit -a -m 『add a.txt』
$ git push
————————————————————————————————
如果在git clone的時候遇到「
error: cannot run ssh: No such file or directory – cygwin git
」錯誤,則表示本機沒有安裝ssh命令。安裝方法請參考:http://blog.haohtml.com/archives/13313
有時候我們要更換電腦來重新開發項目。這個時候,只需要將id_rsa私鑰放在home目錄里的.ssh目錄里就可以了。
㈧ 怎樣在linux 上搭建git +apache伺服器
1:伺服器端創建用戶(git)
# sudo adsergit
2:客戶端生成公鑰,並
創建公鑰:ssh-keygen,
在客戶端的用戶目錄下查看生成的公鑰和私鑰對
#cd ~/.ssh
#ls
id_dsa id_dsa.pub
公鑰所在的目錄:windows在」C:/User/username/.ssh」目錄下,linux在」~/.ssh」,~代表用戶目錄
3:伺服器git用戶下添加各個用戶公鑰,並配置ssh服務
將各個用戶的公鑰文件追加在伺服器git用戶的authorized_keys文件中
$ cat id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat id_rsa.jessica.pub >> ~/.ssh/authorized_keys
修改.ssh和authorized_keys的許可權).忘記下面的話,會每次輸入密碼,(ps,被這個坑了好久)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
4,在git用戶下創建git庫
cd gitDIR
mkdir project.git
cd project.git
git init –bare
5,客戶端使用
提交自己的庫
mkdir project
cd project
git init
vi first.txt
git remote add origin gitserver/gitDIR/project.git
git push origin master
克隆:git clonegit@gitserver/gitDIR/project.git
6,限制開發者登陸
默認情況下,能夠連接git伺服器用戶也可以通過ssh直接登陸伺服器,那麼伺服器將會存在被多用戶登入的風險,限制的方法是:
Vi /etc/passwd
git:x:1000:1000::/home/git:/bin/sh
該行修改後的樣子如下:
git:x:1000:1000::/home/git:/bin/git-shell