Django工具:Git简介与基本操作
1.Git簡介:
1.Git是目前世界上最先進的分布式版本控制系統
網址:http://github.com
2.總結git的兩大特點:
- 版本控制:可以解決多人同時開發的代碼問題,也可以解決找回歷史代碼的問題
- 分布式:Git是分布式版本控制系統,同一個Git倉庫,可以分布到不同的機器上。
?
2.經理創建
2.1安裝配置:
?
- 安裝
sudo apt-getinstall git
- 安裝成功后,運行如下命令
git
?
配置
- 在ubuntu的命令vi .gitconfig行中,修改某臺機器的git配置
- 修改為注冊github時的郵箱,填寫用戶名,要求組員的用戶名不能重復
?
- git四部分的交互方式如下圖
?
?
2.2創建倉庫
- 注冊github賬戶,登錄后,點擊"start a project"
- 在新頁面中,輸入項目的名稱,勾選'readme.md',點擊'create repository'
- 添加成功后,轉到文件列表頁面,點擊'create new file'創建新文件
- 填寫文件名稱為'.gitignore',代碼如下,表示項目中的pyc文件不需要被管理,因為這些文件代碼是根據py生成的
- *.pyc
.idea/
migrations/
- 點擊'preview'查看預覽,點擊'create new file'完成創建
?
2.3添加ssh賬戶
- 如果某臺機器需要與github上的倉庫交互,那么就要把這臺機器的ssh公鑰添加到這個github賬戶上
- 點擊賬戶頭像后的下拉三角,選擇'settings'
- 點擊'SSH and GPG keys',添加ssh公鑰
?
生成git密鑰
- 刪除~/.ssh目錄,這里存儲了舊的密鑰
rm -r .ssh
?
運行如下命令生成密鑰
ssh-keygen -trsa -C "Github賬號,可以是用戶名,也可以是郵箱地址"
?
- 查看公鑰內容,復制此內容
cat id_rsa.pub
?
- 回到瀏覽器中,填寫標題,粘貼公鑰
?
2.4克隆項目
- 在瀏覽器中點擊進入github首頁,再進入項目倉庫的頁面
- 復制git地址
- 在命令行中復制倉庫中的內容
git clone git地址
?
錯誤處理
- 提示錯誤信息如下:
sign_and_send_pubkey: signingfailed: agent refused operation
- 錯誤原因:在ssh賬戶中沒有加入新生成的密鑰
- 解決:將密碼加入ssh賬戶
- 逐條運行如下命令
eval "$(ssh-agent-s)"
ssh-add
?
2.5創建項目分支
- 每個員工開發期的代碼互不干擾,并行開發,則每人使用一條分支
- 項目開發中公用分支包括master、dev
- 分支master用于發布,默認分支,當需要發布時將dev分支合并
- 分支dev開發階段性的代碼合并,每個階段的工作完成后需要進行一次,控制項目的進度
- 成員分支用于每個項目成員的代碼開發,實現不交叉
?
- 創建分支:git branch 分支名稱
- 切換分支:git checkout 分支名稱
- 將分支推送到服務器:git push origin 分支名稱
- 將本地分支跟蹤服務器分支
git branch--set-upstream-to=origin/分支名稱 分支名稱
?
- 創建并切換分支:git checkout -b 分支名稱
- 查看所有分支,當前分支前標記為星*:git branch
- 刪除分支:git branch -d 分支名稱
沒有例子,沒錯,就是沒有例子,如果你刪除了,我也找不回來喲
?
2.6搭建項目框架
- 當前項目分支一共有3個,分別為master、dev、itcast,當前在itcast分支上工作
- 在克隆的目錄下創建項目,使用django框架
- 將文件代碼添加到暫存區:git add dailyfresh/
將暫存區提交到倉儲區:git commit -m '搭建框架'
?
?
2.7上傳分支
- 當從遠程倉庫克隆時,實際上Git自動把本地的master分支和遠程的master分支對應起來
- 遠程倉庫的默認名稱是origin
- 推送分支,就是把該分支上的所有本地提交推送到遠程庫,推送時要指定本地分支,這樣,Git就會把該分支推送到遠程庫對應的遠程分支上
git pushorigin 分支名稱
?
- 當前文件在python分支上,所以推送python分支
gitpush origin python
?
- 將python分支合并到dev分支
gitcheckout dev
git merge python
?
- 推送dev分支:git push origin dev
- 將dev分支合并到master分支
git checkoutmaster
git merge dev
?
- 推送master分支:git push origin master
?
3.員工—開發
?
3.1添加ssh賬戶
生成git密鑰
- 刪除~/.ssh目錄,這里存儲了舊的密鑰
rm -r .ssh
?
運行如下命令生成密鑰
ssh-keygen -trsa -C "Github賬號,可以是用戶名,也可以是郵箱地址"
?
- 查看公鑰內容,復制此內容
cat id_rsa.pub
?
- 回到瀏覽器中,填寫標題,粘貼公鑰
?
3.2本地克隆
- 根據項目經理提供的地址,如“git@github.com:bossliu2016/django1.git”,從github上將項目克隆到本地,默認對應的是master分支
git clone 項目地址
?
3.3同步分支
- 以自己的姓名創建分支,如果此分支已經存在可以添加數字后綴,具體要與項目經理商量
git checkout -bzhjia
- 將本地分支推送到服務器
git push originzhjia
- 將本地分支跟蹤服務器分支
git branch--set-upstream-to=origin/分支名稱 分支名稱
?
- 將github上的dev分支同步到本地,因為開發過程中,所有組員都向這個分支上提交階段性代碼,并從這個分支獲取最新代碼
git checkout -bdev origin/dev
?
3.4開發管理
- 上面的操作,只有我們在加入項目的第一天需要進行,只操作一次就夠了
- 接下來的操作,是我們每天開發中都要進行的操作,這是必須做到熟練操作的命令
- 當前用戶以zhjia分支進行開發
git checkout zhjia
?
- 本地倉庫分為三部分:工作區,暫存區,倉庫區,其中暫存區、倉庫區是版本庫部分
?
?
3.5工作區與暫存區
?
添加
git add 文件1 文件2 ...
git add 目錄
?
撤銷? :git checkout-- 文件名
?
3.6暫存區與倉庫區
- 倉庫區表示個人開發的一個小階段的完成,倉庫區中記錄的各版本是可以查看并回退的,但是在暫存區的版本一旦提交就再也沒有了
- 查看暫存區未提交的記錄:git status
- 將暫存區的記錄提交到倉庫區
git commit -m'本次提交的說明信息'
?
3.7本地與服務器
?
獲取
- 建議:在每天開始編寫代碼前,先與服務器同步一次;或者在公用分支如dev上開發時,建議先同步后開發
- 1.切換到dev分支:git checkout dev
- 2.獲取代碼,如果dev分支上有更新的記錄則會同步到本地:git pull
- 3.切換回自己的分支繼續開發:git checkout zhujiao
推送
- 建議:在每天下班前將當天開發推送到服務器,這樣可以在服務器中存儲一個備份,即使本機出問題,在服務器上還能存在代碼備份
- git push origin zhjia
?
合并分支
- 一個功能模塊開發完了,合并到dev分支
- 1.切換到dev分支:git checkout dev
- 2.獲取代碼,如果dev分支上有更新的記錄則會同步到本地:git pull
- 3.合并:git merge zhjia
- 4.添加、提交并推送:git push origin dev
- 5.切換回工作分支:git checkout zhujiao
- 6.在最新代碼上繼續開發,所以將dev分支合并到zhujiao分支
git merge dev
?
解決沖突
- 建議:在更改公用文件如dailyfresh/urls.py時需要操作dev分支,因為大家都可以操作dev分支,所以在合并時可能出現沖突
- 沖突的示例如下,修改dailyfresh/urls.py文件
?
項目經理的操作
- 1.項目經理負責前臺的開發,需要修改dailyfresh/urls.py文件
git checkout dev
?
- 2.在dailyfresh/urls.py文件中添加一條url
- 3.添加并提交
git adddailyfresh/urls.py
git commit -m '配置前臺url'
?
- 4.同步到服務器
git push origindev
?
員工的操作
- 1.員工負責用戶模塊的開發,需要修改dailyfresh/urls.py文件
git checkout dev
- 2.在dailyfresh/urls.py文件中添加一條url
- 3.添加并提交
git adddailyfresh/urls.py
git commit -m '配置用戶模塊url'
- 4.向服務器推送:git push origin dev
- 5.推送時發現出錯誤了,根據提示,需要先獲取服務器的變更
git pull
- 發現有沖突,而且自動合并沖突失敗,需要手動合并沖突,指向dailyfresh/urls.py文件
- 6.沖突解決完成,再次添加、提交、推送
git add dailyfresh/urls.py
git commit -m '配置用戶模塊url-解決沖突后'
git push origin dev
?
3.8歷史
- 查看倉庫區的歷史操作
git reflog
?
- 對比工作區和倉庫區中某版本某文件的不同
git diff HEAD-- 文件名
?
- 將上面的代碼添加提交
git adddf_user/models.py
git commit -m '修改模型類的str方法為name屬性'
?
回退
- 回退歷史版本到暫存區
- 將df_user/models.py文件的更改完成添加、提交
git adddf_user/models.py
git commit -m '修改模型類'
- 查看當前的暫存區狀態:git status
- 重置版本:git reset 版本號
- 再次查看當前的暫存區狀態:git status
- 可以再將暫存區的內容恢復到工作區
git checkout --df_user/models.py
?
3.9刪除
- 在ide中將文件刪除
- 從工作區到暫存區提交:git rm 文件名
- 從暫存區到倉庫區提交:git commit -m '說明信息'
1.創建df_user/a.py的變更添加到暫存區,再提交到倉庫區
git adddf_user/a.py
git commit -m '創建文件a'
- 2.在ide中將df_user/a.py文件刪除,然后在暫存區刪除
git rmdf_user/a.py
- 3.提交暫存區的記錄到倉庫區
git commit -m'刪除文件a'
?
3.10Debug分支
- 在項目的正常開發過程中,之前發布過的版本可能很會出bug,這時就需要停下來現在的開發任務,先去修改bug,完成后再回來繼續開發任務
- git中stash提供了保存現場的功能,可以把當前工作區、暫存區中的內容不需要提交而保存下來,轉而去做bug修復,完成后再恢復現場,繼續開發工作
- 將語言和時區改為
LANGUAGE_CODE ='zh-Hans'
TIME_ZONE = 'Shanghai/Asia'
?
- 1.查看當前狀態:git status
- 2.保存現場:git stash
- 再查看當前狀態,發現是干凈的:git status
- 3.切換到master分支:git checkout master
- 4.新建臨時分支用于修復bug,用完后會刪除此分支
git checkout -bbug001
5.修改dailyfresh/settings.py文件的語言和時區
- 添加:將工作區中的更改添加到暫存區
git adddailyfresh/settings.py
- 提交:將暫存區的內容提交到倉庫區
git commit -m'修復時區語言'
- 6.切換回master分支:git checkout master
- 7.將bug001分支合并到master分支
- 因為臨時分支用完后會被刪除,無法通過分支查詢歷史記錄,所以使用臨時分支時需要使用no-ff的方式,同時寫上-m備注信息
git merge--no-ff -m "修復bug-語言時區" bug001
- 推送到服務器:git push
- 8.刪除臨時分支bug001:git branch -d bug001
- 9.切換回工作分支zhjia:git checkout zhjia
- 查看現場列表:git stash list
- 恢復現場:git stash pop
- 恢復現場后查看工作狀態:git status
?
?
4.0經理-發布
- 項目開發完一個版本后,需要進行項目的合并與發布
- 項目合并與發布,需要項目經理和組員一起來完成,每個人將開發的分支逐個合并到dev分支,如果有沖突則解決沖突,在dev上的代碼經過測試沒有問題后,則由經理合并到master分支,完成發布
- 實現發布主要遵守如下步驟:
- 每個人逐個合并分支到dev
- 經理合并dev到master并發布
- 每個人獲取最新的dev分支、master分支
?
4.1逐個合并
- 1.切換到dev分支:git checkout dev
- 2.獲取最新記錄代碼:git pull
- 3.合并,將自己編寫的代碼加入進來,如果有沖突則與上一個組員商量解決沖突
- 如果沒有沖突則可以跳過4、5步
git merge 分支
- 4.添加
- 注意:在項目的根級目錄下,即README.md所在的目錄下
git add ./
- 5.提交:git commit -m 'zhjia發布v1.0'
- 6.推送:git push origin dev
?
4.2經理合并
- 所有成員都完成合并后,接下來是項目經理要執行的操作
- 1.切換到dev分支:git checkout dev
- 2.獲取最新:git pull
- 3.切換到master分支:git checkout master
- 4.合并dev分支到master分支
- 如果有沖突,則找相應的組同解決沖突
- 如果沒有沖突則可以跳過5、6步
git merge dev
- 5.添加
- 注意:在項目的根級目錄下,即README.md所在的目錄下
git add ./
- 6.提交:git commit -m '發布v1.0'
- 7.打標簽
- 標簽就是為了給一堆數字的版本號,起一個容易記住的名字,一般用于master分支:git tag v1.0
- 8.推送:git push
?
4.3逐個獲取
- 現在最新的代碼已經有了,接下來在這個版本代碼基礎上繼續開發,每個人都要獲取最新的代碼
- 1.切換到master分支:git checkout master
- 2.獲取:git pull
- 3.切換到dev分支:git checkout dev
- 4.將master分支合并到dev分支:git merge master
- 5.切換到自己工作的分支如zhjia分支:git checkout zhjia
- 6.將dev分支合并到工作分支如zhjia分支:git merge dev
總結
以上是生活随笔為你收集整理的Django工具:Git简介与基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 以太坊 智能合约_web3j教
- 下一篇: php中写salt,请快速检查这个PHP