git提交歷史?語(yǔ)法: git checkout --orphan
整個(gè)過(guò)程中主要用到的工具是 merge 和 read-tree,前者用于合并歷史記錄并且中斷在最后提交之前,所產(chǎn)生的文件沖突不會(huì)被寫(xiě)入硬盤(pán);然后利用后者重寫(xiě)整個(gè)文件樹(shù)并把讀取到的內(nèi)容(讀取的目標(biāo)是 backend)寫(xiě)入新的路徑下。
最后提交以結(jié)束合并。
第2步里,我們把 backend 作為 remote server 添加到 frontend 庫(kù)中。
-f 的作用是在添加后立刻 fetch。
要注意一定得使用絕對(duì)路徑來(lái)引用 backend 庫(kù)。
第3步里,--strategy ours 比較難以理解,且聽(tīng)我詳細(xì)道來(lái):一般來(lái)說(shuō)當(dāng)合并兩個(gè)文件樹(shù)時(shí),如果遇到?jīng)_突我們是需要手動(dòng)去解決它的,但是目前我們要做的不是解決沖突,而是在引入 backend 歷史記錄的前提下完整保留 frontend 的內(nèi)容。
沖突肯定是會(huì)有的,即使兩個(gè)不同的項(xiàng)目也是如此,比方說(shuō)兩邊都有 README.md、app/、config/ 等文件或目錄,但是我們不關(guān)心沖突,我們只要保留 frontend 的文件樹(shù)并且把 backend 的歷史記錄合并進(jìn)來(lái)。
修改最近一次commit命令,注意郵箱需包括<>尖括號(hào)
如圖,紅圈中提交的用戶(hù)名及郵箱是需要改的,則需要復(fù)制 需要改的提交記錄的上一個(gè)記錄hashcode ,在本例中就是 a0a891a48f92b51201042fccbe61ed12646eda5e
需要修改哪個(gè)commit就在行首將 pick 改為 edit ,在本例中則需要改第一行
wq 保存退出之后會(huì)返回如下內(nèi)容
命令執(zhí)行后會(huì)進(jìn)入提交日志的編輯界面,我們僅需要修改用戶(hù)名及郵箱,不需要修改提交日志信息, wq 保存退出即可
接下來(lái)此次提交的作者及郵箱會(huì)被修改為 --local 級(jí)別的用戶(hù)名及郵箱,若該級(jí)別沒(méi)有設(shè)置,則會(huì)使用 --global 級(jí)別的用戶(hù)名及郵箱
再查看提交記錄,可以看到提交的作者及郵箱已經(jīng)改正了
以前開(kāi)發(fā)中未制定、遵循 git 管理項(xiàng)目標(biāo)準(zhǔn),隨意(不規(guī)范)的提交 嚴(yán)重“污染了”提交歷史,使開(kāi)發(fā)主線(xiàn) “臟亂”;
基于以前的倉(cāng)庫(kù)重新開(kāi)發(fā),這樣可保留以前的配置等文件,但是需要?jiǎng)h除全部的歷史記錄、tag、分支等;
由于自己或其他方面特殊需求,需要保留倉(cāng)庫(kù)的部分屬性(創(chuàng)建時(shí)間,說(shuō)明,主頁(yè)等),但需要清除歷史記錄,使其為“新庫(kù)”。
基于以上3方面的需求,需要提供一個(gè) 在不刪除原倉(cāng)庫(kù)的前提下,清除原倉(cāng)庫(kù)的所有歷史提交記錄(包含:分支、tag) 解決方案。
語(yǔ)法: git checkout --orphan
例句: git checkout --orphan latest_branch
使用 --orphan 選項(xiàng),可創(chuàng)建1個(gè)"清潔"分支(無(wú)任何的提交歷史,但是當(dāng)前分支的內(nèi)容一應(yīng)俱全。但嚴(yán)格意義上說(shuō),這樣創(chuàng)建的分支還不是一個(gè)真正的分支,因?yàn)镠EAD指向的引用中沒(méi)有commit值,只有在進(jìn)行一次提交后,它才算得上真正的分支。
新的分支名可以隨意命名,但不能和以前的分支名沖突。這兒特別強(qiáng)調(diào)是因?yàn)楹芏嗳肆?xí)慣默認(rèn)將分支名創(chuàng)建為master .
本文以latest_branch作為新分支名,這個(gè)名稱(chēng)沒(méi)有任何特殊含義,你可自定義,只要保證和以后的使用一致即可。
看遠(yuǎn)程的提交日志:命令是git log remotes/origin/master (origin/master這個(gè)都是默認(rèn)的遠(yuǎn)程倉(cāng)庫(kù)和分支,可以自己改成想看的倉(cāng)庫(kù)和想看的分支);
當(dāng)然如果你的本地很久沒(méi)有更新過(guò)遠(yuǎn)程倉(cāng)庫(kù)的信息了,看到的日志可能就不是最新的;
所以在查看之前需要先運(yùn)行g(shù)it fetch 或者git fetch origin。
如果想查看你已經(jīng)配置的遠(yuǎn)程倉(cāng)庫(kù)服務(wù)器,可以運(yùn)行g(shù)it remote命令。 它會(huì)列出你指定的每一個(gè)遠(yuǎn)程服務(wù)器的簡(jiǎn)寫(xiě)。 如果你已經(jīng)克隆了自己的倉(cāng)庫(kù),那么至少應(yīng)該能看到 origin - 這是 Git 給你克隆的倉(cāng)庫(kù)服務(wù)器的默認(rèn)名字:
你也可以指定選項(xiàng)-v,會(huì)顯示需要讀寫(xiě)遠(yuǎn)程倉(cāng)庫(kù)使用的 Git 保存的簡(jiǎn)寫(xiě)與其對(duì)應(yīng)的 URL。
Git 配置文件分為三級(jí),系統(tǒng)級(jí)(–system)、用戶(hù)級(jí)(–global)和目錄級(jí)(–local),三者的使用優(yōu)先級(jí)以離目錄 (repository)最近為原則,如果三者的配置不一樣,則生效優(yōu)先級(jí) 目錄級(jí)>用戶(hù)級(jí)>系統(tǒng)級(jí) ,可以通過(guò) git config --help 查看更多內(nèi)容。
系統(tǒng)級(jí)配置存儲(chǔ)在 /etc/gitconfig 文件中,可以使用 git config --systemuser.name"jim" ,git config --sytemuser.email" jim.jim@gmail.com " 來(lái)進(jìn)行配置,該配置對(duì)系統(tǒng)上所有用戶(hù)及他們所擁有的倉(cāng)庫(kù)都生效的配置值。
用戶(hù)級(jí)存儲(chǔ)在每個(gè)用戶(hù)的 ~/.gitconfig 中,可以使用 git config --globaluser.name"jim" ,git config --globaluser.email" jim.jim@gmail.com " 來(lái)進(jìn)行配置,該配置對(duì)當(dāng)前用戶(hù)上所有的倉(cāng)庫(kù)有效。
目錄級(jí)存儲(chǔ)在每個(gè)倉(cāng)庫(kù)下的 .git/config 中,可以使用 git config --localuser.name"jim" , git config --localuser.email" jim.jim@gmail.com " 來(lái)進(jìn)行配置,只對(duì)當(dāng)前倉(cāng)庫(kù)生效。
以上就是git提交歷史的全部?jī)?nèi)容,gitlab的網(wǎng)頁(yè)上提交歷史記錄如何顯示更新時(shí)間的方法:1、先找到需要查看提交記錄的項(xiàng)目,點(diǎn)擊名稱(chēng)進(jìn)入詳情頁(yè)面。2、點(diǎn)擊上方的Commits按鈕,進(jìn)入提交記錄詳情頁(yè)面。3、查看提交記錄:當(dāng)前頁(yè)面就記錄了所有提交記錄,可點(diǎn)擊某一個(gè)提交查看具體的改動(dòng)。