點擊下方“AI算法與圖像處理”,一起進步!
重磅乾貨,第一時間送達
選自dev.to,作者:Lydia Hallie
git merge、git rebase、git reset、git revert、git fetch、git pull、git reflog……你知道這些 git 命令執行的究竟是什麼任務嗎?如果你還有些分不清楚,那千萬不能錯過這篇文章。在本文中,熟知 JavaScript、TypeScript、GraphQL、Serverless、AWS、Docker 和 Golang 的 21 歲年輕軟件顧問 Lydia Hallie 通過動圖形式直觀地介紹了這些常用 git 命令的工作過程,包你過目不忘。
當嘗試合併這些分支時,Git 會向你展示衝突出現的位置。我們可以手動移除我們不想保留的修改,保存這些修改,再次添加這個已修改的文件,然後提交這些修改。
完成!儘管合併衝突往往很讓人厭煩,但這是合理的:Git 不應該瞎猜我們想要保留哪些修改。
在我們正在 rebase 的提交上,我們可以執行以下 6 個動作:
reword:修改提交信息;
edit:修改此提交;
squash:將提交融合到前一個提交中;
fixup:將提交融合到前一個提交中,不保留該提交的日誌消息;
exec:在每個提交上運行我們想要 rebase 的命令;
drop:移除該提交。
重置(Resetting)
當我們不想要之前提交的修改時,就會用到這個命令。也許這是一個 WIP 提交或者可能是引入了 bug 的提交,這時候就要執行 git reset。
git reset 能讓我們不再使用當前檯面上的文件,讓我們可以控制 HEAD 應該指向的位置。
軟重置
軟重置會將 HEAD 移至指定的提交(或與 HEAD 相比的提交的索引),而不會移除該提交之後加入的修改!
假設我們不想保留添加了一個 style.css 文件的提交 9e78i,而且我們也不想保留添加了一個 index.js 文件的提交 035cc。但是,我們確實又想要保留新添加的 style.css 和 index.js 文件!這是軟重置的一個完美用例。
輸入 git status 後,你會看到我們仍然可以訪問在之前的提交上做過的所有修改。這很好,這意味着我們可以修復這些文件的內容,之後再重新提交它們!
有時候我們並不想保留特定提交引入的修改。不同於軟重置,我們應該再也無需訪問它們。Git 應該直接將整體狀態直接重置到特定提交之前的狀態:這甚至包括你在工作目錄中和暫存文件上的修改。
Git 丟棄了 9e78i 和 035cc 引入的修改,並將狀態重置到了 ec5be 的狀態。
還原(Reverting)
假設 ec5be 添加了一個 index.js 文件。但之後我們發現其實我們再也不需要由這個提交引入的修改了。那就還原 ec5be 提交吧!
取回(Fetching)
通過在這個遠程分支上執行 git fetch,我們就可在本地獲取這些修改。這不會以任何方式影響你的本地分支:fetch 只是單純地下載新的數據而已。
拉取(Pulling)
Reflog
git reflog 是一個非常有用的命令,可以展示已經執行過的所有動作的日誌。包括合併、重置、還原,基本上包含你對你的分支所做的任何修改。
假設我們實際上並不需要合併原有分支。當我們執行 git reflog 命令時,我們可以看到這個 repo 的狀態在合併前位於 HEAD@{1}。那我們就執行一次 git reset,將 HEAD 重新指向在 HEAD@{1} 的位置。
原文鏈接:https://dev.to/lydiahallie/cs-visualized-useful-git-commands-37p1
努力分享優質的計算機視覺相關內容,歡迎關注:
交流羣
歡迎加入公衆號讀者羣一起和同行交流,目前有美顏、三維視覺、計算攝影、檢測、分割、識別、醫學影像、GAN、算法競賽等微信羣
個人微信(如果沒有備註不拉羣!)
請註明:
地區+學校/企業+研究方向+暱稱
下載1:何愷明頂會分享
在「AI算法與圖像處理」公衆號後臺回覆:何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經典工作的總結分析
下載2:終身受益的編程指南:Google編程風格指南
在「AI算法與圖像處理」公衆號後臺回覆:c++,即可下載。歷經十年考驗,最權威的編程規範!
下載3 CVPR2021
在「AI算法與圖像處理」公衆號後臺回覆:
CVPR
,即可下載1467篇CVPR 2020論文 和 CVPR 2021 最新論文
本文分享自微信公衆號 - AI算法與圖像處理(AI_study)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。