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