最近在寫一些腳本,為了保持連續(xù)性,就在家也抽空趕進(jìn)度,所以碰到了代碼同步的問(wèn)題,目前想到的方法有三個(gè):
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),洪洞企業(yè)網(wǎng)站建設(shè),洪洞品牌網(wǎng)站建設(shè),網(wǎng)站定制,洪洞網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,洪洞網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。使用云盤,這個(gè)拿來(lái)即用,但是因?yàn)樵票P還存放了其他一些東西,總是實(shí)時(shí)同步不太妥當(dāng);
使用 SVN,傳統(tǒng)的代碼托管工具,一直在用;
使用 Git,最新的分布式代碼托管工具,據(jù)說(shuō)很強(qiáng)大。
最后決定使用 Git,主要是學(xué)習(xí)下最新的技術(shù)。下面是操作步驟,做記錄的同時(shí)也給其他同學(xué)做個(gè)指引:
先說(shuō)下環(huán)境:
服務(wù)端配置服務(wù)端: Ubuntu 16.04 x64
客戶端: Windows7 x64
先使用如下命令切到 root 權(quán)限進(jìn)行操作:
sudo bash
提示輸入密碼時(shí),輸入 root 密碼即可。
登錄成功后,開始安裝 git,命令:
apt-get install git
提示是否繼續(xù)時(shí),輸入 y 后回車,安裝流程繼續(xù),并直至安裝完成。
接著開始安裝 ssh,命令:
apt-get install openssh-server openssh-client
同樣在詢問(wèn)是否繼續(xù)時(shí),輸入 y 后回車,安裝會(huì)自動(dòng)完成。
然后我們新建一個(gè) git 專屬用戶,用戶名也叫 git,命令:
adduser git
新建成功后會(huì)提示設(shè)置用戶密碼,請(qǐng)?jiān)O(shè)置一個(gè)自己能記住的密碼后繼續(xù),后續(xù)的詳細(xì)信息可以酌情填寫。
下面開始新建 git 倉(cāng)庫(kù),我們選定倉(cāng)庫(kù)存放目錄為 /srv 下面,倉(cāng)庫(kù)名 myfiles.git,所以命令:
git init --bare /srv/myfiles.git
因?yàn)楫?dāng)前用戶是 root,為了讓后面 git 專用賬戶能夠操作倉(cāng)庫(kù)目錄,我們需要把倉(cāng)庫(kù)目錄授權(quán)給 git,命令:
chown -R git:git /srv/myfiles.git/
客戶端操作首先需要下載 Windows 版本的 git,下載地址:點(diǎn)擊下載
下載完成后點(diǎn)擊安裝,并根據(jù)提示點(diǎn)擊「下一步」,直到安裝完成。
在客戶端創(chuàng)建一個(gè)工作目錄,比如我的是 gitdir,在工作目錄內(nèi)右鍵并點(diǎn)擊 「Git Bash Here」。
在彈出的命令后窗口 clone 倉(cāng)庫(kù)到本地:
$ git clone git@192.168.252.128:/srv/myfiles.git
Cloning into 'myfiles'...
The authenticity of host '192.168.252.128 (192.168.252.128)' can't be established.
ECDSA key fingerprint is SHA256:zqtjAg+FGfWrT3SCp1Qa2KqhE2UOy3PmudhhrTFlm7A.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.252.128' (ECDSA) to the list of known hosts.
git@192.168.252.128's password:
warning: You appear to have cloned an empty repository.
注意請(qǐng)把「192.168.252.128」換成自己的服務(wù)端 ip,并且在確認(rèn)時(shí)輸入的是「yes」,最后輸入的是創(chuàng)建 git 用戶時(shí)候的密碼。
為了客戶端進(jìn)行后續(xù)的提交操作,我們還需要注明當(dāng)前機(jī)器的用戶信息,命令后如下:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
注冊(cè)后,commit 的時(shí)候會(huì)使用這個(gè)注冊(cè)信息來(lái)記錄操作人信息,然后在使用git log
時(shí)可以看到對(duì)應(yīng)的信息,效果如下圖:
$ git log
commit ae72bcc89ea8f5d9d3a44f0e00cf35e91a1afce8 (HEAD -> master, origin/master)
Author: sylan215
Date: Wed Oct 18 18:37:41 2017 +0800
測(cè)試提交
至此,我們完成整個(gè)配置過(guò)程。
文件修改并同步到 Git 服務(wù)器配置完成后,我們就進(jìn)入實(shí)際使用環(huán)節(jié)了。
首先我們先修改幾個(gè)文件,并拷貝到 myfiles 目錄下,然后提交到服務(wù)端,在 myfiles 下運(yùn)行提交命令:
git add .
git commit -am "測(cè)試提交"
git push
帶輸出的命令行內(nèi)容:
$ git add .
$ git commit -am "測(cè)試提交"
[master (root-commit) ae72bcc] 測(cè)試提交
1 file changed, 1 insertion(+)
create mode 100644 test.txt
$ git push
git@192.168.252.128's password:
Counting objects: 3, done.
Writing objects: 100% (3/3), 223 bytes | 223.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To 192.168.252.128:/srv/myfiles.git
* [new branch] master -> master
提示輸入密碼的地方,還是輸入的 git 賬戶的密碼。
說(shuō)明:關(guān)于 git 操作的詳細(xì)命令,請(qǐng)參考 這篇文章
提交成功后,我們?cè)诹硪慌_(tái)機(jī)器上使用命令git pull
同步最新內(nèi)容:
$ git pull
git@192.168.252.128's password:
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From 192.168.252.128:/srv/myfiles
ae72bcc..afad897 master -> origin/master
Updating ae72bcc..afad897
Fast-forward
test.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
對(duì)于多用戶的復(fù)雜操作,請(qǐng)參考這篇文章
其它配置 禁用 git 賬戶的 shell為了安全考慮,如果需要禁用 git 賬戶的 shell,可以修改 /etc/passwd 文件:
把其中的
git:x:1001:1001:git-user,,,:/home/git:/bin/bash
修改為
git:x:1001:1001:git-user,,,:/home/git:/usr/bin/git-shell
其中/usr/bin/git-shell
的路徑可以通過(guò)命令which git-shell
獲得。
上面我們使用的過(guò)程中每次都需要輸入 git 用戶的密碼才能和服務(wù)端交互,這樣會(huì)很麻煩,這時(shí)候我們可以配置公私匙來(lái)實(shí)現(xiàn)免密。
首先,需要在客戶端生成公私匙:
ssh-keygen -t rsa
回車后會(huì)提示輸入私匙的密碼,如果要免密就直接回車,否則自定義一個(gè)密碼(如果自定義了密碼,則每次 push 和 pull 時(shí)填入的是設(shè)置的密碼)。
命令執(zhí)行成功后,會(huì)在當(dāng)前用戶目錄的.ssh文件夾(Windows 目錄是 X:\Users{username}.ssh, Linux 是 /home/{username}/.ssh)生成文件「id_rsa」和「id_rsa.pub」,其中 .pub 文件就是公匙,另一個(gè)是私匙。
把文件「id_rsa.pub」拷貝到服務(wù)端,并使用如下命令進(jìn)行設(shè)置:
mkdir /home/git/.ssh
cp /home/currentuser/Desktop/id_rsa.pub /home/git/.ssh/authorized_keys
chown -R git:git /home/git/.ssh
說(shuō)明,如果 authorized_keys 文件不存在,可以使用 cp 命令,否則請(qǐng)使用 cat 命令追加,比如:
cat /home/currentuser/Desktop/id_rsa.pub >> /home/git/.ssh/authorized_keys
為了保證配置生效,還需要查看 /etc/ssh/sshd_config 文件中的如下設(shè)置是否開啟:
AuthorizedKeysFile %h/.ssh/authorized_keys
是否被注釋掉了,如果是,則需要把前面的 # 去掉,并重啟 ssh 服務(wù)(命令 service ssh restart)。
全部配置完畢后,我們?cè)囋囆Ч?/p>
$ git pull
Already up-to-date.
看,這次沒(méi)有提示輸入密碼了吧,免密設(shè)置生效。
非 22 端口連接 Git在 .ssh 配置目錄現(xiàn)在 config 文件,內(nèi)容為:
host ip地址
port 端口名
config 配置文件在 Windows 和 Mac 系統(tǒng)的位置為:X:/users/username/.ssh 目錄,其中 X 為系統(tǒng)盤, username 為當(dāng)前登錄用戶名;
如果是 liunx 系列系統(tǒng),位置為 /home/username/.ssh 目錄,其中 username 為當(dāng)前登錄用戶名。