此文是本菜雞在實踐屢次git搭建內網服務版本庫和GitHub上的使用總結
部分參考了這位大佬的博客https://www.cnblogs.com/dee09...
另外推薦廖雪峯大佬的git博客html
進入正題git
注意注意,下面的方法是常規的git服務器搭建過程,其實徹底可使用gitlab之類的開源軟件搭建git服務器,下面這種方式其實比較雞肋,gitlab就至關於本身搭建github,值得一試~github
前提是服務器配置稍好,gitlab運行佔用大約4G內存centos
個人服務器是Centos7 因此使用yum命令安裝bash
yum install -y git
上面必須保證服務器可聯網
安裝完成後使用命令查看git版本服務器
git --version
顯示版本即視爲安裝成功eclipse
地址https://git-scm.com/download/win
一直默認安裝就能夠,右擊鼠標能夠出現git bush選項即視爲安裝成功ssh
注:這個用戶是用來作版本庫全部者的區分的,不是做爲上傳代碼的用戶的,只須要一個就能夠了。
執行命令
添加名爲git的用戶maven
useradd git
爲用戶git 設置密碼gitlab
passwd git
能夠設置任意位置爲git倉庫,咱們把git倉庫放在/home/data/git/下
git倉庫通常以*.git這樣格式的文件夾來表示,隨意命名
首先建立git倉庫所需文件夾
mkdir -p /home/data/git/testgit.git
初始化git倉庫
git init --bare /home/data/git/testgit.git
系統會提示初始化一個空的版本庫
將testgit.git文件夾的用戶權限給予git用戶便可
cd /home/data/git
chown -R git:git /home/data/git/testgit.git/
至此,咱們已經完成一個服務器端的git倉庫搭建。
完成倉庫搭建後便可鏈接遠程倉庫
鏈接須要服務器主機ip,個人是192.168.25.108,下面將服務器遠程倉庫克隆到本地。
git clone git@192.168.25.108:/home/data/git/testgit.git
獲得以下界面
輸入yes 回車,提示輸入密碼,無視繼續回車走起
結束後會在電腦 C:/Users/用戶名/.ssh/ 中生成一個文件known_hosts 這個文件會保存全部鏈接過的ip信息,下一次鏈接這個IP就不會有上面的提示了。
使用文本編輯文件能夠看到咱們的ip信息
此時咱們就能夠將遠程git倉庫的代碼克隆到本地了。
再次執行
git clone git@192.168.25.108:/home/data/git/testgit.git
輸入上面設置的git用戶的密碼便可將遠程代碼克隆到本地
通常狀況下咱們爲了提交代碼快捷簡便都會採用SSH免密登陸的方式來訪問遠程倉庫,這樣就不會頻繁的輸入密碼
客戶端建立SSH公鑰私鑰,在git bash中執行(下面的郵箱地址隨意填寫一個本身的郵箱就能夠)
ssh-keygen -t rsa -C "example@email.com"
此時在C:/Users/用戶名/.ssh/ 中生成了兩個文件
pub結尾的文件爲公鑰,另外一個文件爲私鑰,當咱們吧本身的公鑰信息放在對應服務器上就能夠免密碼訪問服務器,實現免密碼克隆版本庫
vi /etc/ssh/sshd_config
將如下三項的註釋去掉
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
保存並重啓sshd服務:
centos6命令
/etc/rc.d/init.d/sshd restart
centos7命令
systemctl restart sshd.service
由 AuthorizedKeysFile 得知公鑰的存放路徑是 .ssh/authorized_keys,其實是 $Home/.ssh/authorized_keys,因爲管理 Git 服務的用戶是 git,因此實際存放公鑰的路徑是 /home/git/.ssh/authorized_keys
在/home/git/下建立目錄/.ssh
mkdir -p /home/git/.ssh
修改.ssh文件夾的用戶
chown -R git:git /home/git/.ssh
在客戶端git bash中執行命令
ssh git@192.168.25.108 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
導入成功後回到服務器端查看是否已經將對應的公鑰內容導入
vi /home/git/.ssh/authorized_keys
公鑰是以郵箱地址結尾(上面添加的我的郵箱)
修改.ssh/的目錄權限爲700
修改authorized_keys的權限爲600
chmod 700 /home/git/.ssh/
chmod 600 /home/git/.ssh/authorized_keys
再次在客戶端嘗試克隆
git clone git@192.168.25.108:/home/data/git/testgit.git
有些公司內網服務器不能使用通用22端口,這樣每次訪問git還得額外多加端口信息。
解決方法: (以192.168.25.108 ssh端口爲8822爲例)
在C:/Users/用戶名/.ssh/ 下新建一個config文件
文件內容
Host 192.168.25.108 Port 8822
這樣命令不變也能夠克隆倉庫。
未完待續~
注:使用eclipse初始化本地版本庫可能會打亂目錄結構,尤爲是maven之類的項目帶父子工程的,很容易打亂目錄結構,看着很不舒服,解決方法見第四節
今天使用eclipse插件提交到版本庫,怎麼也提交不上去,最後無奈使用命令提交,插件畢竟是插件,出現bug的時候試試命令行,提交方法見第四節
在eclipse中的項目右擊>>Team>>share Project
點擊finish完成本地版本庫的建立
右擊項目
繼續
提交後本地版本庫已經同步,下面把本地代碼推送到遠程版本庫
Team>>remote>>push
第一次提交推薦勾選Force Update
完成後會收到已經推送的提示
網上解決衝突的方法都差很少。下面是個人使用的心得:
方法:eclipse中選擇衝突文件右擊>>Team>>advanced>>AssumeUnchanged 這個選項的意思就是標記爲未修改,也就是說這個文件在被標記了以後使用Pull命令後遠程代碼會覆蓋本地代碼,這個選項儘可能只在單個文件使用。