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