一分鐘玩轉(zhuǎn) Git
掃描二維碼
隨時(shí)隨地手機(jī)看文章

今天又有新來的小朋友問我關(guān)于 Git 的用法,我發(fā)現(xiàn)還是有蠻多新人不會(huì)用的,或者用不好的。其實(shí)想想自己剛工作時(shí)也是倒騰不清楚這些參數(shù)和用法,而且總怕出錯(cuò),慢慢的多看文檔、用得多了就熟悉了,今天簡單跟大家分享幾點(diǎn)。
必知的 add & commit
首先我們要清楚在本地的三種狀態(tài):

好吧我把命令已經(jīng)寫上去了。
本地改完了代碼,就用
git add 文件名/文件夾/多個(gè)也可
提交到緩存區(qū),這里如果文件改動(dòng)的比較多,但又不是每個(gè)都需要提交,我會(huì)設(shè)置 git ignore file
,就表示這些文件不要提交,比如在 build project 的時(shí)候會(huì)自動(dòng)生成的那些文件等等。
然后再
git commit -m "comment"
才會(huì)到本地庫。一般后面都會(huì)跟個(gè) -m
加句 comment
,簡單說下改了啥,像我們公司大家默認(rèn)也會(huì)把 Jira
鏈接附上,這樣就知道這個(gè)改動(dòng)對應(yīng)哪個(gè)任務(wù)。
那如果想再改,再重新 git add
即可,但是 commit
這句需要改成
git commit --amend
這樣就還是一條 git log 信息。
Log
git log
可以讓我們查看提交過的日志,這個(gè)主要是因?yàn)槿绻枰獙Π姹具M(jìn)行前進(jìn) or 后退的(下一個(gè) reset
),就需要用到編號
。
直接 run
git log
的話就會(huì)顯示一大坨信息,從近到遠(yuǎn)顯示每次 commit 的 comment 還有作者、日期等信息,比如大概長這個(gè)樣子:
commit 5abcd17dggs9s0a7a91nfsagd8ay76875afs7d6
Author: Xiaoqi<xiaoqi@163.com>
Date: xxx xxx xxx
改了 Test 文件
commit 后面的這個(gè)編號
,是每次歷史記錄的一個(gè)索引
。
這樣打印的 log 太多,更簡潔的打印方式是:
git --oneline
就一行打印出來了。
或者:
git reflog
更常用一些。
Reset
那我們剛剛說過,如果需要前進(jìn)或退回到某個(gè)版本,就用
git reset --hard <編號>
這樣就直接跳到了這個(gè)編號
對應(yīng)的那個(gè)版本。
那么這個(gè) hard
是什么意思呢?
這里有 3 個(gè)參數(shù):hard
, soft
, mixed
,我們一一來說一下。
回到我們最重要的這張圖上來:

我們剛剛說的前進(jìn)或后退到某一版本,是對本地庫
進(jìn)行的操作。
那有個(gè)問題:
本地庫的代碼跳到那個(gè)版本之后,工作區(qū)和暫存區(qū)的代碼就和本地庫的不同步了呀!
那這些參數(shù)就是用來控制這些是否同步的。
git reset --hard xxx
三個(gè)區(qū)都同步,都跳到這個(gè) xxx 的版本上。
git reset --soft xxx
前面兩個(gè)區(qū)不同步,就只有本地庫跳到這個(gè)版本。
git reset --mixed xxx
暫存區(qū)同步,工作區(qū)不動(dòng)。
所以呢,用的多的就是 hard.
特別推薦一個(gè)分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:
長按訂閱更多精彩▼
如有收獲,點(diǎn)個(gè)在看,誠摯感謝
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請聯(lián)系我們,謝謝!