常用命令
?
其他參數(shù) --inital-branch 初始化的分支 --bare 創(chuàng)建一個(gè)裸倉(cāng)庫(kù)(純 Git 目錄,沒有工作目錄) --template 可以通過模板來創(chuàng)建預(yù)先建好的自定義 git 目錄
?
常見 Git 配置
用戶名配置
git config --global user.name "yourname" git config --global user.email yourname@xx.com
instead of 配置
git config --global url.github.com:.insteadOf github.com/
Git 命令別名配置
git config --global alias.cin "commit --amend --no-edit"
Git Remote
查看 Remote
git remote -v
添加 Remote
git remote add orgin_ssh git@github.com:git/git.git git remote add orgin_http github.com/git/git.gii…
HTTP Remote
URL:github.com/git/git.git 免密配置 內(nèi)存:git config --global credential.helper 'cache --timeout=3600' 硬盤:git config --global credential.helper "store --file/path/to/credential-file" 不指定目錄的情況默認(rèn)是 ~/.git-credentials
將密鑰信息存在指定文件中 具體格式:scheme://{scheme}://scheme://{user}:${password}@github.com
SSH Remote
URL:git@github.com:git/git.git 免密配置 SSH 可以通過公司鑰的機(jī)制,將生成公鑰存放在服務(wù)端,從而實(shí)現(xiàn)免密訪問
目前的 Key 類型四種,分別是 dsa、rsa、ecdsa、ed25519 默認(rèn)使用的是 rsa,由于一些安全問題,現(xiàn)在已經(jīng)不推薦使用 dsa 和 rsa 了,優(yōu)先推薦使用 ed25519 ssh-keygen -t ed25519 -C "your_email@example.com" 密鑰默認(rèn)存在 ~/-ssh/id_ed25519.pub
Objects
commit / tree / blob 在 git 里面走統(tǒng)一稱為 Object,除此之外還有個(gè) tag 的 object. Blob:存儲(chǔ)文件的內(nèi)容 Tree:存儲(chǔ)文件的目錄信息 Commit:存儲(chǔ)提交信息,一個(gè) Commit 可以對(duì)應(yīng)唯一版本的代碼
如何把這三個(gè)信息串聯(lián)在一起? 1、通過 Commit 尋找到 Tree 信息,每一個(gè) Commit 都會(huì)存儲(chǔ)對(duì)應(yīng)的 Tree ID。 2、通過 Tree 存儲(chǔ)的信息,獲取到對(duì)應(yīng)的目錄樹信息。 3、從 Tree 中獲得 blob 的 ID,通過 Blob ID 獲取對(duì)應(yīng)的文件內(nèi)容。
Refs
Refs 文件存儲(chǔ)的內(nèi)容 refs 的內(nèi)容就是對(duì)應(yīng)的 Commit ID 因此把 ref 當(dāng)做指針,指向最硬的 Commit 來表示當(dāng)前 Ref 對(duì)應(yīng)的版本。
不同種類的 ref
refs/heads 前綴表示的是分支,除此之外還有其他種類的 ref,比如 refs/tags 前綴表示的是標(biāo)簽。
Branch
git cheakout -b 可以創(chuàng)建一個(gè)新分支 分支一般用于開發(fā)階段,是可以不斷添加 Commit 進(jìn)行迭代的
Tag
標(biāo)簽一般表示的是一個(gè)穩(wěn)定版本,指向的 Commit 一般不會(huì)變更 通過 git tag 命令生成 tag。
Annotation Tag
什么是附注標(biāo)簽? 一種特殊的 Tag,可以給 Tag 提供一些額外的信息。 如何創(chuàng)建附注標(biāo)簽? 通過 git tag -a 命令來完成附注標(biāo)簽的創(chuàng)建。
Git GC
通過 git gc 命令,可以刪除一些不需要的 object,以及會(huì)對(duì) object 進(jìn)行一些打包壓縮來減少倉(cāng)庫(kù)的體積。
Reflog
reflog 是用于記錄操作日志,防止誤操作后數(shù)據(jù)丟失,通過 reflog 來找到丟失的數(shù)據(jù),手動(dòng)將日志設(shè)置為過期。 指定時(shí)間 git gc prune=now 指定的是修剪多久之前的對(duì)象,默認(rèn)是兩周前。
Git Clone & Pull & Fetch
Clone
拉取完整的倉(cāng)庫(kù)到本地目錄,可以指定分支,深度。
Fetch
將遠(yuǎn)端某些分支最新代碼拉取到本地,不會(huì)執(zhí)行 merge 操作,會(huì)修改 refs/remote 內(nèi)的分支信息,如果需要執(zhí)行和本地代碼合并需要手動(dòng)操作。
Pull
拉取遠(yuǎn)端某分支,并和本地代碼進(jìn)行合并,操作等于 git fetch + git merge,也可以通過 git pull --rebase 完成 git fetch + git rebase 操作。
可能存在沖突,需要解決沖突。文章來源:http://www.zghlxwxcb.cn/news/detail-602841.html
Git Push Push 是將本地代碼同步至遠(yuǎn)端的方式。 常見命令 一般使用 git push orgin master 命令即可完成 沖突問題 1、如果本地的 commit 記錄和遠(yuǎn)端的 commit 歷史不一致,則會(huì)產(chǎn)生沖突,比如 git commit --amend or git rebase 都有可能導(dǎo)致這個(gè)問題。 2、如果該分支就自己一個(gè)人使用,或者團(tuán)隊(duì)確認(rèn)過可以修改歷史則可以通過 git push orgin master --f 來強(qiáng)制推送,一般不推薦主干分支進(jìn)行該操作,正常都應(yīng)該解決沖突后再進(jìn)行推送。 推送規(guī)則限制 可以通過保護(hù)分支,來配置一些保護(hù)規(guī)則,防止誤操作,或者一些不合規(guī)的操作出現(xiàn),導(dǎo)致代碼丟失。文章來源地址http://www.zghlxwxcb.cn/news/detail-602841.html
到了這里,關(guān)于DevOps系列文章之 Git知識(shí)大全的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!