記不住Git那么命令?動(dòng)圖展示10個(gè)Git常用命令,建議收藏!

git merge、git rebase、git reset、git revert、git fetch、git pull、git reflog……你知道這些 git 命令執(zhí)行的究竟是什么任務(wù)嗎?如果你還有些分不清楚,那千萬(wàn)不能錯(cuò)過(guò)這篇文章。在本文中,熟知 JavaScript、TypeScript、GraphQL、Serverless、AWS、Docker 和 Golang 的 21 歲年輕軟件顧問(wèn) Lydia Hallie 通過(guò)動(dòng)圖形式直觀地介紹了這些常用 git 命令的工作過(guò)程,包你過(guò)目不忘。


當(dāng)嘗試合并這些分支時(shí),Git 會(huì)向你展示沖突出現(xiàn)的位置。我們可以手動(dòng)移除我們不想保留的修改,保存這些修改,再次添加這個(gè)已修改的文件,然后提交這些修改。


在我們正在 rebase 的提交上,我們可以執(zhí)行以下 6 個(gè)動(dòng)作:
reword:修改提交信息;
edit:修改此提交;
squash:將提交融合到前一個(gè)提交中;
fixup:將提交融合到前一個(gè)提交中,不保留該提交的日志消息;
exec:在每個(gè)提交上運(yùn)行我們想要 rebase 的命令;
drop:移除該提交。


當(dāng)我們不想要之前提交的修改時(shí),就會(huì)用到這個(gè)命令。也許這是一個(gè) WIP 提交或者可能是引入了 bug 的提交,這時(shí)候就要執(zhí)行 git reset。
git reset 能讓我們不再使用當(dāng)前臺(tái)面上的文件,讓我們可以控制 HEAD 應(yīng)該指向的位置。
軟重置
軟重置會(huì)將 HEAD 移至指定的提交(或與 HEAD 相比的提交的索引),而不會(huì)移除該提交之后加入的修改!
假設(shè)我們不想保留添加了一個(gè) style.css 文件的提交 9e78i,而且我們也不想保留添加了一個(gè) index.js 文件的提交 035cc。但是,我們確實(shí)又想要保留新添加的 style.css 和 index.js 文件!這是軟重置的一個(gè)完美用例。

有時(shí)候我們并不想保留特定提交引入的修改。不同于軟重置,我們應(yīng)該再也無(wú)需訪問(wèn)它們。Git 應(yīng)該直接將整體狀態(tài)直接重置到特定提交之前的狀態(tài):這甚至包括你在工作目錄中和暫存文件上的修改。

假設(shè) ec5be 添加了一個(gè) index.js 文件。但之后我們發(fā)現(xiàn)其實(shí)我們?cè)僖膊恍枰蛇@個(gè)提交引入的修改了。那就還原 ec5be 提交吧!


通過(guò)在這個(gè)遠(yuǎn)程分支上執(zhí)行 git fetch,我們就可在本地獲取這些修改。這不會(huì)以任何方式影響你的本地分支:fetch 只是單純地下載新的數(shù)據(jù)而已。


git reflog 是一個(gè)非常有用的命令,可以展示已經(jīng)執(zhí)行過(guò)的所有動(dòng)作的日志。包括合并、重置、還原,基本上包含你對(duì)你的分支所做的任何修改。

假設(shè)我們實(shí)際上并不需要合并原有分支。當(dāng)我們執(zhí)行 git reflog 命令時(shí),我們可以看到這個(gè) repo 的狀態(tài)在合并前位于 HEAD@{1}。那我們就執(zhí)行一次 git reset,將 HEAD 重新指向在 HEAD@{1} 的位置。



臥槽:第一次見(jiàn)這么牛x的網(wǎng)站!

一招教你查看微信朋友圈訪客記錄!

一招搞定github下載速度到2MB/s
評(píng)論
圖片
表情
