1. 程式人生 > >第二天,Ruby on Rails,Git版本控制,更新到遠端倉庫,部署

第二天,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(我的是

https://gitee.com/dongfangyier/hello_app),然後回到本地終端,在專案根目錄,這裡是hello_app資料夾下,剛剛已經做了本地的提交,現在推送到遠端倉庫:

$ git remote add origin https://gitee.com/dongfangyier/hello_app.git
$ git push -u origin master

如果push成功,此時可以看到碼雲對應專案的程式碼已經上傳上來了

出現的問題:

  1. 無法推送,遠端倉庫包含本地尚不存在的提交,這一般是由於在碼雲上建專案時,添加了自述檔案readme,不是本地提交的,解決方法是:最簡單的,刪除對應遠端倉庫所有檔案,再push本地的上去;另一種是合併提交,先pull下來,合併,再push
    $ git pull origin master
    $ git add -A
    $ git commit -m "merge"
    $ git push -u origin --all

    我的測試專案截圖

  2. Pull is not possible ,unmerged files:(非常不建議,可能會丟失東西)
    $ git ret --hard FETCH_HEAD

     

  3. 注意,push前先$ git add -A,檢視一下本地狀態$ git status,如果有新檔案沒有提交就先$ git commit -m "changed..."最後再push到遠端倉庫,這是最穩妥的方法。如果只是更改了檔案的內容而沒有增刪檔案的話,可以跳過add -A,直接在提交的時候 -a
    $ git commit -a -m "changed..."

     

  4. 刪除誤建的倉庫,在該目錄下刪除 .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啊啊啊啊~