目錄:
一. Git常用命令
1、git常用命令
echo "#Description" > README.md, 添加一個文件
git status, 查看當前狀態,發現有未跟蹤文件
git add ., 當前目錄所有文件添加到暫存區
git diff, 比較當前工作區和暫存區有何不同
git status, 查看當前狀態,發現有文件未提交
git commit -m "註釋", 把暫存區內容提交到本地倉庫
git push -u origin master, 把本地倉庫的提交推送到遠程倉庫
git log -2, 查看提交日誌
2、git分支管理常用命令
git branch 顯示所有分支
git branch b1 從當前分支創建一個叫b1的分支
git checkout b1 切換到b1分支
git checkout -b b1 相當於以上兩條命令的組合
git checkout master 切換到master主分支
git merge b1 把b1分支的代碼合併到master上
git branch -d b1 刪除b1分支,不能在被刪除分支上執行
3、命名規則
每次提交必須寫明註釋,如果是修復Bug,請加上Bug號
創建特性分支,名稱要以f-開頭,加上特性名
創建發佈分支,名稱要以r-開頭,加上預發佈版本號
創建Bug修復分支,名稱要以b-開頭,加上Bug號
創建標籤,名稱要以t-開頭,加上發佈版本號
9合併分支時必須使用--no-ff參數,以保留合併歷史軌跡
二. git分支說明
- master 主分支,穩定代碼,爲生產環境做準備的
- develop 開發分支,爲開發服務
3. git的三個工作區域
- 1)工作區: 就是你在電腦上看到的目錄,比如目錄下testgit裏的文件(.git隱藏目錄版本庫除外)。
- 2)暫存區 : 暫存區就是文件夾 .git中的一個小部分(.git文件夾就是版本庫)
- 3)版本庫 工作區有一個隱藏目錄.git,這個不屬於工作區,這是版本庫, 版本庫中還有Git爲我們
三. 真實環境開發流程
3.1自己創建django項目推送到倉庫
django-admin startproject demo2
cd demo2 # 切換到項目路徑
git init # 初始化這個本地git倉庫
# git remote rm origin # 如有路徑不一致可以先刪除現有的路徑
git remote add origin http://192.168.56.12/devopsedu/demo2.git #設置代碼提交url路徑
touch Readme # 新建一個項目文件(工作區)
git add . # 把工作區中所有變更全部提交到(暫存區)
git commit -m 'init' # 把暫存區代碼提交到本地git倉庫,只有提交到代碼庫才能被git管理(本地git倉庫)
git push origin master # 將本地倉庫的代碼推送到線上倉庫(線上git倉庫)
# 代碼回滾
git log #查看所有提交到倉庫的版本記錄: git log -2
git reflog #查看所有操作記錄(狀態的md5值和改變的值)
git reset --hard d9e0ed0 #回到指定版本(d9e0ed0是創建版本的MD5值得前6位或者7位)
git reset --hard HEAD^ #回到上一個版本
注:這樣可以回到第一次提交到倉庫的狀態,但再使用git log看不到其他幾次的md5值了
3.2 在本地創建一個dev分支,開發完成後合併到master分支
'''1. 從master分支切換到dev分支進行開發並推送到dev分支的過程'''
git checkout -b dev master # 從master分支創建dev開發分支
git branch # 可以看到現在已經切換到dev分支了
vim Readme # 模擬在項目中修改代碼
git add . # 把工作區中所有變更全部提交到(暫存區)
git commit -m 'in dev' # 把暫存區代碼提交到本地git倉庫(本地git倉庫)
git push origin dev # 把代碼先推倒dev分支,讓測試人員測試
'''2. 當測試人員測試完成後將dev分支代碼合併到master形成文檔版本'''
git checkout master # 開發完成後,需要合併回master分支,先切換到master分支
cat Readme # 可以看到master分支的內容沒有修改
git merge --no-ff dev # 將剛剛dev中修改的代碼合併到master
git push origin master # 將本地倉庫的代碼推送到線上倉庫(線上git倉庫)
四 特性分支:feature (開發分支合併到dev分支)
從develop分支創建,用於特性開發,完成後要合併回develop分支。
操作過程:
git checkout -b feature-01 dev 從dev分支創建 feature-01 特性分支
git checkout dev 開發完成後,需要合併回dev分支,先切換到dev分支
git merge --no-ff feature-01 合併回develop分支,必須加--no-ff參數
git status 查看當前有哪些文件有衝突
git diff readme.txt 查看衝突文件詳情
git add readme.txt 將解決衝突後的文件添加到暫存區
git commit -m "conflict fixed" 所有衝突解決後提交到版本庫
git log --graph 查看分支合併圖
git branch -d feature-01 刪除特性分支
git push origin dev 把合併後的develop分支推送到遠程倉庫
衝突標記:
# 比如在dev分支上,將特性分支 feature-01 合併到dev分支中
git merge --no-ff feature-01 # 執行此命令
<<<<<<< HEAD
Creating a new branch is quick & simple. # dev分支中的代碼
=======
Creating a new branch is quick AND simple. # feature-01 中的衝突代碼
>>>>>>> feature1
2、遠程分支版本回退的方法
- git reflog
- git reset --hard Obfafd
- git push -f origin dev
五. 發佈分支:develop
從develop分支創建,用於預發佈版本,允許小bug修復,完成後要合併回develop和master。
操作過程:
git checkou -b release-1.2 dev 創建一個發佈分支
git checkout master 切換到master分支,準備合併
git merge --no-ff release-1.2 把release-1.2分支合併到master分支
git tag 1.2 從master分支打一個標籤
git checkou dev 切換到develop分支,準備合併
git merge --no-ff release-1.2 把release-1.2分支合併到dev分支
git branch -d release-1.2 刪除這個發佈分支
六. 修復分支:bug
從master分支創建,用於生產環境上的Bug修復,完成後要合併回develop和master。
操作過程:
git checkout -b hotfix-1.2.1 master 從master分支創建一個Bug修復分支
git checkout master 切換到master分支,準備合併
git merge --no-ff hotfix-1.2.1 合併到master分支
git tag 1.2.1 爲master分支創建一個標籤
git checkout develop 切換到develop分支,準備合併
git merge --no-ff hotfix-1.2.1 合併到develop分支
git branch -d hotfix-1.2.1 刪除hotfix-1.2.1分支