鍍金池/ 教程/ Java/ 更改而非文件
創(chuàng)建沖突
暫存更改
創(chuàng)建項(xiàng)目
Git 內(nèi)幕:.git 目錄
撤銷本地更改
移動(dòng)文件
移除 oops 標(biāo)簽
何為 Origin
再談結(jié)構(gòu)
撤銷暫存的更改
修正提交
別名
檢查狀態(tài)
給版本打標(biāo)簽
撤銷提交的更改
拉下共享的更改
變基
暫存與提交
合并
合并拉下的更改
更改而非文件
更改原始倉(cāng)庫(kù)
重置 master 分支
回顧克隆的倉(cāng)庫(kù)
變基 VS 合并
共享倉(cāng)庫(kù)
導(dǎo)航分支
重置 greet 分支
添加跟蹤的分支
獲得舊版本
克隆倉(cāng)庫(kù)
Git 內(nèi)幕:直接處理 Git 對(duì)象
再談設(shè)置
遠(yuǎn)程分支
從分支移除提交
合并回 master
查看分叉的分支
添加遠(yuǎn)程倉(cāng)庫(kù)
拉下更改
歷史
在 master 中更改
裸倉(cāng)庫(kù)
做更改
高級(jí)/將來(lái)的主題
推送更改
多個(gè)倉(cāng)庫(kù)
設(shè)置
提交更改
取得更改
托管你的 Git 倉(cāng)庫(kù)
創(chuàng)建分支
解決沖突

更改而非文件

Git 聚焦于文件的更改而非文件本身。當(dāng)你說 Git 添加文件時(shí),你并非在告訴 Git 要添加文件到倉(cāng)庫(kù)。而是說 Git 應(yīng)當(dāng)對(duì)文件的當(dāng)前狀態(tài)做記錄以便稍后提交。

我們將嘗試在本次實(shí)驗(yàn)中探索其中的差異。

初次更改:允許默認(rèn)名稱

如果命令行參數(shù)未提供,更改“Hello, World”程序來(lái)接受一個(gè)默認(rèn)值。

name = ARGV.first || "World"

puts "Hello, #{name}!"

添加更改

現(xiàn)在添加此次更改到 Git 的暫存區(qū)。

$ git add hello.rb

二次更改:添加注釋

現(xiàn)在給“Hello, World”程序添加一行注釋。

# Default is "World"
name = ARGV.first || "World"

puts "Hello, #{name}!"

檢查當(dāng)前狀態(tài)

$ git status

你應(yīng)該看到:

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   hello.rb
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   hello.rb
#

注意 hello.rb 在狀態(tài)中被列了兩次。第一次更改已被暫存,且準(zhǔn)備提交。第二次更改還未暫存。如果你現(xiàn)在提交,那么注釋不會(huì)保存到倉(cāng)庫(kù)中。

讓我們?cè)囋嚳础?/p>

提交

提交暫存的更改,然后重新檢查狀態(tài)。

$ git commit -m "Added a default value"
$ git status

你應(yīng)該看到:

$ git commit -m "Added a default value"
[master 582495a] Added a default value
 1 files changed, 3 insertions(+), 1 deletions(-)
$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   hello.rb
#
no changes added to commit (use "git add" and/or "git commit -a")

status 命令將告訴你 hello.rb 還有未記錄的更改,且不在暫存 區(qū)。

添加第二次更改

現(xiàn)在添加第二次更改到暫存區(qū),然后執(zhí)行 git status

$ git add .
$ git status

注意:我們使用當(dāng)前目錄(.)作為要添加的文件。這是一種添加當(dāng)前目錄及其子目錄下所有更改文件的習(xí)慣簡(jiǎn)寫方式。但因?yàn)樗砑铀袞|東,所以在做 add . 前檢查狀態(tài)是一個(gè)好主意,只是為了確定你沒有添加不想要的文件。

我想你已經(jīng)明白了 add . 這個(gè)技巧,但為了安全在余下的教程中我們將繼續(xù)直接添加文件。

你應(yīng)該看到:

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   hello.rb
#

現(xiàn)在第二次已經(jīng)暫存,且準(zhǔn)備提交。

提交第二次更改

$ git commit -m "Added a comment"