轉(zhuǎn)(新人必看) Git 和 GitHub:從入門(mén)到實(shí)踐2 Git 和 GitHub 基礎(chǔ)配置

原文地址:https://www.ibm.com/developerworks/cn/opensource/os-cn-git-and-github-2/index.html

前言

在本系列的第一篇文章中著重介紹了 Git 的基礎(chǔ)特性。本文作為本系列的第二篇文章將介紹 Git 和 GitHub 的基礎(chǔ)配置,包括 Git 安裝逆皮、使用 Git 克隆 GitHub 上的代碼庫(kù)慨丐、使用 Git 克隆遠(yuǎn)端代碼倉(cāng)庫(kù)心肪、Git 的基本配置和設(shè)置忽略提交規(guī)則。您在閱讀完本文將有能力完成本地 Git 環(huán)境的基礎(chǔ)配置,為接下來(lái)的 Git 日常使用做基礎(chǔ)。

GitHub 是一個(gè)代碼托管平臺(tái)蔑水,如果開(kāi)發(fā)者想要在本地進(jìn)行開(kāi)發(fā)工作,那么就需要使用到 Git 的客戶(hù)端工具來(lái)連接到 GitHub扬蕊,再克隆代碼到本地搀别。如果您是重度的 GUI 使用者,那么有很多 GUI 客戶(hù)端可以選擇尾抑,在 Git 的官網(wǎng)就專(zhuān)門(mén)有個(gè)頁(yè)面列出了業(yè)內(nèi)的 GUI 客戶(hù)端歇父。

但遺憾的是往往 GUI 客戶(hù)端只能提供 Git 部分的功能,如果想要享受到 Git 自底向上強(qiáng)大的功能再愈,使用命令行的方式來(lái)操作 Git 是不二之選榜苫。建議無(wú)論您是否擅長(zhǎng)使用命令行工作,都可以嘗試使用命令行方式來(lái)操作 Git翎冲。本文將只介紹如何從命令行來(lái)連接到 GitHub垂睬。

安裝 Git

使用命令行方式操作 Git 工具,需要本地安裝 Git抗悍。注意羔飞,這里沒(méi)有使用 "Git 客戶(hù)端" 一詞,因?yàn)?Git 作為一個(gè)開(kāi)源版本控制系統(tǒng)檐春,本身既可以作為客戶(hù)端工具,也可以用于建立服務(wù)器端代碼庫(kù)么伯,所以本質(zhì)上 Git 作為工具來(lái)講沒(méi)有客戶(hù)端和服務(wù)器端之分疟暖。

本地安裝 Git 十分簡(jiǎn)單。

對(duì)于 Windows 用戶(hù)田柔,可以下載 Git For Windows 工具俐巴。下載安裝成功之后,我們可以得到一個(gè) Git Bash 工具硬爆,它是一個(gè)類(lèi) Linux Bash 工具欣舵。在該工具中我們可以直接執(zhí)行 Git 相關(guān)命令。如圖 1 所示:

圖 1. Git Bash
image

點(diǎn)擊查看大圖

對(duì)于 Mac 和 Linux 用戶(hù)缀磕,只需通過(guò)對(duì)應(yīng)的包管理工具安裝即可缘圈,如清單 1 所示:
清單 1. Mac 和 Linux 下安裝 Git

$ brew install git         # For Mac
$ apt-get install git      # For Ubuntu
# yum install git          # For RedHat EL, CentOS

使用 Git 克隆 GitHub 代碼庫(kù)

安裝 Git 成功之后劣光,我們就可以使用 Git 克隆 GitHub 上的代碼庫(kù),本節(jié)仍然以我的代碼庫(kù) repo-for-developerworks 為例糟把。

GitHub 提供了兩種克隆方式:HTTPS 和 SSH绢涡。我們可以點(diǎn)擊倉(cāng)庫(kù)頁(yè)面上的 **Clone or download **按鈕來(lái)查看用于克隆的鏈接,同時(shí)可以點(diǎn)擊浮動(dòng)框右上角的 Use SSH/Use HTTPS 換我們想要克隆的 link遣疯,如圖 2 和 圖 3 所示雄可。注意,這里只是切換查看不同的鏈接缠犀,而不是設(shè)置代碼庫(kù)不同的鏈接方式数苫。

圖 2. 查看 HTTPS 克隆鏈接
image

點(diǎn)擊查看大圖

圖 3. 查看 SSH 克隆鏈接
image

點(diǎn)擊查看大圖

由此我們可以獲得兩個(gè) URL:

  • HTTPS 鏈接:https://github.com/caozhi/repo-for-developerworks.git
  • SSH 鏈接:git@github.com:caozhi/repo-for-developerworks.git

使用 HTTPS 進(jìn)行克隆

由于代碼庫(kù)是開(kāi)放的,因此使用 HTTPS 方式克隆時(shí)辨液,無(wú)需 GitHub 用戶(hù)名密碼虐急,如清單 2 所示:

清單 2. 使用 HTTPS 進(jìn)行克隆
caozhi@ clone$ git clone https://github.com/caozhi/repo-for-developerworks.git
Cloning into 'repo-for-developerworks'...
remote: Counting objects: 14, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 14 (delta 3), reused 5 (delta 1), pack-reused 0
Unpacking objects: 100% (14/14), done.

順便提一下,進(jìn)行 pull 和 fetch 操作時(shí)也無(wú)需用戶(hù)名密碼認(rèn)證室梅。因?yàn)?GitHub 的機(jī)制允許隨意免費(fèi)下載任何公開(kāi)的代碼庫(kù)戏仓,如若要 push 代碼需經(jīng)過(guò)認(rèn)證或者經(jīng)過(guò)作者同意才可。當(dāng)要進(jìn)行 push 時(shí)亡鼠,會(huì)出現(xiàn)提示要求輸入用戶(hù)名密碼赏殃,如清單 3 所示:
清單 3. HTTPS 方式下 push 代碼

caozhi@ repo-for-developerworks$ echo change >> README.md   ## make some modification
caozhi@ repo-for-developerworks$ git add .
caozhi@ repo-for-developerworks$ git commit -m "changes"
[master d774ecf] changes
 1 file changed, 1 insertion(+)
caozhi@ repo-for-developerworks$ git push
Username for 'https://github.com': caozhi0321@gmail.com    ## Enter GitHub account name
Password for 'https://caozhi0321@gmail.com@github.com':   ## Enter Password
Counting objects: 6, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 528 bytes | 528.00 KiB/s, done.
Total 6 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 1 local object.
To https://github.com/caozhi/repo-for-developerworks.git
   075c130..d774ecf  master -> master

使用 SSH 進(jìn)行克隆
使用 SSH 方式進(jìn)行克隆,需要一步額外的配置 SSH-KEY 的操作间涵。首先需要本地生成一個(gè) SSH Key仁热。我們可以借助 ssh-keygen 工具生成一對(duì) RSA 的秘鑰:私鑰 id_rsa 和公鑰 id_rsa.pub。生成的秘鑰文件會(huì)默認(rèn)放在 home 目錄下的 .ssh 目錄下勾哩,如圖 4 所示:

圖 4. 使用 ssh-keygen 生成 RSA 秘鑰
image

點(diǎn)擊查看大圖

先將 id_rsa.pub 公鑰文件的內(nèi)容復(fù)制到剪貼板抗蠢,如圖 5 所示,使用 cat id_rsa.pub 命令可以查看公鑰內(nèi)容思劳,隨后將該公鑰導(dǎo)入到 GitHub 里的賬戶(hù)之下迅矛。

圖 5. 查看 id_rsa.pub 公鑰文件
image

點(diǎn)擊查看大圖

在 GitHub 頁(yè)面右上角的頭像里點(diǎn)擊展開(kāi)一個(gè)下拉菜單,點(diǎn)擊 Settings 可以打開(kāi)個(gè)設(shè)置頁(yè)面潜叛,如圖 6 所示:

圖 6. 打開(kāi) GitHub 設(shè)置
image

點(diǎn)擊查看大圖

打開(kāi) **SSH and GPG keys **的配置頁(yè)面秽褒,點(diǎn)擊右上角的 New SSH key 按鈕,如圖 7 所示:

圖 7. 打開(kāi) SSH and GPG keys 的配置頁(yè)面
image

點(diǎn)擊查看大圖

在打開(kāi)的頁(yè)面中先設(shè)置一個(gè)您想導(dǎo)入的公鑰的名稱(chēng)威兜,再將前面復(fù)制的公鑰內(nèi)容粘貼到大文本框中销斟,點(diǎn)擊 Add SSH key 即可,如圖 8 所示:

圖 8. 輸入 Key 的名稱(chēng)及其內(nèi)容
image

頁(yè)面自動(dòng)跳轉(zhuǎn)回 SSH and GPG keys 設(shè)置頁(yè)面椒舵,您可以看到在我的賬號(hào)下成功新增了一個(gè) SSH Key蚂踊,如圖 9 所示:

圖 9. 查看已經(jīng)添加的 Key
image

點(diǎn)擊查看大圖

此時(shí)我們可以使用 SSH 的方式進(jìn)行代碼克隆,還可以使用 ssh -T 命令檢測(cè)是否配置成功, 如清單 4 和 5 所示:

清單 4. 使用 SSH 方式克隆
caozhi@ $ git clone git@github.com:caozhi/repo-for-developerworks.git
Cloning into 'repo-for-developerworks'...
remote: Counting objects: 20, done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 20 (delta 5), reused 10 (delta 2), pack-reused 0
Receiving objects: 100% (20/20), done.
Resolving deltas: 100% (5/5), done.
清單 5. 檢測(cè) SSH 是否配置成功
caozhi@bogon:~$ ssh -T git@github.com
Hi caozhi! You've successfully authenticated, but GitHub does not provide shell access.

使用 SSH 的方式進(jìn)行克隆笔宿,將使得我們本地與 GitHub 之間建立了信任連接犁钟,也就意味著之后所有需要進(jìn)行用戶(hù)認(rèn)證的地方都不再需要顯式地用戶(hù)名密碼認(rèn)證棱诱。例如 git push 會(huì)直接通過(guò) SSH 進(jìn)行認(rèn)證。經(jīng)驗(yàn)表明特纤,使用 SSH 的另一個(gè)好處是在網(wǎng)絡(luò)環(huán)境較差的情況下军俊,其穩(wěn)定性要高于 HTTPS 連接。

至此捧存,我們成功地使用 Git 命令行方式克隆了代碼庫(kù)粪躬,之后就可以進(jìn)行正常的日常開(kāi)發(fā)。

使用 Git 克隆遠(yuǎn)程倉(cāng)庫(kù)

當(dāng)一個(gè)開(kāi)發(fā)者剛進(jìn)入某一項(xiàng)目昔穴,一般來(lái)說(shuō)他所要做的第一件事是克隆遠(yuǎn)程倉(cāng)庫(kù)到本地镰官,以進(jìn)行本地開(kāi)發(fā)工作。遠(yuǎn)程倉(cāng)庫(kù)可以是來(lái)自于 GitHub 或者 GitLab 等代碼托管服務(wù)吗货,也可以是項(xiàng)目組自己所搭設(shè)的 Git 服務(wù)器泳唠。無(wú)論是哪種遠(yuǎn)程倉(cāng)庫(kù),都可以使用 git clone 命令 git clone <repository> [local_path] 將其從遠(yuǎn)端克隆到本地宙搬。命令中間的 <repository> 根據(jù)遠(yuǎn)端倉(cāng)庫(kù)提供的連接方式不同笨腥,其形式可能不同,例如:

  • GitHub 的 HTTPS 連接:
    https://github.com/caozhi/repo-for-developerworks.git
  • GitHub 的 SSH 連接:
    git@github.com:caozhi/repo-for-developerworks.git
  • 自建倉(cāng)庫(kù)的 SSH 連接:
    git_user@192.168.0.1:/usr/local/repo-for-developerworks.git

其中前兩種 GitHub 的連接方式勇垛,其倉(cāng)庫(kù)的連接字符串可以在 GitHub 的對(duì)應(yīng)倉(cāng)庫(kù)頁(yè)面中找到脖母,如前圖 2圖 3所示。

第三種自建倉(cāng)庫(kù)的 URL 一般需要提供遠(yuǎn)端服務(wù)器上的賬號(hào)闲孤、host 和路徑谆级。以上面例子中的連接字符串git_user@192.168.0.1:/usr/local/repo-for-developerworks.git 為例:

  • git_user 是服務(wù)器上對(duì)代碼庫(kù)目錄有訪問(wèn)權(quán)限的賬號(hào)。
  • 192.168.0.1 是遠(yuǎn)端服務(wù)器的 IP讼积,也可以是主機(jī)名或者 URL肥照。
  • /usr/local/repo-for-developerworks.git 是服務(wù)器上代碼庫(kù)的根目錄。

git clone 命令中的 local_path 指定了本地想要存放代碼庫(kù)的地址勤众。該參數(shù)是可選參數(shù)舆绎,如果不指定該參數(shù)就會(huì)在本地新建一個(gè)以遠(yuǎn)程倉(cāng)庫(kù)名為命名的目錄,然后以該目錄為代碼庫(kù)根目錄们颜。圖 10 展示了在空目錄 clone_demo 中執(zhí)行不帶 local_path參數(shù)的 clone 命令:

圖 10. local_path 為空
image

點(diǎn)擊查看大圖

從截圖可以看到吕朵,git clone 命令在 clone_demo 目錄中創(chuàng)建了一個(gè) repo-for-developerworks 的代碼庫(kù)目錄。

圖 11 展示了在目錄 clone_demo 中執(zhí)行帶 local_path 參數(shù)的 clone 命令:

圖 11. local_path 參數(shù)為指定路徑
image

點(diǎn)擊查看大圖

從截圖可以看到掌桩,git clone 命令在 clone_demo 目錄中新建了一個(gè)我們指定的 local_dev-repo 目錄,并將其作為本地代碼庫(kù)的根目錄姑食。

圖 12 展示了在空目錄 clone_demo2 中執(zhí)行 local_path 為當(dāng)前目錄的 clone 命令:

圖 12. local_path 參數(shù)為當(dāng)前目錄
image

點(diǎn)擊查看大圖

我們知道一般操作系統(tǒng)將一個(gè)英文句點(diǎn)表示當(dāng)前目錄波岛,因此從截圖可以看出,當(dāng) local_path 指定為當(dāng)前目錄時(shí)音半,git clone命令會(huì)直接將當(dāng)前目錄作為本地代碼庫(kù)的根目錄则拷。

當(dāng)然 Git 還提供其它的連接方式如 File贡蓖、FTP。感興趣的讀者可以自己使用 Git 搭一個(gè) Git 服務(wù)器嘗試使用 File 和 FTP 方式進(jìn)行連接煌茬。

默認(rèn)情況下斥铺,git clone 會(huì)將遠(yuǎn)端代碼庫(kù)全部克隆到本地。Git 還支持只克隆特定分支到本地坛善。我們可以使用 git clone -b**branchname** --single-branch git@URL local_path 命令, 如圖 13 所示:

圖 13. 克隆特定分支
image

點(diǎn)擊查看大圖

Git 的基本配置

在克隆了代碼庫(kù)之后晾蜘,我們一般仍需要對(duì) Git 做一些基本的配置才能使用 Git 進(jìn)行日常工作。Git 配置的作用域主要有三種:System眠屎、Global 和 Local剔交,分別對(duì)應(yīng)的配置文件地址為:

  • System:/etc/gitconfig。系統(tǒng)級(jí)別有效改衩。
  • Global:home 目錄下的 ~/.gitconfig 文件岖常。用戶(hù)級(jí)別有效。
  • Local:代碼庫(kù)目錄的 .git/config 文件葫督。代碼庫(kù)級(jí)別有效竭鞍。

另外我們也可以使用 git config --system -lgit config --global -l橄镜,git config --local -l 命令分別列出三個(gè)作用域下的配置偎快。跟 Linux 操作系統(tǒng)的環(huán)境變量配置類(lèi)似,Git 在執(zhí)行命令中會(huì)首先查看 local 配置蛉鹿,如果沒(méi)有找到所需配置會(huì)再查看 global 配置滨砍,最后再查看 system 配置。

在使用 git config 命令進(jìn)行配置的時(shí)候妖异,也可以使用 git config --system惋戏,git config --globalgit config --local 三種不同的選項(xiàng)來(lái)修改不同作用域的配置他膳。

下面介紹一些重要或有用的 Git 配置响逢。

配置 user 信息

配置 user 信息在 Git 中是十分重要的一個(gè)步驟, username 和 email 不能為空,它們將會(huì)被記錄在每一條該 user 的 commit 信息中棕孙,如圖 14 所示:

圖 14. 查看 commit 的 user 信息
image

我們可以配置 user.nameuser.email 的值來(lái)配置 user 信息舔亭,如清單 6 所示:

清單 6. 配置 user.name 和 user.email
git config --global user.name "caozhi"
git config --global user.email "caozhi0321@gmail.com"

也可以將上述命令中的 --global改成 --local來(lái)修改只對(duì)代碼庫(kù)作用域有效的配置。

配置命令的別名
Git 提供了很多有用的命令蟀俊,我們可以將一些比較常用的命令設(shè)置上別名钦铺,提高工作效率。例如我們可以將 git log --abbrev-commit 設(shè)置一個(gè)別名 lg肢预,使得查看 log 時(shí)只需要顯示 commit id 的短名稱(chēng)矛洞,如: git config --global alias.lg "log --abbrev-commit"

設(shè)置成功后就可以使用 git lg 來(lái)查看 commit 日志,如圖 15 所示:

圖 15. 短名稱(chēng)的日志
image

點(diǎn)擊查看大圖

當(dāng)然還可以設(shè)置一些其它的別名烫映,如清單 7 所示:

清單 7. 配置 st 和 cm 別名
git config --global alias.st "status"
git config --global alias.cm "commit"

別名可以根據(jù)自己的喜好和習(xí)慣去設(shè)置沼本。將常用的命令設(shè)為短別名將大大提高工作效率噩峦。

查看配置

配置成功后可以使用 git config --global -l 命令查看配置,如圖 16 所示:

圖 16. 查看配置
image

點(diǎn)擊查看大圖

使用 Config 文件進(jìn)行配置

除了使用命令之外抽兆,也可以直接編輯 config 文件進(jìn)行相關(guān)配置识补,如圖 17 所示:

圖 17. ~/.gitconfig 文件里的配置
image

設(shè)置 Git 忽略提交規(guī)則

在進(jìn)行完代碼庫(kù)克隆和簡(jiǎn)單的配置之后,接下來(lái)我們可以根據(jù)項(xiàng)目需要配置一些文件忽略規(guī)則辫红。跟大多數(shù)的代碼庫(kù)管理工具一樣凭涂,Git 也可以對(duì)不需要被代碼庫(kù)所管理的文件或文件類(lèi)型進(jìn)行配置,使得提交代碼時(shí)厉熟,這些文件不會(huì)被提交到代碼庫(kù)中导盅。Git 是通過(guò)忽略清單.gitignore 文件進(jìn)行配置的。

通常我們會(huì)考慮將如下類(lèi)型的文件添加到忽略清單中:

  • 編譯過(guò)程的中間文件揍瑟,例如 *.class 文件白翻、*.o 文件、*.obj 文件等绢片。
  • 外部依賴(lài)的包或者工程編譯的包滤馍,例如 jar 包、lib 包底循、dll 包或 war 包等巢株。在有的項(xiàng)目實(shí)踐中,可能會(huì)將這類(lèi)依賴(lài)包也放到代碼庫(kù)中進(jìn)行管理熙涤,通常這不是一個(gè)很好的策略阁苞,因?yàn)檫@樣會(huì)顯著地增加代碼庫(kù)的大小,降低開(kāi)發(fā)者的工作效率祠挫。比較合理的方式是通過(guò)構(gòu)建工具的依賴(lài)管理功能來(lái)管理這些依賴(lài)包那槽,例如 Maven、Gradle 等等舔。
  • 編譯過(guò)程中骚灸,通過(guò)某種機(jī)制自動(dòng)生成的代碼。某些項(xiàng)目中慌植,可能會(huì)使用腳本或者 xsd schema 文件來(lái)生成代碼甚牲;這類(lèi)代碼只需要將用于自動(dòng)生成的腳本或者 schema 文件管理起來(lái)即可。
  • 項(xiàng)目的配置文件蝶柿。同一項(xiàng)目組的不同開(kāi)發(fā)者可能有不同的項(xiàng)目配置丈钙,或者配置中包含敏感信息,例如賬號(hào)密碼等交汤,這類(lèi)配置文件也應(yīng)該放到 ignore 清單里雏赦。
  • 某些 IDE 的工程配置文件,例如 Eclipse 的 settingproject 文件、Idea 的 .idea 目錄等喉誊。
  • 一些自動(dòng)生成的系統(tǒng)文件,例如 Windows 的 Thumbs.db 或者 MacOS 的.DS_Store 文件等纵顾。
  • 項(xiàng)目或者 IDE 的日志文件伍茄。

.gitignore 文件每行表示一個(gè)匹配模式(# 開(kāi)頭的行或者空行除外,# 用于注釋?zhuān)┦┯狻K褂?glob 模式來(lái)進(jìn)行匹配敷矫,glob 模式是一種簡(jiǎn)化的正則表達(dá)式,常用于來(lái)進(jìn)行路徑的模式匹配汉额。我們可以在代碼庫(kù)的根目錄或者任意子目錄添加.gitignore 文件曹仗,特定目錄下的.gitignore 文件使得忽略規(guī)則只在該目錄及其子目錄下有效。表 1 列出了常用的一些匹配模式的寫(xiě)法:

表 1. 常用匹配模式
模式 含義 示例
完整路徑 忽略完整路徑所定義的文件 dev/dev.conf
/path 以 / 開(kāi)頭蠕搜,只匹配當(dāng)前目錄下路徑為 path 的文件 `/a.java
/a.cpp`
path 不以 / 開(kāi)頭怎茫,匹配當(dāng)前目錄及其子目錄下所有文件 `*.o
web.xml`
path/ 以 / 結(jié)尾,用以只匹配目錄妓灌;path 目錄及其子目錄和文件會(huì)被忽略轨蛤;如果 path 是個(gè)文件,則不會(huì)被忽略 .settings/
帶 * 號(hào)的模式 置于文件中虫埂,用于匹配所有滿(mǎn)足規(guī)則的文件 `*.zip
*.jar`
帶 ** 的模式 置于路徑中祥山,用于匹配滿(mǎn)足 ** 前后的所有路徑 `Dev/**/dev.conf
*/.jar`
!path 在 ignore 文件中如果前面已經(jīng)定義了某個(gè)模式,但是又有一些特殊文件我們不想被忽略掉伏,我們可以用 ! 來(lái)匹配 *.jar ## 忽略所有 jar 包 !server.jar ## 希望server.jar 仍被跟蹤

注意:

  • 當(dāng)某個(gè)文件已經(jīng)被提交到代碼庫(kù)中被 Git 所管理起來(lái)之后缝呕,將該文件再添加進(jìn) .gitignore 文件是無(wú)效的,對(duì)該文件進(jìn)行修改時(shí)斧散,執(zhí)行 git status 操作之后仍然會(huì)提示該文件已被修改供常。針對(duì)已經(jīng)提交代碼庫(kù)的文件我們又想忽略其修改的場(chǎng)景,將會(huì)在本系列第四篇文章中介紹颅湘。
  • 每個(gè)目錄下都可以放單獨(dú)的 .gitignore 文件以控制子目錄的忽略規(guī)則话侧。
  • 即使已經(jīng)在忽略列表里,當(dāng)我們確實(shí)想要提交一些符合忽略規(guī)則的文件時(shí)闯参,仍可以使用 git -f add 加具體的文件路徑的方式將這些文件提交到庫(kù)中瞻鹏。如圖 18 所示:
圖 18. 強(qiáng)制添加被忽略的文件
image

點(diǎn)擊查看大圖

  • GitHub 有一個(gè)十分詳細(xì)的針對(duì)數(shù)十種項(xiàng)目及語(yǔ)言的 .gitignore 文件列表模板,可以在 https://github.com/github/gitignore 找到它鹿寨。

結(jié)束語(yǔ)

為使用 Git 和 GitHub 進(jìn)行日常開(kāi)發(fā)做準(zhǔn)備新博,本文詳細(xì)通過(guò)一些列演示向讀者講解了如何采用 SSH 和 HTTPS 兩種方式從 GitHub 克隆代碼庫(kù),如何進(jìn)行本地 Git 開(kāi)發(fā)環(huán)境的基礎(chǔ)配置脚草,如何配置 .gitignore 文件等赫悄。相信您在閱讀完本文之后將有能力自己初始化一套本地的 Git 環(huán)境。

參考資源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末躏啰,一起剝皮案震驚了整個(gè)濱河市趁矾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌给僵,老刑警劉巖毫捣,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唠亚,死亡現(xiàn)場(chǎng)離奇詭異蔬啡,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)狮鸭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)胡本,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)牌柄,“玉大人,你說(shuō)我怎么就攤上這事侧甫∩河叮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵披粟,是天一觀的道長(zhǎng)咒锻。 經(jīng)常有香客問(wèn)我,道長(zhǎng)守屉,這世上最難降的妖魔是什么惑艇? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮拇泛,結(jié)果婚禮上滨巴,老公的妹妹穿的比我還像新娘。我一直安慰自己俺叭,他們只是感情好恭取,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著熄守,像睡著了一般蜈垮。 火紅的嫁衣襯著肌膚如雪耗跛。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天攒发,我揣著相機(jī)與錄音调塌,去河邊找鬼。 笑死惠猿,一個(gè)胖子當(dāng)著我的面吹牛烟阐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播紊扬,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼唉擂!你這毒婦竟也來(lái)了餐屎?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤玩祟,失蹤者是張志新(化名)和其女友劉穎腹缩,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體空扎,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡藏鹊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了转锈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盘寡。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖撮慨,靈堂內(nèi)的尸體忽然破棺而出竿痰,到底是詐尸還是另有隱情,我是刑警寧澤砌溺,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布影涉,位于F島的核電站,受9級(jí)特大地震影響规伐,放射性物質(zhì)發(fā)生泄漏蟹倾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一猖闪、第九天 我趴在偏房一處隱蔽的房頂上張望鲜棠。 院中可真熱鬧,春花似錦培慌、人聲如沸岔留。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)献联。三九已至竖配,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間里逆,已是汗流浹背进胯。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留原押,地道東北人胁镐。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像诸衔,于是被迫代替她去往敵國(guó)和親盯漂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容