日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Django工具:Git简介与基本操作

發(fā)布時(shí)間:2024/7/5 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django工具:Git简介与基本操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.Git簡(jiǎn)介:

1.Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)

網(wǎng)址:http://github.com

2.總結(jié)git的兩大特點(diǎn):

  • 版本控制:可以解決多人同時(shí)開發(fā)的代碼問題,也可以解決找回歷史代碼的問題
  • 分布式:Git是分布式版本控制系統(tǒng),同一個(gè)Git倉(cāng)庫(kù),可以分布到不同的機(jī)器上。

?

2.經(jīng)理創(chuàng)建

2.1安裝配置:

?

  • 安裝

sudo apt-getinstall git

  • 安裝成功后,運(yùn)行如下命令

git

?

配置

  • 在ubuntu的命令vi .gitconfig行中,修改某臺(tái)機(jī)器的git配置
  • 修改為注冊(cè)github時(shí)的郵箱,填寫用戶名,要求組員的用戶名不能重復(fù)

?

  • git四部分的交互方式如下圖


?

?

2.2創(chuàng)建倉(cāng)庫(kù)

  • 注冊(cè)github賬戶,登錄后,點(diǎn)擊"start a project"
  • 在新頁(yè)面中,輸入項(xiàng)目的名稱,勾選'readme.md',點(diǎn)擊'create repository'
  • 添加成功后,轉(zhuǎn)到文件列表頁(yè)面,點(diǎn)擊'create new file'創(chuàng)建新文件
  • 填寫文件名稱為'.gitignore',代碼如下,表示項(xiàng)目中的pyc文件不需要被管理,因?yàn)檫@些文件代碼是根據(jù)py生成的
  • *.pyc
    .idea/
    migrations/
  • 點(diǎn)擊'preview'查看預(yù)覽,點(diǎn)擊'create new file'完成創(chuàng)建

?

2.3添加ssh賬戶

  • 如果某臺(tái)機(jī)器需要與github上的倉(cāng)庫(kù)交互,那么就要把這臺(tái)機(jī)器的ssh公鑰添加到這個(gè)github賬戶上
  • 點(diǎn)擊賬戶頭像后的下拉三角,選擇'settings'
  • 點(diǎn)擊'SSH and GPG keys',添加ssh公鑰

?

生成git密鑰

  • 刪除~/.ssh目錄,這里存儲(chǔ)了舊的密鑰

rm -r .ssh

?

運(yùn)行如下命令生成密鑰

ssh-keygen -trsa -C "Github賬號(hào),可以是用戶名,也可以是郵箱地址"

?

  • 查看公鑰內(nèi)容,復(fù)制此內(nèi)容

cat id_rsa.pub

?

  • 回到瀏覽器中,填寫標(biāo)題,粘貼公鑰

?

2.4克隆項(xiàng)目

  • 在瀏覽器中點(diǎn)擊進(jìn)入github首頁(yè),再進(jìn)入項(xiàng)目倉(cāng)庫(kù)的頁(yè)面
  • 復(fù)制git地址
  • 在命令行中復(fù)制倉(cāng)庫(kù)中的內(nèi)容

git clone git地址

?

錯(cuò)誤處理

  • 提示錯(cuò)誤信息如下:

sign_and_send_pubkey: signingfailed: agent refused operation

  • 錯(cuò)誤原因:在ssh賬戶中沒有加入新生成的密鑰
  • 解決:將密碼加入ssh賬戶
  • 逐條運(yùn)行如下命令

eval "$(ssh-agent-s)"
ssh-add

?

2.5創(chuàng)建項(xiàng)目分支

  • 每個(gè)員工開發(fā)期的代碼互不干擾,并行開發(fā),則每人使用一條分支
  • 項(xiàng)目開發(fā)中公用分支包括master、dev
  • 分支master用于發(fā)布,默認(rèn)分支,當(dāng)需要發(fā)布時(shí)將dev分支合并
  • 分支dev開發(fā)階段性的代碼合并,每個(gè)階段的工作完成后需要進(jìn)行一次,控制項(xiàng)目的進(jìn)度
  • 成員分支用于每個(gè)項(xiàng)目成員的代碼開發(fā),實(shí)現(xiàn)不交叉

?

  • 創(chuàng)建分支:git branch 分支名稱
  • 切換分支:git checkout 分支名稱
  • 將分支推送到服務(wù)器:git push origin 分支名稱
  • 將本地分支跟蹤服務(wù)器分支

git branch--set-upstream-to=origin/分支名稱 分支名稱

?

  • 創(chuàng)建并切換分支:git checkout -b 分支名稱
  • 查看所有分支,當(dāng)前分支前標(biāo)記為星*:git branch
  • 刪除分支:git branch -d 分支名稱
    沒有例子,沒錯(cuò),就是沒有例子,如果你刪除了,我也找不回來(lái)喲

?

2.6搭建項(xiàng)目框架

  • 當(dāng)前項(xiàng)目分支一共有3個(gè),分別為master、dev、itcast,當(dāng)前在itcast分支上工作
  • 在克隆的目錄下創(chuàng)建項(xiàng)目,使用django框架
  • 將文件代碼添加到暫存區(qū):git add dailyfresh/
    將暫存區(qū)提交到倉(cāng)儲(chǔ)區(qū):git commit -m '搭建框架'

?

?

2.7上傳分支

  • 當(dāng)從遠(yuǎn)程倉(cāng)庫(kù)克隆時(shí),實(shí)際上Git自動(dòng)把本地的master分支和遠(yuǎn)程的master分支對(duì)應(yīng)起來(lái)
  • 遠(yuǎn)程倉(cāng)庫(kù)的默認(rèn)名稱是origin
  • 推送分支,就是把該分支上的所有本地提交推送到遠(yuǎn)程庫(kù),推送時(shí)要指定本地分支,這樣,Git就會(huì)把該分支推送到遠(yuǎn)程庫(kù)對(duì)應(yīng)的遠(yuǎn)程分支上

git pushorigin 分支名稱

?

  • 當(dāng)前文件在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目錄,這里存儲(chǔ)了舊的密鑰

rm -r .ssh

?

運(yùn)行如下命令生成密鑰

ssh-keygen -trsa -C "Github賬號(hào),可以是用戶名,也可以是郵箱地址"

?

  • 查看公鑰內(nèi)容,復(fù)制此內(nèi)容

cat id_rsa.pub

?

  • 回到瀏覽器中,填寫標(biāo)題,粘貼公鑰

?

3.2本地克隆

  • 根據(jù)項(xiàng)目經(jīng)理提供的地址,如“git@github.com:bossliu2016/django1.git”,從github上將項(xiàng)目克隆到本地,默認(rèn)對(duì)應(yīng)的是master分支

git clone 項(xiàng)目地址

?

3.3同步分支

  • 以自己的姓名創(chuàng)建分支,如果此分支已經(jīng)存在可以添加數(shù)字后綴,具體要與項(xiàng)目經(jīng)理商量

git checkout -bzhjia

  • 將本地分支推送到服務(wù)器

git push originzhjia

  • 將本地分支跟蹤服務(wù)器分支

git branch--set-upstream-to=origin/分支名稱 分支名稱

?

  • 將github上的dev分支同步到本地,因?yàn)殚_發(fā)過程中,所有組員都向這個(gè)分支上提交階段性代碼,并從這個(gè)分支獲取最新代碼

git checkout -bdev origin/dev

?

3.4開發(fā)管理

  • 上面的操作,只有我們?cè)诩尤腠?xiàng)目的第一天需要進(jìn)行,只操作一次就夠了
  • 接下來(lái)的操作,是我們每天開發(fā)中都要進(jìn)行的操作,這是必須做到熟練操作的命令
  • 當(dāng)前用戶以zhjia分支進(jìn)行開發(fā)

git checkout zhjia

?

  • 本地倉(cāng)庫(kù)分為三部分:工作區(qū),暫存區(qū),倉(cāng)庫(kù)區(qū),其中暫存區(qū)、倉(cāng)庫(kù)區(qū)是版本庫(kù)部分

?

?

3.5工作區(qū)與暫存區(qū)

?

添加

git add 文件1 文件2 ...
git add 目錄

?

撤銷? git checkout-- 文件名

?

3.6暫存區(qū)與倉(cāng)庫(kù)區(qū)

  • 倉(cāng)庫(kù)區(qū)表示個(gè)人開發(fā)的一個(gè)小階段的完成,倉(cāng)庫(kù)區(qū)中記錄的各版本是可以查看并回退的,但是在暫存區(qū)的版本一旦提交就再也沒有了
  • 查看暫存區(qū)未提交的記錄:git status
  • 將暫存區(qū)的記錄提交到倉(cāng)庫(kù)區(qū)

git commit -m'本次提交的說(shuō)明信息'

?

3.7本地與服務(wù)器

?

獲取

  • 建議:在每天開始編寫代碼前,先與服務(wù)器同步一次;或者在公用分支如dev上開發(fā)時(shí),建議先同步后開發(fā)
  • 1.切換到dev分支:git checkout dev
  • 2.獲取代碼,如果dev分支上有更新的記錄則會(huì)同步到本地:git pull
  • 3.切換回自己的分支繼續(xù)開發(fā):git checkout zhujiao

推送

  • 建議:在每天下班前將當(dāng)天開發(fā)推送到服務(wù)器,這樣可以在服務(wù)器中存儲(chǔ)一個(gè)備份,即使本機(jī)出問題,在服務(wù)器上還能存在代碼備份
  • git push origin zhjia

?

合并分支

  • 一個(gè)功能模塊開發(fā)完了,合并到dev分支
  • 1.切換到dev分支:git checkout dev
  • 2.獲取代碼,如果dev分支上有更新的記錄則會(huì)同步到本地: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時(shí)需要操作dev分支,因?yàn)榇蠹叶伎梢圆僮鱠ev分支,所以在合并時(shí)可能出現(xiàn)沖突
  • 沖突的示例如下,修改dailyfresh/urls.py文件

?

項(xiàng)目經(jīng)理的操作

  • 1.項(xiàng)目經(jīng)理負(fù)責(zé)前臺(tái)的開發(fā),需要修改dailyfresh/urls.py文件

git checkout dev

?

  • 2.在dailyfresh/urls.py文件中添加一條url
  • 3.添加并提交

git adddailyfresh/urls.py
git commit -m '配置前臺(tái)url'

?

  • 4.同步到服務(wù)器

git push origindev

?

員工的操作

  • 1.員工負(fù)責(zé)用戶模塊的開發(fā),需要修改dailyfresh/urls.py文件

git checkout dev

  • 2.在dailyfresh/urls.py文件中添加一條url
  • 3.添加并提交

git adddailyfresh/urls.py
git commit -m '配置用戶模塊url'

  • 4.向服務(wù)器推送:git push origin dev
  • 5.推送時(shí)發(fā)現(xiàn)出錯(cuò)誤了,根據(jù)提示,需要先獲取服務(wù)器的變更

git pull

  • 發(fā)現(xiàn)有沖突,而且自動(dòng)合并沖突失敗,需要手動(dòng)合并沖突,指向dailyfresh/urls.py文件
  • 6.沖突解決完成,再次添加、提交、推送

git add dailyfresh/urls.py
git commit -m '配置用戶模塊url-解決沖突后'
git push origin dev

?

3.8歷史

  • 查看倉(cāng)庫(kù)區(qū)的歷史操作

git reflog

?

  • 對(duì)比工作區(qū)和倉(cāng)庫(kù)區(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 '修改模型類'

  • 查看當(dāng)前的暫存區(qū)狀態(tài):git status
  • 重置版本:git reset 版本號(hào)
  • 再次查看當(dāng)前的暫存區(qū)狀態(tài):git status
  • 可以再將暫存區(qū)的內(nèi)容恢復(fù)到工作區(qū)

git checkout --df_user/models.py

?

3.9刪除

  • 在ide中將文件刪除
  • 從工作區(qū)到暫存區(qū)提交:git rm 文件名
  • 從暫存區(qū)到倉(cāng)庫(kù)區(qū)提交:git commit -m '說(shuō)明信息'

1.創(chuàng)建df_user/a.py的變更添加到暫存區(qū),再提交到倉(cāng)庫(kù)區(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ū)的記錄到倉(cāng)庫(kù)區(qū)

git commit -m'刪除文件a'

?

3.10Debug分支

  • 在項(xiàng)目的正常開發(fā)過程中,之前發(fā)布過的版本可能很會(huì)出bug,這時(shí)就需要停下來(lái)現(xiàn)在的開發(fā)任務(wù),先去修改bug,完成后再回來(lái)繼續(xù)開發(fā)任務(wù)
  • git中stash提供了保存現(xiàn)場(chǎng)的功能,可以把當(dāng)前工作區(qū)、暫存區(qū)中的內(nèi)容不需要提交而保存下來(lái),轉(zhuǎn)而去做bug修復(fù),完成后再恢復(fù)現(xiàn)場(chǎng),繼續(xù)開發(fā)工作
  • 將語(yǔ)言和時(shí)區(qū)改為

LANGUAGE_CODE ='zh-Hans'
TIME_ZONE = 'Shanghai/Asia'

?

  • 1.查看當(dāng)前狀態(tài):git status
  • 2.保存現(xiàn)場(chǎng):git stash
  • 再查看當(dāng)前狀態(tài),發(fā)現(xiàn)是干凈的:git status
  • 3.切換到master分支:git checkout master
  • 4.新建臨時(shí)分支用于修復(fù)bug,用完后會(huì)刪除此分支

git checkout -bbug001

5.修改dailyfresh/settings.py文件的語(yǔ)言和時(shí)區(qū)

  • 添加:將工作區(qū)中的更改添加到暫存區(qū)

git adddailyfresh/settings.py

  • 提交:將暫存區(qū)的內(nèi)容提交到倉(cāng)庫(kù)區(qū)

git commit -m'修復(fù)時(shí)區(qū)語(yǔ)言'

  • 6.切換回master分支:git checkout master
  • 7.將bug001分支合并到master分支
  • 因?yàn)榕R時(shí)分支用完后會(huì)被刪除,無(wú)法通過分支查詢歷史記錄,所以使用臨時(shí)分支時(shí)需要使用no-ff的方式,同時(shí)寫上-m備注信息

git merge--no-ff -m "修復(fù)bug-語(yǔ)言時(shí)區(qū)" bug001

  • 推送到服務(wù)器:git push
  • 8.刪除臨時(shí)分支bug001:git branch -d bug001
  • 9.切換回工作分支zhjia:git checkout zhjia
  • 查看現(xiàn)場(chǎng)列表:git stash list
  • 恢復(fù)現(xiàn)場(chǎng):git stash pop
  • 恢復(fù)現(xiàn)場(chǎng)后查看工作狀態(tài):git status

?

?

4.0經(jīng)理-發(fā)布

  • 項(xiàng)目開發(fā)完一個(gè)版本后,需要進(jìn)行項(xiàng)目的合并與發(fā)布
  • 項(xiàng)目合并與發(fā)布,需要項(xiàng)目經(jīng)理和組員一起來(lái)完成,每個(gè)人將開發(fā)的分支逐個(gè)合并到dev分支,如果有沖突則解決沖突,在dev上的代碼經(jīng)過測(cè)試沒有問題后,則由經(jīng)理合并到master分支,完成發(fā)布
  • 實(shí)現(xiàn)發(fā)布主要遵守如下步驟:
  • 每個(gè)人逐個(gè)合并分支到dev
  • 經(jīng)理合并dev到master并發(fā)布
  • 每個(gè)人獲取最新的dev分支、master分支

?

4.1逐個(gè)合并

  • 1.切換到dev分支:git checkout dev
  • 2.獲取最新記錄代碼:git pull
  • 3.合并,將自己編寫的代碼加入進(jìn)來(lái),如果有沖突則與上一個(gè)組員商量解決沖突
  • 如果沒有沖突則可以跳過4、5步

git merge 分支

  • 4.添加
  • 注意:在項(xiàng)目的根級(jí)目錄下,即README.md所在的目錄下

git add ./

  • 5.提交:git commit -m 'zhjia發(fā)布v1.0'
  • 6.推送:git push origin dev

?

4.2經(jīng)理合并

  • 所有成員都完成合并后,接下來(lái)是項(xiàng)目經(jīng)理要執(zhí)行的操作
  • 1.切換到dev分支:git checkout dev
  • 2.獲取最新git pull
  • 3.切換到master分支:git checkout master
  • 4.合并dev分支到master分支
  • 如果有沖突,則找相應(yīng)的組同解決沖突
  • 如果沒有沖突則可以跳過5、6步

git merge dev

  • 5.添加
  • 注意:在項(xiàng)目的根級(jí)目錄下,即README.md所在的目錄下

git add ./

  • 6.提交:git commit -m '發(fā)布v1.0'
  • 7.打標(biāo)簽
  • 標(biāo)簽就是為了給一堆數(shù)字的版本號(hào),起一個(gè)容易記住的名字,一般用于master分支:git tag v1.0
  • 8.推送:git push

?

4.3逐個(gè)獲取

  • 現(xiàn)在最新的代碼已經(jīng)有了,接下來(lái)在這個(gè)版本代碼基礎(chǔ)上繼續(xù)開發(fā),每個(gè)人都要獲取最新的代碼
  • 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

總結(jié)

以上是生活随笔為你收集整理的Django工具:Git简介与基本操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。