Git 基礎(chǔ)用法

1. 配置 GitHub SSH key

否則每次 push 到遠端都需要輸入 GitHub 的密碼。

$ ssh-keygen # 其實后面什么參數(shù)不加都行

之后可一路回車,生成的兩個文件默認(rèn)存放在 ~/.ssh 目錄下。

打開 id_rsa.pub 文件,復(fù)制內(nèi)容,找到 GitHub 的 Settings -> SSH and GPG keys -> New SSH key,粘貼。

2. 新建 GitHub repository

按照網(wǎng)站的提示就好,注意有一個 Add .gitignore 選項,這個文件非常必要,指示了 Git repo 中無需提交的目錄或文件,我們可以選擇一門熟悉的編程語言,建立后打開這個文件看一看。

3. Clone 這個 repo:clone

請選擇 SSH 地址,形如 git@github.com:username/reponame.git,之后

$ git clone git@github.com:username/reponame.git

這時你可以看到當(dāng)前目錄下新的 reponame 文件夾了。

4. 從鍵盤到網(wǎng)絡(luò)——提交:status / add / commit / push

這部分講解一個文件從創(chuàng)建到被 push 到 GitHub repo 的各個步驟: add -> commit -> push。

- add 命令的最基礎(chǔ)用法

進入reponame目錄,新建一個文件 new0.txt,內(nèi)容為數(shù)字 1。使用

$ git status

隨時查看工作區(qū)和暫存區(qū)的變化。
使用

$ git add new0.txt # 也可以使用 git add -A 提交當(dāng)前目錄的全部修改

將改動添加到暫存區(qū) stage

注:關(guān)于工作區(qū)、暫存區(qū)版本庫 的概念,請點擊這里查看。這十分重要,下面的內(nèi)容默認(rèn)你已經(jīng)理解了這些概念。

- commit 命令的最基礎(chǔ)用法

使用

$ git commit -m "initial commit" # -m 參數(shù)指定對于本次 commit 的說明,以便使人明白它的目的

如果是第一次使用 git,需要根據(jù)提示設(shè)置你的 nameemail,這些內(nèi)容將會包含在今后的 commit 信息中。

- push 命令的最基礎(chǔ)用法

使用

$ git push

將本地 repo 的改動 push 到遠程 origin repo,默認(rèn)使用 origin 指代遠程 repo。

這時我們可以從 GtiHub 上看到改動了。

5. 從網(wǎng)絡(luò)到鍵盤——回退:checkout / reset / log / reflog / revert

這部分講解當(dāng)我們風(fēng)風(fēng)火火瞎操作之后,如何回到之前的狀態(tài)。根據(jù)操作進程,回退可以分為以下情況:

- 修改之后立即回退

目前我們的工作區(qū)中有一個 new0.txt,內(nèi)容為 1。將內(nèi)容修改為 2。

使用 $ git status 查看狀態(tài),便可以看到提示:

use "git checkout -- <file>..." to discard changes in working directory

按照提示使用

$ git checkout -- new0.txt # 注意文件名前的空格

再用 $ cat new0.txt 查看內(nèi)容,發(fā)現(xiàn)已經(jīng)變回了 1。

注:如果我們新建了一個 new1.txt,這個命令會將 new1.txt 刪除掉嗎?這涉及到 $ git checkout -- <file> 究竟做了什么。有興趣的可以在閱讀完下個小節(jié)后,點擊這里多了解一下。

- add 后回退

同樣,修改 new0.txt 內(nèi)容為 2。之后

$ git add -A

可以看到提示

use "git reset HEAD <file>..." to unstage

照貓畫虎

$ git reset HEAD new0.txt

之后我們便回到了上一小節(jié)的狀態(tài),可以繼續(xù)使用 checkout 命令了。

- commit 后回退

在本小節(jié)和下一小節(jié)中會使用 resetrevert 兩個命令,主要講前者。

不難想象,每一個 commit 必有其編號(這里的 commit 是名詞)。使用

$ git log

查看所有的 commit,比如你想回退到誤操作的上一次 commit,那么就在列表中復(fù)制從上數(shù)的第二項內(nèi)容里的 commit_id,也就是一大串?dāng)?shù)字密碼的組合(只需復(fù)制前幾位即可,當(dāng)然全復(fù)制下來也沒問題)。

然后使用

$ git reset --hard <commit_id> # 若只撤銷一次 commit,也可以使用 git reset --hard HEAD^

在更特殊的情況下,我們需要恢復(fù)剛剛被撤銷的 commit,而這時 log 里已經(jīng)找不到它的 commit_id 了,怎么辦!別怕,口中輕吟“天空飄來五個字”,手指不慌不忙不亂不抖而又非常優(yōu)雅地敲下

$ git reflog

你會懂的。

- push 后回退

由于我們的操作一直是在本地的 repo,要想在 push 到遠端 repo 后回退,那么思路便是在本地先回退,再 push 到遠端。

所以我們可以先用上一小節(jié)的方法,撤銷 commit,然后再用

$ git push --force # 不加 --force 會提示本地的進度落后于遠端而失敗

強行 push。

其實,在這里 revert 是更好的選擇。revert 相當(dāng)于將 repo 內(nèi)容的回退視作一次新的修改,從而建立一次新的 commit。而 reset 相當(dāng)于直接刪除一次 commit。

關(guān)于 revert 的用法,請自行查詢。

6. 從一人飲酒醉到阿里郎體操——分支

這部分是理解 git 的核心部分,但寫起來太累了,又必須要配圖,直接點擊這里查看廖雪峰的教程。也包括之后的「解決沖突」部分。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容