本文主要歸納一下git的學(xué)習(xí)記錄,在開發(fā)期間發(fā)現(xiàn)了git在sourcetree的處理不是很好,對于多選文件的丟棄這點不是很方便,所以做一個記錄,由于項目中有新建的文件,所以被識別為未跟蹤的文件,但我不需要這些文件了,想要批量處理掉,所以記錄一下用命令行一次性丟棄未跟蹤文件的方法,同時也記錄一下撤銷push請求的git記錄。
Untrace類型文件
"Untracked files" 指的是在版本控制系統(tǒng)中(如 Git)的代碼庫中存在但尚未被版本控制追蹤的文件。這些文件包括在代碼庫中,但 Git 不會監(jiān)視它們的更改或?qū)⑺鼈儼诎姹練v史記錄中。
當(dāng)你在 Git 倉庫中創(chuàng)建新文件時,這些文件默認是未追蹤的。未追蹤的文件不會被 Git 記錄,因此它們不會出現(xiàn)在版本歷史記錄中,也不會被包含在提交中。
查詢未跟蹤文件
使用命令行 丟棄 untrace(未跟蹤)的文件,這里在sourcetree中有六個未跟蹤的文件,在sourcetree中可以使用右鍵來對不需要跟蹤的文件進行丟棄,但是一個個的去丟棄比較麻煩,我也試過用全選加丟棄快捷鍵來進行丟棄,但效果不是很好
所以建議使用git命令來進行文件的丟棄
先用git status來檢查當(dāng)前項目的修改狀態(tài)
可以看到有這么幾個標紅的文件,并且類型為Untracked files,就是未跟蹤的文件
清除未跟蹤文件
想要清除未跟蹤的文件 一般是用 git clean 來進行清除,用于從工作目錄中刪除未追蹤的文件,但是創(chuàng)建文件的時候,可能同時創(chuàng)建了文件夾,所以git也提供了一個后綴來修飾命令,加上-d表示刪除未被追蹤的目錄。
如果不加-d,則git clean只會刪除未被追蹤的文件而保留未被追蹤的目錄。
-f: 表示強制執(zhí)行,即不會提示確認,直接刪除未追蹤的文件。
因為我用git status 提前查詢了未跟蹤的文件,所以這里我直接刪除掉加上-f
清除后重新看下git status來看下當(dāng)前分支的情況。
可以看到當(dāng)前分支是沒有改動的。
撤回已push代碼
在日常開發(fā)可能會經(jīng)常遇到某些功能實現(xiàn)了,產(chǎn)品又不需要的場景
當(dāng)前這提交是我不需要的,但是已經(jīng)push到分支上面去了,如果來解決這問題,需要我們把已經(jīng)提交的代碼撤回
如果是在自己的項目的開發(fā)環(huán)境可以直接執(zhí)行
git reset --hard HEAD
將當(dāng)前分支的 HEAD 移動到前一個提交,即刪掉本地最后一個commit
然后再使用
git push --force-with-lease
推送到遠程刪掉最后一個commit。
git cherry-pick HASH 最后本地恢復(fù)最后一個commit。
git reset --hard和git push --force-with-lease是一種強制推送的操作,會修改遠程倉庫的歷史記錄。在多人協(xié)作的項目中,強制推送可能會影響其他開發(fā)者的工作
所以上面的方法并不是最推薦的
使用git revert撤銷提交
先通過git log 來查找最后一次提交的hash
git log
找到對應(yīng)的hash值來進行
到命令行中直接執(zhí)行
git revertgit revert bc4b4198b43ae601f05d25d34f0cff65240525f4
然后再進行提交
git push origin
其中是你要撤銷的提交的哈希值, 是你的分支名稱。
對比一下可以看到先后兩次提交
相比起之前的強制提交會更加的友好,不會因為其他開發(fā)者拉取分支導(dǎo)致分支刪除,然后產(chǎn)生沖突。
總結(jié)
本次總結(jié)了兩個日常開發(fā)經(jīng)常可能會遇到的git操作場景,減少使用強制提交,給每個提交都留下記錄,避免開發(fā)過程中的開發(fā)者直接的分支沖突,是一個很關(guān)鍵的點。
鏈接:https://juejin.cn/post/7313862981029232655
審核編輯:劉清
-
Git
+關(guān)注
關(guān)注
0文章
200瀏覽量
15765
原文標題:用Git命令解決常見場景
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論