第二天,Ruby on Rails,Git版本控制,更新到遠端倉庫,部署
2018年11月30日
用Git做版本控制,我們暫時不用smartgit,就用本地的git。
在使用之前要做一些系統設定,設定你的使用者名稱和郵箱,這個設定只需一次
$ git config --global user.name "dongfangyier"
$ git config --global user.email "[email protected]"
上一篇文章裡 $ rails new hello_app 新建了一個專案,以這個專案為例介紹一下版本控制。進入專案的根目錄,這裡是和hello_app,初始化倉庫
$ git init
然後執行$ git add -A,把所有檔案放到倉庫中
$ git add -A
檢視倉庫狀態
$ git status
此時可以看到許多新增檔案還沒有提交,如果想把這些檔案儲存到倉庫,使用命令
$ git commit -m "first commit"
-m後面是用來新增本次提交的說明。使用git的好處很多,最明顯的一點就是,如果不小心誤刪了重要的檔案,此時檢視倉庫狀態git status,就會發現這個刪除操作還沒有提交到倉庫,這時可以用命令強制撤銷刪除:
$ git checkout -f
$ git status
以上步驟是本地的版本控制,我們接下來講遠端的版本控制,即推送到程式碼託管的網站,例如github、bitbucket、gitlab、碼雲等等,我用的是碼雲,國內伺服器跑得快。在碼雲註冊一個帳號,可以免費使用託管倉庫,用來做專案的備份也不錯。在碼雲新建一個專案例如hello_app(我的是
$ git remote add origin https://gitee.com/dongfangyier/hello_app.git
$ git push -u origin master
如果push成功,此時可以看到碼雲對應專案的程式碼已經上傳上來了
出現的問題:
- 無法推送,遠端倉庫包含本地尚不存在的提交,這一般是由於在碼雲上建專案時,添加了自述檔案readme,不是本地提交的,解決方法是:最簡單的,刪除對應遠端倉庫所有檔案,再push本地的上去;另一種是合併提交,先pull下來,合併,再push
$ git pull origin master $ git add -A $ git commit -m "merge" $ git push -u origin --all
我的測試專案截圖
- Pull is not possible ,unmerged files:(非常不建議,可能會丟失東西)
$ git ret --hard FETCH_HEAD
- 注意,push前先$ git add -A,檢視一下本地狀態$ git status,如果有新檔案沒有提交就先$ git commit -m "changed..."最後再push到遠端倉庫,這是最穩妥的方法。如果只是更改了檔案的內容而沒有增刪檔案的話,可以跳過add -A,直接在提交的時候 -a
$ git commit -a -m "changed..."
- 刪除誤建的倉庫,在該目錄下刪除 .git 檔案就可以了
$rm .git -rf
可以在碼雲上新建兩個專案倉庫,另一個做備份使用,萬一操作失誤還可以pull備份的倉庫。
簡單的講一下版本管理的分支、編輯、提交、合併的思想。簡單來說,很多人一起建設同一個專案,每人一部分任務,然後每人就在master下新建一個子分支,編輯完他們這部分任務後,提交各個子分支,確認無誤後再合併到主分支master上去。
分支:新建分支後,檢視分支結構,並且進入子分支。
$ git checkout -b newbranch
Switched to a new branch 'newbranch'
$ git branch
master
* newbranch
編輯、提交前面已經講過了,不再贅述,後面講合併
首先,切換回主分支,然後合併merge
$ git checkout master
$ git merge newbranch
此時合併已經完成,可以清理一下子分支
$ git branch -d newbranch
$ git push
然後是搭建Heroku部署環境,我大概講一下流程,但我還沒實現,因為註冊的時候網站說我是robot,一直驗證通過不了,沒辦法login
安裝Heroku:
$ sudo snap install heroku --classic
修改專案目錄下的Gemfile檔案,加兩段程式碼
group :production do
gem 'pg', '0.18.4'
end##增加一段
group :development, :test do
gem 'sqlite3', '1.3.11'###增加一行
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end
再執行命令
$ bundle install --without production
檢視heroku版本
$ heroku version
接下來就是login了,login後面的我沒做,可以列在這裡供你們參考
$ heroku login
$ heroku keys:add
$ heroku create
$ git push heroku master
這樣就完成了專案的部署。
誰知道這個怎麼解決?我不是robot啊啊啊啊~