收集、記錄环疼、整理一些 Git 相關(guān)使用技巧蹋嵌。
git config
查看配置信息
- 命令參數(shù) --list芽隆,簡(jiǎn)寫(xiě) -l
- 格式:
git config [–local|–global|–system] -l
//查看倉(cāng)庫(kù)級(jí)的 config
git config --local -l
//查看全局級(jí)的 config
git config --global -l
//查看系統(tǒng)級(jí)的 config
git config --system -l
//查看當(dāng)前生效的配置
git config -l
打開(kāi)編輯器(修改)
- 命令參數(shù) --edit -e
- 格式:
git config [–local|–global|–system] -e
注:語(yǔ)法相同询微,唯一區(qū)別是該命令會(huì)使用默認(rèn)編輯器打開(kāi)配置文件玄叠。
添加配置
- 命令參數(shù) --add
- 格式:
git config [–local|–global|–system] --add section.key value
#
git config --add core.email "sss213018@163.com"
# core.email=sss213018@163.com
git push 提交到遠(yuǎn)程倉(cāng)庫(kù)
- 默認(rèn)當(dāng)前分支
git push
- 指定分支
git push origin master
git push <remote> <place>
- 該命令可翻譯為:切換到本地倉(cāng)庫(kù)中的“
master
”分支,獲取所有的提交拓提,再到遠(yuǎn)程倉(cāng)庫(kù)“origin
”中找到“master
”分支,將遠(yuǎn)程倉(cāng)庫(kù)中沒(méi)有的提交記錄都添加上去隧膘。
- 指定不同分支
git push origin master:newBranch
git push origin <source>:<destination>
- 該命令可翻譯為:將本地倉(cāng)庫(kù)中的“
master
”分支合并到遠(yuǎn)程的newBranch
分支代态,如果該newBranch
分支不存在遠(yuǎn)程,則會(huì)以此名稱(chēng)創(chuàng)建疹吃。
git fetch 拉取遠(yuǎn)程到本地
整體用法與
git push
類(lèi)似蹦疑,只是方向相反罷了。
-
git fetch
:下載所有的提交記錄到各個(gè)遠(yuǎn)程分支 -
git fetch origin foo
:下載遠(yuǎn)程foo分支的提交記錄到本地o/foo
分支萨驶,它不會(huì)更新你的本地的非遠(yuǎn)程分支, 只是下載提交記錄歉摧。 -
git fetch origin <source>:<destination>
:source
現(xiàn)在指的是遠(yuǎn)程倉(cāng)庫(kù)中的位置,而destination
才是要放置提交的本地倉(cāng)庫(kù)的位置腔呜。
git merge 分支合并
- 快進(jìn)模式:直接把master指向dev的當(dāng)前提交
git merge dev
//把dev合并到當(dāng)前分支 - 保留信息整體合并--no-ff:
git merge --no-ff -m "merge with no-ff" dev
- 合并提交:
git log --oneline -3
//查看最近 3 次
git cherry-pick 6432f50
//把記錄 6432f50 合并到當(dāng)前分支
git pull 拉取并合并
git pull 相當(dāng)于是 fetch 后跟 merge 的縮寫(xiě)叁温。你可以理解為用同樣的參數(shù)執(zhí)行 git fetch测摔,然后再 merge 你所抓取到的提交記錄丘喻。
-
git pull origin foo
:相當(dāng)于git fetch origin foo
;git merge o/foo
-
git pull origin master:foo
:它先在本地創(chuàng)建了一個(gè)叫 foo的分支,從遠(yuǎn)程倉(cāng)庫(kù)中的 master 分支中下載提交記錄策泣,并合并到 foo谤草,然后再 merge 到我們的當(dāng)前檢出的分支 bar上跟束。
git tag 打標(biāo)簽
- 輕量標(biāo)簽:
git tag v1.0
- 輕量標(biāo)簽本質(zhì)上是將提交校驗(yàn)和存儲(chǔ)到一個(gè)文件中——沒(méi)有保存任何其他信息。 創(chuàng)建輕量標(biāo)簽丑孩,不需要使用 -a冀宴、-s 或 -m 選項(xiàng),只需要提供標(biāo)簽名字
- 附注標(biāo)簽:
git tag -a v1.0 -m "my version 1.0"
- 后期打標(biāo)簽:
git tag -a v1.0 9fceb02
//指定某次提交- git log --oneline -3 //查看提交歷史與hash值 e3890bc
- 推送到遠(yuǎn)程origin
-
git push origin v1.0
或git push origin --tags
-
git checkout 檢出温学、替換
檢出:分支切換略贮、文件恢復(fù):
- 創(chuàng)建切換分支:
git checkout -b xx
等同于 1.git branch xx
2.git checkout xx
- 恢復(fù)狀態(tài):
git checkout ./
- git checkout 文件名
替換覆蓋:達(dá)到合并指定文件夾或文件到分支的效果:
- 場(chǎng)景:如當(dāng)前在
master
分支,合并dev
分支下的test
文件夾中所有文件到master
- 示例:
git checkout dev src/pages/test
// git checkout 分支 文件路徑
tips:該操作是直接替換并不是合并,實(shí)際操作時(shí)可以再新建一個(gè)分支避免丟失別人別人的改動(dòng)記錄刨肃。
delete 刪除分支
- 查看所有分支:
git branch -a
- 刪除本地分支:
git branch -d xx
- 刪除遠(yuǎn)程分支:
git push origin --delete xx
set-url 更改遠(yuǎn)程地址
- 綁定 ssh 地址:
git remote set-url origin git@git.xx.com
- push 所有 commit 和 branch:
git push -u origin --all
// -u 可以不加 - push 所有 tag:
git push -u origin --tags
-u 的作用
遠(yuǎn)程庫(kù)有可能并沒(méi)有mybranch1分支:
git push -u origin mybranch1 相當(dāng)于
git push origin mybranch1 + git branch --set-upstream-to=origin/mybranch1 mybranch1
git stash 提交特定文件古拴、恢復(fù)錯(cuò)誤的存儲(chǔ)
- 作用:用于想要保存當(dāng)前的修改,但是想回到之前最后一次提交的干凈的工作倉(cāng)庫(kù)時(shí)進(jìn)行的操作,
git stash
將本地的修改保存起來(lái)真友,并且將當(dāng)前代碼切換到HEAD
提交上黄痪。 - 場(chǎng)景:①開(kāi)發(fā)到一半,同步遠(yuǎn)端代碼、②工作流被打斷,需要先做別的需求盔然、③提交特定文件桅打、④恢復(fù)被錯(cuò)誤clear/drop的存儲(chǔ)。
-
git stash
:等同于git stash save
愈案,存儲(chǔ)修改并且將git
的工作狀態(tài)切回到HEAD
上一次合法提交上 -
git stash pop
:移除單個(gè)存儲(chǔ)單元挺尾,和git stash save
的作用相反。 -
git stash list
:查看修改列表 -
git stash show
:展示存儲(chǔ)單元和最新提交的diff
結(jié)果 -
git stash apply
:用于重新存儲(chǔ)