背景:昨天把自己的項目從Windows移植到服務器上,但有一些小細節要更改。在服務器上改又太慢,在本地改使用Xftp又得自己定位到改的地方,然後再覆蓋,同時可能會出現端口占用的情況。最終還是Git方便同時還順帶有很多其他的功能。
零、需要去Git官網註冊個賬號
https://github.com/
一、下載安裝
1.1在windows 下安裝git
直接默認安裝下一步即可
1.2在linux 下安裝git
sudo yum install git
sudo atp-get install git
二、在Git創建庫
登錄賬號後,在右上角點擊Your repositories
左上角新建New
新建一個testGit庫
二、配置
2.1windows配置
1、安裝完成後打開Git Bash
2、使用Shell命令定位到你的項目的目錄下
3、初始化,將目錄變成Git可管理的目錄
它會在目錄下自動生成一個.git的隱藏文件
4、配置自己的Git賬號
git --global config user.email "剛纔註冊Git的郵箱"
git --global config user.name "剛纔註冊Git的用戶名"
5、連接遠程庫
git remote add origin [email protected]:用戶名/testGit.git
6、創建ssh-key
ssh-keygen(一直回車)
他會自動生成私有鑰(對公有鑰進行解碼用的,不要告訴任何人)和公有鑰,其中一行中的id_rsa.pub表示公有鑰,id_rsa表示私有鑰
7、將公有鑰添加到Github上,獲得權限
cat /c/user/shinelon/.ssh/id_rsa.pub
把內容複製下來(注意複製要完整),然後點擊github右上角的設置
點擊SSH開頭,點擊New。起個名字,將剛纔複製的公有鑰放進去。點擊Add SSH key
8、將項目下的所有文件提交到剛纔建立的私有庫testGit
add是添加 | commit是提交 | -m是提交說明 | pull 拉 | push是推送 | -u是將本地的master分支與遠程的master分支關聯起來(第一次需要用) | origin是遠程庫的默認名,可以換名 | mater是分支名稱
–allow-unrelated-histories 允許相關的兩個庫合併,將本地和遠程兩個項目合併(實際就是把剛創建的庫中的LICENSE文件pull到本地)
注:因爲新建庫裏沒東西才用這個命令。如果你在自己新建的分支上進行add和commit你會再次看到類似的fatal,類似 origin/master test1 如果你在test1分支下設置了允許合併後–allow-unrelated-histories,你的分支test1會直接繞過master再次和你的項目合併。
那如果不想允許兩個庫合併呢?
方法是先在github上創建庫然後clone到本地,配好公有鑰後同樣使用分支add commit等命令操作,相當於你把項目手動放進clone好的的本地庫,提交時在更新到遠程庫
git add .
git commit -m "這是一次測試"
git pull origin master --allow-unrelated-histories (如果打開了文件直接:q 退出)
出現這個的話就:使用管理員方式打開記事本,再使用記事本打開C:\Windows\System32\drivers\etc下的hosts文件,添加如下
13.250.177.223 github.com
git pull origin master --allow-unrelated-histories (再拉一次)
git push -u origin master
查看,本地和遠程庫已同步
2.2linux配置
假設這是你網站項目的位置:/var/www/testGit
1、生成ssh-key
直接在linux中輸入(和剛纔windows一樣一直enter)
ssh-keygen
2、將公有鑰添加到Github上,獲得權限
cat /root/.ssh/id_rsa.pub
複製公有鑰到Github的SSH管理
3、克隆你的剛纔在windows上傳的項目
cd /var/www
複製項目地址
git clone [email protected]:你的名字/testGit.git
chmod 777 /var/www/testGit
三、實時更新
1、在windows下創建和使用分支
創建
git branch test1
切換分支
git checkout test1
查看目前所在分支
2、本地提交新修改的文件到github,例如我在Windows下改了code
建議不要使用記事本編輯,因爲可能會出現編碼錯誤!我使用的是sublime test3
這時test1分支的測試.txt內容如下
git checkout master
這時master分支的測試.test內容如下
所以更改完後,需要講結果合併到master再提交到github纔有效
git merge test1 (合併分支,將更改結果合併到master)
再看測試.txt
現在可以將更改的內容提交到github了
git add .
git commit -m "實時更新測試(多人分支合作)"
git push origin master
github已更新
3、linux上pull取windows上更新的內容
更新前
git pull