2.1 Git 基礎(chǔ) - 獲取 Git 倉(cāng)庫(kù)
方式有兩種
- 在現(xiàn)有目錄中初始化倉(cāng)庫(kù)
- 克隆現(xiàn)有的倉(cāng)庫(kù)
在現(xiàn)有倉(cāng)庫(kù)中初始化倉(cāng)庫(kù)
git init
git add .
git commit -m "balabala"
克隆現(xiàn)有的倉(cāng)庫(kù)
git clone url
git clone url rename
2.2 Git 基礎(chǔ) - 記錄每次更新到倉(cāng)庫(kù)
工作目錄下每一個(gè)文件都不外乎兩個(gè)狀態(tài):已跟蹤和未跟蹤。已跟蹤的文件是指那些被納入了版本控制的文件,在上一次快照中有它們的記錄,在工作一段時(shí)間后叨粘,它們的狀態(tài)可能處于未修改繁疤,已修改或已放入暫存區(qū)童社。 工作目錄中除已跟蹤文件以外的所有其它文件都屬于未跟蹤文件,它們既不存在于上次快照的記錄中桶至,也沒(méi)有放入暫存區(qū)歌懒。 初次克隆某個(gè)倉(cāng)庫(kù)的時(shí)候啦桌,工作目錄中的所有文件都屬于已跟蹤文件,并處于未修改狀態(tài)歼培。
查看當(dāng)前文件狀態(tài)
git status
On branch master
nothing to commit, working directory clean
echo 'My Project' > README
git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
README
nothing added to commit but untracked files present (use "git add" to track)
跟蹤新文件
git add README
git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README
git add
命令使用文件或者目錄路徑作為參數(shù)震蒋;如果參數(shù)是目錄的路徑,該命令將遞歸的跟蹤該目錄下的所有文件躲庄。
暫存已修改的文件
如果我們這個(gè)時(shí)候把 README
文件修改一下查剖,然后查看狀態(tài)如下:
? git_test git:(master) ? git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: readme
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: readme
怎么回事? 現(xiàn)在 CONTRIBUTING.md
文件同時(shí)出現(xiàn)在暫存區(qū)和非暫存區(qū)噪窘。 這怎么可能呢笋庄? 好吧,實(shí)際上 Git 只不過(guò)暫存了你運(yùn)行 git add
命令時(shí)的版本倔监, 如果你現(xiàn)在提交直砂,CONTRIBUTING.md
的版本是你最后一次運(yùn)行 git add
命令時(shí)的那個(gè)版本,而不是你運(yùn)行 git commit
時(shí)浩习,在工作目錄中的當(dāng)前版本静暂。 所以,運(yùn)行了 git add
之后又作了修訂的文件谱秽,需要重新運(yùn)行 git add
把最新版本重新暫存起來(lái):
? git_test git:(master) ? git add readme
? git_test git:(master) ? gst
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: readme
忽略文件
一般我們總會(huì)有些文件無(wú)需納入 Git 的管理洽蛀,也不希望它們總出現(xiàn)在未跟蹤文件列表。 通常都是些自動(dòng)生成的文件疟赊,比如日志文件郊供,或者編譯過(guò)程中創(chuàng)建的臨時(shí)文件等。 在這種情況下近哟,我們可以創(chuàng)建一個(gè)名為.gitignore
的文件驮审。
.gitignore
文件的格式規(guī)范如下:
- 所有空行或者以
#
開(kāi)頭的行都會(huì)被 Git 忽略。 - 可以使用標(biāo)準(zhǔn)的 glob 模式匹配吉执。
- 匹配模式可以以(
/
)開(kāi)頭防止遞歸疯淫。 - 匹配模式可以以(
/
)結(jié)尾指定目錄。 - 要忽略指定模式以外的文件或目錄戳玫,可以在模式前加上驚嘆號(hào)(
!
)取反峡竣。
所謂的 glob 模式是指 shell 所使用的簡(jiǎn)化了的正則表達(dá)式。 星號(hào)(
*
)匹配零個(gè)或多個(gè)任意字符量九;[abc]
匹配任何一個(gè)列在方括號(hào)中的字符(這個(gè)例子要么匹配一個(gè) a适掰,要么匹配一個(gè) b,要么匹配一個(gè) c)荠列;問(wèn)號(hào)(?
)只匹配一個(gè)任意字符类浪;如果在方括號(hào)中使用短劃線分隔兩個(gè)字符,表示所有在這兩個(gè)字符范圍內(nèi)的都可以匹配(比如[0-9]
表示匹配所有 0 到 9 的數(shù)字)肌似。 使用兩個(gè)星號(hào)(*
) 表示匹配任意中間目錄费就,比如a/**/z
可以匹配a/z
,a/b/z
或a/b/c/z
等
例子
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf
laravel 的例子 更多例子
vendor/
node_modules/
# Laravel 4 specific
bootstrap/compiled.php
app/storage/
# Laravel 5 & Lumen specific
bootstrap/cache/
.env.*.php
.env.php
.env
# Rocketeer PHP task runner and deployment package. https://github.com/rocketeers/rocketeer
.rocketeer/