git 基本操作
1.安裝與配置
下載安裝
- git下載地址 根據(jù)自己的平臺下載,如果是windows,下載的安裝包一直下一步就可以了
配置基本
- 一把我們會選擇用戶級別的配置
--global
# 當前項目配置文件 ./.git/config
git config --local user.name "your name"
git config --local user.email "email"
# ~/.gitconfig
git config --global user.name "your name"
git config --global user.email "email"
# 系統(tǒng)配置文件 /etc/.gitconfig
git config --system user.name "your name"
git config --system user.email "email"
2.初始化git倉庫
-
本地初始化倉庫
創(chuàng)建一個項目(空的文件夾)或者已有的項目,在終端中(CMD、等)打開這個項目
-
執(zhí)行初始化git倉庫命令
git init
-
克隆遠程已有的項目
在終端中打開你要存放這個項目的目錄
-
執(zhí)行克隆命令
# url 是遠程倉庫的地址 git clone [url]
3.開發(fā)操作(工作區(qū)、暫存區(qū)、版本庫)
工作區(qū)
工作區(qū)就是被git管理的目錄下有新增文件、已經(jīng)跟蹤的文件內(nèi)容有變化的區(qū)域
git會自動監(jiān)測被改動的文件
-
撤銷修改
# 撤銷改動的語法 git checkout -- 文件名 -
隱藏修改內(nèi)容
# 臨時保存 git stash save -a 注釋 # 查看臨時保存的記錄 git stash list # 恢復(fù),num是可選項,通過git stash list可查看具體值。只能恢復(fù)一次,恢復(fù)完之后就會把這次的記錄刪除 git stash pop stash@{num} # 恢復(fù),num是可選項,通過git stash list可查看具體值??苫貜?fù)多次 git stash apply stash@{num} # 刪除 保存的記錄 git stash drop stash@{num} # 刪除所有的記錄 git stash clear
暫存區(qū)
被git跟蹤并且添加到緩存里面的文件
-
將工作區(qū)的內(nèi)容添加到暫存區(qū)
# 語法 git add 文件名 # 示例 使用 . 表示當前目錄下面的所有文件(包括子目錄里面的所有文件) git add . # 添加指定的文件 xxx.txt yyy.txt README.md git add xxx.txt yyy.txt README.md
版本庫
-
緩存區(qū)東內(nèi)容被提交
# 將暫存區(qū)的內(nèi)容提交到版本庫 git commit -m "這次提交的注釋" -
查看提交記錄
# 簡介顯示最近提交 git reflog # 詳細顯示所有提交記錄 git log -
版本庫回退
# 選擇以前提交的版本庫 # 版本號可以在提交記錄中查詢 git reset --hard 版本號 -
合并(修改)提交記錄
git rebase -i 版本號
分支
-
新建分支
git branch 分支名字 -
查看已有的分支
git branch -
切換分支
git checkout 分支名字 # 創(chuàng)建并切換分支 git checkout -b 分支名字 -
刪除分支
git branch -d 分支名字 # 強制刪除 git branch -D 分支名字 -
合并分支
git meger 被合并的分支名字 -
合并分支可能產(chǎn)生沖突
- 產(chǎn)生沖突會有warning:提示內(nèi)容很詳細
- 產(chǎn)生的沖突需要我們自己解決,可以通過
git status查看那么文件有沖突 - 找到有沖突的文件手動解決沖突并提交
git commit -am "解決沖突"
遠程倉庫
-
一般我們會用 SSH地址,這樣可以省去使用的時候頻繁輸入賬號密碼
配置git-ssh
遠程分支:托管在github、gitlab、coding、碼云等這樣的第三方服務(wù)層庫上的倉庫
-
與遠程倉庫建立連接
git remote add 遠程倉庫別名 遠程倉庫地址 # git clone 的方式不用配置 -
向遠程倉庫提交記錄
git push 遠程倉庫別名 分支名 -
從遠程倉庫拉去最新的提交記錄
# 一步拉去 git pull 遠程倉庫別名 分支名 # 兩部拉去 git fetch 遠程倉庫別名 分支名 #有沖突解決沖突 git git merge 遠程倉庫別名/分支名 # 或者 下面會用到rebase的講解 git rebase 遠程倉庫名字/分支名 -
遠程倉庫操作
-
查看已有的遠程倉庫
# 遠程倉庫別名列表 git remote # 帶有url的 git remote -v -
刪除遠程倉庫
git remote rm [別名] 修改
-
rebase(變基)
-
場景一:多個記錄整合成一個記錄
git rebase -i 某一次的幾條記錄 # 從某一次的提交記錄信息 合并到當前提交記錄 git rebse -i HEAD~3 # 最近的三次提交記錄合并 # 出現(xiàn) vi 編輯區(qū)域 根據(jù)下面提示選擇 一般我們會將pick 修改為 s # 保存退出 再次出現(xiàn) vi 的編輯區(qū) 列出要合并的提交記錄 例如修改為 v1 & v2 & v3 # 保存 git log # 查看提交記錄- 注意 盡量不要合并已經(jīng)提交到遠程倉庫的(提交記錄)
-
場景二:
-
master c1 - c2 - c4 -c5
dev C3
Master c1 - c2 - c3 -c4 -c5
將c3在其他分支上的提交記錄 合并到master 分支上
git checkout dev git rebase master # 變更當前dev分支的基 git checkout master git merge dev -
場景三:遠程拉取代碼 會有合并沖突 產(chǎn)生分叉
# 可能產(chǎn)生記錄分叉 git pull origin dev # 不產(chǎn)生記錄分叉 git fetch origin dev git meger origin/dev git rebase origin/dev-
注意事項
- git rebase 產(chǎn)生沖突怎么辦?
- 會提示
- 解決沖突
- git add .
- Git rebase --continue
標簽tag
-
開發(fā)完成到一定階段的打包
# 提交記錄的版本號 默認是當前最新的提交記錄 也可以指定某次提交記錄的版本號標識 git tag -a v1.4 -m "描述信息" [提交記錄的版本號] -
將tag上更新到遠程倉庫
# 推送單個tag到遠程倉庫 git push 遠程倉庫地址別名(origin) v1.4 # 推送所有的 git push 遠程倉庫地址別名(origin) --tags -
查看已有的標簽
git tag -
查看某個標簽的詳細內(nèi)容
git show v1.4 -
刪除 某個tag
git tag -d v1.4
忽略文件
在git倉庫的根目錄下添加
.gitignore文件-
文件內(nèi)容寫不想向遠程倉庫提交的內(nèi)容
- ide編輯器的緩存目錄
- 個人配置文件
- 編譯解釋器的緩存文件
- 打包的可執(zhí)行文件
-
實例
a.py !a.py dir/ *.py *.h[a|c|d] #提供各種各樣的 .gitignore github上查看
rm 操作刪除文件、git緩存
-
刪除緩存
git rm --cached [文件名] -
刪除文件及緩存
git rm [文件名] # 強制刪除 git rm -f [文件名]
4.開發(fā)工作流
mkdir mpro
cd mpro
# 初始化倉庫
git init
touch app.py
git add .
git commit -m "開啟服務(wù)"
# 遠程推送
git remote add origin 遠程地址
git push origin master
git tag -a v1 -m "v1版本"
git push origin --tags
cd ~
mkdir p1mp
git clone 遠程倉庫
git checkout dev
git checkout -b "p1dev"
touch fun1.py
git add .
git commit -m "fun1.1"
git push origin p1dev
# 提交 review
# leader 在 dev 分支 切換出 release 分支 進行測試
# 同步本地 master
# 打標簽
git tag -a v2 -m "v2版本"
git push origin --tags
git checkout -b ""
工作流示意圖
- 參考工作流示意圖