本文主要?dú)w納一下git的學(xué)習(xí)記錄,在開(kāi)發(fā)期間發(fā)現(xiàn)了git在sourcetree的處理不是很好,對(duì)于多選文件的丟棄這點(diǎn)不是很方便,所以做一個(gè)記錄,由于項(xiàng)目中有新建的文件,所以被識(shí)別為未跟蹤的文件,但我不需要這些文件了,想要批量處理掉,所以記錄一下用命令行一次性丟棄未跟蹤文件的方法,同時(shí)也記錄一下撤銷push請(qǐng)求的git記錄。
Untrace類型文件
"Untracked files" 指的是在版本控制系統(tǒng)中(如 Git)的代碼庫(kù)中存在但尚未被版本控制追蹤的文件。這些文件包括在代碼庫(kù)中,但 Git 不會(huì)監(jiān)視它們的更改或?qū)⑺鼈儼诎姹練v史記錄中。
當(dāng)你在 Git 倉(cāng)庫(kù)中創(chuàng)建新文件時(shí),這些文件默認(rèn)是未追蹤的。未追蹤的文件不會(huì)被 Git 記錄,因此它們不會(huì)出現(xiàn)在版本歷史記錄中,也不會(huì)被包含在提交中。
查詢未跟蹤文件
使用命令行 丟棄 untrace(未跟蹤)的文件,這里在sourcetree中有六個(gè)未跟蹤的文件,在sourcetree中可以使用右鍵來(lái)對(duì)不需要跟蹤的文件進(jìn)行丟棄,但是一個(gè)個(gè)的去丟棄比較麻煩,我也試過(guò)用全選加丟棄快捷鍵來(lái)進(jìn)行丟棄,但效果不是很好

所以建議使用git命令來(lái)進(jìn)行文件的丟棄

先用git status來(lái)檢查當(dāng)前項(xiàng)目的修改狀態(tài)
可以看到有這么幾個(gè)標(biāo)紅的文件,并且類型為Untracked files,就是未跟蹤的文件
清除未跟蹤文件
想要清除未跟蹤的文件 一般是用 git clean 來(lái)進(jìn)行清除,用于從工作目錄中刪除未追蹤的文件,但是創(chuàng)建文件的時(shí)候,可能同時(shí)創(chuàng)建了文件夾,所以git也提供了一個(gè)后綴來(lái)修飾命令,加上-d表示刪除未被追蹤的目錄。
如果不加-d,則git clean只會(huì)刪除未被追蹤的文件而保留未被追蹤的目錄。
-f: 表示強(qiáng)制執(zhí)行,即不會(huì)提示確認(rèn),直接刪除未追蹤的文件。
因?yàn)槲矣胓it status 提前查詢了未跟蹤的文件,所以這里我直接刪除掉加上-f

清除后重新看下git status來(lái)看下當(dāng)前分支的情況。

可以看到當(dāng)前分支是沒(méi)有改動(dòng)的。
撤回已push代碼
在日常開(kāi)發(fā)可能會(huì)經(jīng)常遇到某些功能實(shí)現(xiàn)了,產(chǎn)品又不需要的場(chǎng)景

當(dāng)前這提交是我不需要的,但是已經(jīng)push到分支上面去了,如果來(lái)解決這問(wèn)題,需要我們把已經(jīng)提交的代碼撤回
如果是在自己的項(xiàng)目的開(kāi)發(fā)環(huán)境可以直接執(zhí)行
git reset --hard HEAD
將當(dāng)前分支的 HEAD 移動(dòng)到前一個(gè)提交,即刪掉本地最后一個(gè)commit
然后再使用
git push --force-with-lease
推送到遠(yuǎn)程刪掉最后一個(gè)commit。
git cherry-pick HASH 最后本地恢復(fù)最后一個(gè)commit。
git reset --hard和git push --force-with-lease是一種強(qiáng)制推送的操作,會(huì)修改遠(yuǎn)程倉(cāng)庫(kù)的歷史記錄。在多人協(xié)作的項(xiàng)目中,強(qiáng)制推送可能會(huì)影響其他開(kāi)發(fā)者的工作
所以上面的方法并不是最推薦的
使用git revert撤銷提交
先通過(guò)git log 來(lái)查找最后一次提交的hash
git log
找到對(duì)應(yīng)的hash值來(lái)進(jìn)行
到命令行中直接執(zhí)行
git revertgit revert bc4b4198b43ae601f05d25d34f0cff65240525f4

然后再進(jìn)行提交
git push origin
其中是你要撤銷的提交的哈希值, 是你的分支名稱。

對(duì)比一下可以看到先后兩次提交

相比起之前的強(qiáng)制提交會(huì)更加的友好,不會(huì)因?yàn)槠渌_(kāi)發(fā)者拉取分支導(dǎo)致分支刪除,然后產(chǎn)生沖突。
總結(jié)
本次總結(jié)了兩個(gè)日常開(kāi)發(fā)經(jīng)常可能會(huì)遇到的git操作場(chǎng)景,減少使用強(qiáng)制提交,給每個(gè)提交都留下記錄,避免開(kāi)發(fā)過(guò)程中的開(kāi)發(fā)者直接的分支沖突,是一個(gè)很關(guān)鍵的點(diǎn)。
鏈接:https://juejin.cn/post/7313862981029232655
審核編輯:劉清
-
Git
+關(guān)注
關(guān)注
0文章
206瀏覽量
16845
原文標(biāo)題:用Git命令解決常見(jiàn)場(chǎng)景
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Git常用命令總結(jié)
Git常用的超級(jí)實(shí)用命令
git命令的基本使用
Git命令之本地分支與遠(yuǎn)程分支關(guān)聯(lián)和解除
SVN,HG,GIT命令對(duì)照
第一本Git命令教程(六) - 日志
Git 命令+原理 程序員必備的基礎(chǔ)
GIT合代碼的經(jīng)典操作場(chǎng)景
git rebase與相關(guān)git merge命令比較
git的命令和參數(shù)
Git命令的綜合手冊(cè)怎么找
git如何記錄每次更新到倉(cāng)庫(kù)
git基本操作命令用法
用Git命令解決常見(jiàn)場(chǎng)景記錄
評(píng)論