Git 使用進階

前言

隨着 git 的使用廣泛化,如今更須要關注使用的規範流程,在此紀錄。html

目錄

  • 漂亮的徽章
  • 更好的 pull
  • 配置代理及取消代理
  • rebase 命令修改 commit 提交歷史
  • Git-merge 時忽略文件

漂亮的徽章

持續集成

Build Status codecov

npm

NPM version NPM monthly downloads NPM total downloads gzip size

自定義

能夠自定義修改 左側 label 文字,右側顏色

GitHub GitHub issues

其餘

Badge GitHub issues GitHub last commit GitHub

更好的 pull

原由ios

Snipaste_2020-01-04_19-13-11.png

git pull origin xxx --rebase

# 直接按 rebase 的方式執行 pull
git config --global pull.rebase true

使用 rebase 就感受全部人都在同一條直線上開發同樣,很乾淨的 log,看着很舒服,而直接使用 pull 的 log 看起來就很亂。git

git pull --rebasegithub

* | b9feea8 - chore: 添加C前往A埋點 (6 hours ago) <yanyue404>
* | b3047fe - fix: ISO8601 time (6 hours ago) <yanyue404>
* | bfb6c84 - test: formatTimeStr 兼容 ios (7 hours ago) <yanyue404>
* | 0e13196 - chore: IOS 時間處理 (22 hours ago) <yanyue404>
* | f15a0e8 - chore: 遊客在名片頁面進行受權 (24 hours ago) <yanyue404>
* | ee8b125 - chore: 完善我的名片 (25 hours ago) <yanyue404>
* | deb7a5a - chore: 我的名片添加用戶角色校驗 (26 hours ago) <yanyue404>
* | 5106b02 - chore: 開始識別用戶角色 (27 hours ago) <yanyue404>
* | f16b6af - chore: 更換 appid (31 hours ago) <yanyue404>
* | 7216da4 - chore: 同步 code (31 hours ago) <yanyue404>
* | 9e542b4 - chore: uat 更新 (6 days ago) <yanyue404>
* | 473e311 - fix: 修改環境 (6 days ago) <yanyue404>
* | f54ae0f - chore: 埋點 (5 hours ago) <yanyue404>

git pullnpm

* | ae57454 - feat: token 過時強制從新認證 (2 days ago) <yanyue404>
* |   1b02194 - Merge remote-tracking branch 'origin/prod' into prod (2 days ago) <Joe>
|\ \
| * | 6284b85 - fix: 登陸流程短視頻播放 (2 days ago) <yanyue404>
| * | 2bcb162 - styles: canvas 分享圖位置優化 (2 days ago) <yanyue404>
| * | d4c66a6 - chore: 頁面分享控制 (2 days ago) <yanyue404>
| * | 91baa28 - chore: 我的名片非分享人文字修改 (2 days ago) <yanyue404>
* | | 60715e9 - 修改保單判斷 (2 days ago) <Joe>
|/ /
* |   85f1032 - Merge remote-tracking branch 'origin/prod' into prod (2 days ago) <Joe>
|\ \
| * | ab884df - feat: 我的名片分享頁受權 (4 days ago) <yanyue404>
* | | e603434 - 優化加載速度 (2 days ago) <Joe>
|/ /
* | a255e59 - 微調樣式  評論換行 (4 days ago) <Joe>
* |   7251630 - Merge remote-tracking branch 'origin/prod' into prod (4 days ago) <Joe>
|\ \
| * | 1bd08fc - chore: loading 優化 (4 days ago) <yanyue404>
* | | 7bc0e9e - 修改視頻列表問題 (4 days ago) <Joe>
|/ /
* | 9e328af - 1.取消個人視頻    我的名片換上來 (4 days ago) <Joe>

配置代理及取消代理

Error: Filed to connecto to github.com port 443: Time out
# 設置
git config --global http.proxy http://127.0.0.1:51349

# 取消
git config --global --unset http.proxy

rebase 命令修改 commit 提交歷史

合併最近提交的歷史,將 ba4358da549037 變爲一個 commitjson

# 輸入
git log --online

# 輸出
ba4358d (HEAD -> master, origin/master, origin/HEAD) docs: 重
ba4358d Update README.md
ba4358d Update README.md # 此條目以上合併爲一條
36f95d9 docs
0312afb init

準備合併canvas

git rebase -i 36f95d9 | git rebase -i HEAD~3

選擇合併vim

# 輸出

pick ba4358d   '註釋**********'

pick ba4358d   '註釋*********'

pick ba4358d   '註釋**********'

# pick 的意思是要會執行這個 commit
# squash 的意思是這個 commit 會被合併到前一個commit (省略寫法 s)
# 在 vim 命令下輸入 i 進入編輯模式,編輯完成後 :eq 保存退出

# 輸入

pick 3ca6ec3   '註釋**********'

s 1b40566   '註釋*********'

s 53f244a   '註釋**********'

保存完成後,你有兩個選擇bash

git rebase --continue  #  確認 rebase
git rebase --abort     # 取消 rebase

#確認後,就能夠上傳到遠程了。

若是沒有衝突,或者衝突已經解決,則會出現以下的編輯窗口, 輸入:wq 保存並推出:app

# This is a combination of 4 commits.
#The first commit’s message is:
註釋......
# The 2nd commit’s message is:
註釋......
# The 3rd commit’s message is:
註釋......
# Please enter the commit message for your changes. Lines starting # with ‘#’ will be ignored, and an empty message aborts the commit.

查看歷史,已經改變

git log --oneline
d2d71a5 (HEAD -> master) Update README.md
36f95d9 docs
0312afb init
git push -f  # 強制覆蓋遠程
git commit --amend -m "新的註釋" # 修改最新的 git commit 註釋

Git-merge 時忽略文件

提醒: 只能 master 合併其餘分支時忽略其餘分支上的文件, 其餘分支合併 master 沒法忽略 master 上的文件. (master 爲默認主分支)
  1. 建立自定義 merge driver
git config --global merge.ours.driver true
  1. 在要被 merge 的分支上建立.gitattributes 文件,而且在文件中置頂不 merge 的文件名
project.config.json merge=ours
fetch.js merge=ours
app.js merge=ours
  1. 回到要合併到的分支 master,執行 merge:
git merge uat

uat 分支上的project.config.jsonfetch.jsapp.js 就不會被合併了 !

參考連接

相關文章
相關標籤/搜索