1、可以用git把伺服器在本地建立倉庫嗎
git pull <name>
如果pull時提示「You asked me to pull without telling me whichbranch you want to merge with」,
說明本地有新建分支且已同步到伺服器上,當從伺服器下載代碼時需要在本地config中配置該分支的merge信息。
配置時可以參考下面的例子:
$ git config branch.master.remote origin //master是分支名,origin是遠程倉庫名
$ git config branch.master.merge refs/heads/master!
2、如何搭建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-copy-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的,中間有一部分是怎麼去搭建,你可以看下
3、如何在mac系統下搭建git伺服器
Git支持的協議主要是四種:
本地: 需要文件共享系統,許可權不好控制
HTTP:速度慢
SSH:同時支持讀寫操作,不支持匿名的讀取(Git默認協議)
GIT:最快
從
搭建的難易程度和特點綜合篩選,最合適的還是ssh,並且大部分伺服器上基本都有ssh服務,所以省去了不少麻煩。一個最基本的思路是給每一個人一個
ssh帳號,這樣大家就可以通過用戶名和口令來訪問了,但是顯然這不是一個好的選擇,這個做法有些多餘,並且對於repo的許可權很難管理。
在使用Github的時候,會利用rsa.pub公鑰/私鑰的方式,這樣在服務端擁有用戶的公鑰(*.pub)之後就可以,跨過繁瑣的口令,直接認證提交了,而服務端也會根據不同的用戶身份,對其許可權有著更加靈活的管理。因此我們也採用這種方式。
服務端
為了使遠程庫訪問更加直觀,先在伺服器上創建一個名為git的賬戶,這樣以後clone的時候就如下面的格式了:
git clone git@server:some.git
創建新的用戶,創建repo等目錄
$sudo adser git
$su git
$cd ~
$mkdir repos
在HOME下的.ssh目錄,如果沒有則創建,創建一個authorized_keys文件,這個文件就是用來管理所有git用戶的公鑰的,也就是這裡面的用戶對於項目有著R+W的許可權。
客戶端
對
於每一個客戶端,我們需要生成一對密鑰和公鑰,如果是Github用戶,那麼.ssh目錄下,一定有id_rsa.pub和id_rsa兩個文件,其中第
一個是系統生成的公鑰,另一個是自己要保存好的密鑰。如果沒有的話,可以在終端執行:ssh-keygen來生成,完成後,將自己的公鑰提交給管理員,這
就是一個注冊的行為。
完成
最後一步,管理員將團隊成員的公鑰添加到authorized_keys中,比如將同學susie加入:
$ cat susie.pub >> authorized_keys
至此,大家可以通過git@server:repos/some.git來訪問公共的版本庫了。
4、windows怎麼創建本地git伺服器
GIT伺服器包含GIT和OpenSSH,GIT用於軟體版本控制管理伺服器端,OpenSSH為Windows版本的SSH伺服器端軟體。
安裝msysgit
安裝步驟此處略去。
END
安裝CopSSH
安裝步驟此處略去。
END
修改配置
修改CopSSH配置文件C:\Program Files\ICW\etc\sshd_config,確保如下行為非注釋行,且設置為「no」:
END
生成用戶帳號
1
在伺服器上生成Windows用戶,取消用戶下次登錄時須更改密碼,設置密碼永不過期:
2
將該用戶隸屬於GitUser組(如尚未生成改組,則先生成改組):
END
激活用戶
1
在Windows啟動程序組中,運行如下程序(C:\Program Files\ICW\bin\ copsshcp.exe):
2
進入COPSSH Control Panel應用對話框,正常情況下服務應該為正在運行(圖標為綠色,如為紅色,則可嘗試點選該按鈕,啟動該服務):
3
選擇Users頁面:
4
點選Add按鈕,出現如下導航對話框:
5
選擇Forward按鈕,出現如下頁面,選擇欲激活的用戶對應的域名及用戶名:
6
選擇Forward按鈕,進入如下頁面,選擇Linux shell and Sftp,所有選項選中:
7
選擇Forward按鈕,進入確認頁面,選擇Apply:
8
回到如下頁面,選擇Apply後,關閉。
END
公鑰文件上傳
1
從用戶處取得對應帳戶的公鑰文件authorized_keys,復制到C:\Program Files\ICW\home\ricky\.ssh目錄下(\ricky\是對應的用戶名);
2
Windows啟動程序組中運行Start a Unix BASH Shell(或Windows運行中運行命令:"C:\Program Files\ICW\bin\bash.exe" --login -i):
3
運行如下unix命令行,如運行未出錯,則完畢。
END
生成Git庫容器目錄
1
在伺服器硬碟上生成一個目錄,用來容納Git庫,比如生成E:\ GITTestRepo\目錄;
2
滑鼠右鍵點擊該目錄,選擇共享和安全…;
3
在彈出的該目錄屬性對話框的安全頁中加入用戶對應的組GitUser;
4
確認該用戶組許可權設置了允許修改、讀取和運行、列入文件夾目錄、讀取、寫入,選擇確定後完畢。
END
確認防火牆開放了22埠
確認伺服器的防火牆沒有禁止22埠的TCP/IP通信。
END
修改用戶登錄運行腳本
1
修改C:\Program Files\ICW\home\ricky\.bashrc文件(\ricky\是對應的用戶名),在文件最後加入如下行:
5、如何創建自己的私有git伺服器
通過以下的步驟,你將在伺服器上搭建並使用你自己的Git服務,例如myhost.example.com。其中的一些步驟,像email通知,限制用戶的許可權,特定分組的接入管理,都是依據你的要求和現實狀況的可選項。還有很多命令,你需要root許可權才能執行,所以別忘了用sudo,或者(最好不要)直接切換到root來執行。
為有讀寫許可權的用戶建立一個分組。根據你的操作系統,你可以用groupadd命令來實現,用vigr來編輯分組文件,或者直接編輯/etc/group文件。在最後,你會在/etc/group文件中看到如下一行
repogroup:*:10005:marry,john,violet
其中,repogroup是准許接入這個倉庫的組的名字。10005是一個獨一無二的分組識別數字,marry,john,violet則是獲准接入這個倉庫的用戶。
決定Git倉庫的路徑。它既可以放在你的home路徑下(e.g. /home/yourname/gitroot),也可以放在一個專用的路徑下(e.g. /var/gitroot).
配置許可權,讓Git用戶可以訪問這個目錄
chmod g+rx /path-to/gitroot
chown :grouprepo /path-to/gitroot
建立新的Git倉庫,叫做newrepo
cd /path-to/gitroot
git init --bare newrepo.git
建立路徑認證,以允許用戶組訪問,同時有針對性的設置Git
cd newrepo.git
chown -R :grouprepo .
git config core.sharedRepository group
find . -type d -print0 | xargs -0 chmod 2770
find . -type f -print0 | xargs -0 chmod g=u
設置提交(commit)的email通知(commit是一條命令),這樣當有新的修改提交到倉庫的時候,開發者們將會收到一封關於修改內容一覽的電子郵件。
echo 'One-line project description' >description
git config --local hooks.mailinglist [email protected],[email protected],...
git config --local hooks.emailprefix '[DI-PR] '
git config --local hooks.showrev "git show -C %s; echo"
git config --local hooks.emailmaxlines 100
通過設置一個稱為鉤子(hook)的東東,來創建這些email通知。
cd hooks
cp post-receive.sample post-receive
chmod +x post-receive
從post-receive的腳本中移除掉最後一行注釋的#字型大小,最後語句應該是這樣的
. /path-to-hooks/post-receive-email
在你的庫中先放入一個文件(比如README)。為了避免其他用戶在第一次提交時遇到奇怪的錯誤信息時感到困惑,這是有必要的。
cd to-your-personal-working-directory
git clone myhost.example.com:/path-to/gitroot/newrepo.git
echo "Short project description" >README.txt
git add README.txt
git commit -a -m "Add README file"
git push origin master # 第一次僅僅需要T"origin master" 這個參數
為倉庫的其他用戶建立賬戶。依據你系統的不同,你可以通過useradd 或者adser來實現。
設置用戶可以通過公/私鑰配對來訪問。這包括以下幾步:
1)已經有公鑰的用戶,只需要把公鑰發給你就好。
2)沒有公鑰的用戶,必須用ssh-keygen命令來生成一個,然後把.ssh/id_rsa.pub發給你就可以了。
3)之後你必須在他們對應的賬戶下面建立這種公/私鑰配對。復制他的公鑰,然後順序執行下面的命令。
sudo su - username
mkdir -p .ssh
cat >>.ssh/authorized_keys <<\EOF
paste-key-as-one-line
EOF
exit
改變用戶的賬戶讓他們使用受限的shell。如果你想讓你添加進來的用戶僅僅使用Git,而不是Unix的所有東西,那麼就設置他們的賬戶,讓他們只能使用Git。Git提供了這種專為這種需求設計的受限shell。它通常被安裝在 /usr/libexec/git-core/git-shell or /usr/local/libexec/git-core/git-shell。因此,對所有你想限制許可權的用戶,你可以執行以下命令。
sudo chsh -s /usr/libexec/git-core/git-shell username
告訴你的用戶,用下面的語句來克隆倉庫到本地。
git clone myhost.example.com:/path-to/gitroot/newrepo.git
到了這里,恭喜你,你成功了!
6、git的分支是在本地創建還是在服務端創建
當前工作空間的文件回退到某個版本,其實Git會將這些快照串成一條條的時間線,而這些時間線就是我們的:分支。
Git是一款免費、開源的分布式版本控制系統。眾所周知的Github便是基於Git的開源代碼庫以及版本控制系統,由於其遠程託管服務僅對開源免費,所以搭建本地Git伺服器也是個較好的選擇。
分支的創建與切換
1)創建分支
git branch 分支名
可以直接簡單git branch或者git branch -a來查看所有分支,而此時分支和HEAD的情況如下:
接著切回master分支,鍵入:git checkout master,打開我們的note_1.txt,這個時候會發現並沒有發生更改,因為剛剛的提交是在develop分支上進行的,而master分支上沒有變化,此時的版本線情況如下:
7、window怎麼搭建git伺服器配置
首先這里我們安裝openssh-server openssh-client,如果你用的是VPS之類的一般都默認安裝好了,不過運行一個這個命令不會有錯的,如果有安裝就會提示已安裝。sudo apt-get -y install openssh-server openssh-client安裝git,在這個核心軟體,不可或缺。sudo apt-get -y install git添加gitolite用戶和同名用戶組,加上--system參數,用戶就不會在登陸界面顯示。sudo adser --system --shell /bin/sh --group --disabled-password --home /home/gitolite gitolite生成ssh key,一路回車下來。ssh-keygen -t rsa將你當前用戶的ssh pub key復制到/tmp下備用,由於我用的是桌面版在同一台機器上。cp ~/.ssh/id_rsa.pub /tmp/ubuntugege.pub如果你是ssh遠程登陸到伺服器上安裝,就要把你本地的key復制到遠程的機器上scp ~/.ssh/id_rsa.pub gitolite.server:/tmp/ubuntugege.pub安裝gitolite,在ubuntu中已經集成了,不用自己去下載。sudo apt-get -y install gitolite切換到gitolite用戶環境中,因為我要以gitolite用戶身份去初始化安裝。sudo su - gitolite執行初始化安裝gitolite。gl-setup /tmp/ubuntugege.pub把管理庫gitolite-admin克隆過來就可以開始gitolite用戶及代碼庫的管理了,如果不能克隆,那麼就說明初始化的ssh pub key錯了。
8、如何搭建自己的git服
你可以把倉庫放在任何你希望存放倉庫的地方,你只需要保證用戶和用戶組對這個倉庫有適合的許可權就可以。最好不要把倉庫存放在用戶自己的工作區,因為許可權要求是很嚴格的,你可以存放在一些共享目錄,例如/optor /usr/local/share。
使用root用戶創建一個裸倉,並賦予gituser合適的許可權:
# git init --bare /opt/jupiter.git# chown -R gituser:gituser /opt/jupiter.git# chmod -R 770 /opt/jupiter.git
現在經過驗證的作為gituser的或者gituser用戶組的用戶可以讀取並寫入jupiter.git倉庫了。你可以試著在你的本地機器執行下面的命令:
$ git clone [email protected]:/opt/jupiter.git jupiter.clone
Cloning into 'jupiter.clone'...
Warning: you appear to have cloned an empty repository.
記住一點:開發者必須把自己的公鑰加入gituser用戶的authorized_keys文件中,或者他們就是伺服器的用戶(如果可以的話),並且這個用戶必須成為gituser用戶組的一員。
9、git一般安裝在本地伺服器制定的目錄下嗎
git一般安裝在本地伺服器制定的目錄下
安裝msysgit
安裝步驟此處略去。
END
安裝CopSSH
安裝步驟此處略去。
END
修改配置
修改CopSSH配置文件C:\Program Files\ICW\etc\sshd_config,確保如下行為非注釋行,且設置為「no」:
END
生成用戶帳號
1
在伺服器上生成Windows用戶,取消用戶下次登錄時須更改密碼,設置密碼永不過期:
2
將該用戶隸屬於GitUser組(如尚未生成改組,則先生成改組):
END
激活用戶
1
在Windows啟動程序組中,運行如下程序(C:\Program Files\ICW\bin\ copsshcp.exe):
2
進入COPSSH Control Panel應用對話框,正常情況下服務應該為正在運行(圖標為綠色,如為紅色,則可嘗試點選該按鈕,啟動該服務):
3
選擇Users頁面:
4
點選Add按鈕,出現如下導航對話框:
5
選擇Forward按鈕,出現如下頁面,選擇欲激活的用戶對應的域名及用戶名:
6
選擇Forward按鈕,進入如下頁面,選擇Linux shell and Sftp,所有選項選中:
7
選擇Forward按鈕,進入確認頁面,選擇Apply:
8
回到如下頁面,選擇Apply後,關閉。
END
公鑰文件上傳
1
從用戶處取得對應帳戶的公鑰文件authorized_keys,復制到C:\Program Files\ICW\home\ricky\.ssh目錄下(\ricky\是對應的用戶名);
2
Windows啟動程序組中運行Start a Unix BASH Shell(或Windows運行中運行命令:"C:\Program Files\ICW\bin\bash.exe" --login -i):
3
運行如下unix命令行,如運行未出錯,則完畢。
END
生成Git庫容器目錄
1
在伺服器硬碟上生成一個目錄,用來容納Git庫,比如生成E:\ GITTestRepo\目錄;
2
滑鼠右鍵點擊該目錄,選擇共享和安全…;
3
在彈出的該目錄屬性對話框的安全頁中加入用戶對應的組GitUser;
4
確認該用戶組許可權設置了允許修改、讀取和運行、列入文件夾目錄、讀取、寫入,選擇確定後完畢。
END
確認防火牆開放了22埠
確認伺服器的防火牆沒有禁止22埠的TCP/IP通信。
END
修改用戶登錄運行腳本
1
修改C:\Program Files\ICW\home\ricky\.bashrc文件(\ricky\是對應的用戶名),在文件最後加入如下行:
10、如何搭建git本地伺服器 windows
安裝msysgit
安裝步驟此處略去。
END
安裝CopSSH
安裝步驟此處略去。
END
修改配置
修改CopSSH配置文件C:\Program Files\ICW\etc\sshd_config,確保如下行為非注釋行,且設置為「no」:
END
生成用戶帳號
1
在伺服器上生成Windows用戶,取消用戶下次登錄時須更改密碼,設置密碼永不過期:
2
將該用戶隸屬於GitUser組(如尚未生成改組,則先生成改組):
END
激活用戶
1
在Windows啟動程序組中,運行如下程序(C:\Program Files\ICW\bin\ copsshcp.exe):
2
進入COPSSH Control Panel應用對話框,正常情況下服務應該為正在運行(圖標為綠色,如為紅色,則可嘗試點選該按鈕,啟動該服務):
3
選擇Users頁面:
4
點選Add按鈕,出現如下導航對話框:
5
選擇Forward按鈕,出現如下頁面,選擇欲激活的用戶對應的域名及用戶名:
6
選擇Forward按鈕,進入如下頁面,選擇Linux shell and Sftp,所有選項選中:
7
選擇Forward按鈕,進入確認頁面,選擇Apply:
8
回到如下頁面,選擇Apply後,關閉。
END
公鑰文件上傳
1
從用戶處取得對應帳戶的公鑰文件authorized_keys,復制到C:\Program Files\ICW\home\ricky\.ssh目錄下(\ricky\是對應的用戶名);
2
Windows啟動程序組中運行Start a Unix BASH Shell(或Windows運行中運行命令:"C:\Program Files\ICW\bin\bash.exe" --login -i):
3
運行如下unix命令行,如運行未出錯,則完畢。
END
生成Git庫容器目錄
1
在伺服器硬碟上生成一個目錄,用來容納Git庫,比如生成E:\ GITTestRepo\目錄;
2
滑鼠右鍵點擊該目錄,選擇共享和安全…;
3
在彈出的該目錄屬性對話框的安全頁中加入用戶對應的組GitUser;
4
確認該用戶組許可權設置了允許修改、讀取和運行、列入文件夾目錄、讀取、寫入,選擇確定後完畢。
確認防火牆開放了22埠
確認伺服器的防火牆沒有禁止22埠的TCP/IP通信。
修改用戶登錄運行腳本
1
修改C:\Program Files\ICW\home\ricky\.bashrc文件(\ricky\是對應的用戶名),在文件最後加入如下行: