repository, repo: 倉庫
commit: 遞交 提交
tracked/untracked
staged: 預存 暫存
安裝以後,設定使用者名稱和email
$ git config --global user.name "John Doe"
$ git config --global user.email [email protected]
-
把現有專案匯入到git中
-
從伺服器上複製現有的Git倉庫
在專案目錄底下:
$ git init
開始追蹤目錄底下所有檔案:
git add .
遞交commit
git commit -m "關於這次變更的敘述"
git clone 下載遠端repo
- 使用https
$ git clone https://github.com/ittakes1/git_practice.git git_practice
說明 git clone https://網址/帳號名/項目名.git 目錄名 目錄名可以自行設定,如果不寫,項目名就是項目名
- 使用ssh
$ git clone [email protected]:ittakes1/git_practice.git
說明 git clone git@網址:帳號名/項目名.git
工作目錄下的每一個檔案不是tracked已追蹤就是untracked未追蹤
已追蹤的檔案三種狀態
- 已修改
- 未修改
- 已預存
要開始追蹤一個新的檔案,可以使用 git add 命令; 要開始追蹤 README 檔案,你可以執行:
$ git add README.md
如果再次執行檢查狀態命令,可以看到 README.md 檔案現在是準備好被提交的「已追蹤」和「已預存」狀態:
$ git status
輸出
On branch master
Your branch is up-to-date with 'origin/master'.
簡潔版本 -s
現在你的預存區已被建構成你想要的,你可以開始提交你的變更; 記住:任何未預暫存的檔案——新增的、已修改的,自從你編輯它們卻尚未用 git add 預存的——將不會納入本次的提交中; 它們仍以「已修改」的身份存在磁碟中。 在目前情況下,假設你上次執行 git status 時,你看到所有檔案都已經被預存,因此你準備提交你的變更。 最簡單的提交方式是輸入 git commit:
$ git commit # 這麼做會啟動你選定的編輯器
或者
$ git commit -m "Story 182: Fix benchmarks for speed" # -m 選項後方直接輸入提交訊息
[master 463dc4f] Story 182: Fix benchmarks for speed
2 files changed, 2 insertions(+)
create mode 100644 README
[master 463dc4f] Story 182: Fix benchmarks for speed
提交到哪個分支(master)、提交的 SHA-1 校驗碼(463dc4f)
2 files changed, 2 insertions(+)
有多少檔案被更動,以及統計此提交有多少列被新增和被移除
在 git commit 命令加上 -a 選項,使 Git 在提交前自動預存所有已追蹤的檔案,讓你略過 git add 步驟:`
$ git commit -a -m 'added new benchmarks'
[master 83e38c7] added new benchmarks
1 file changed, 5 insertions(+), 0 deletions(-)
$git push origin master
- 使用https
$ git clone https://github.com/ittakes1/git_practice.git
說明 git clone https://網址/帳號名/項目名.git
- 使用ssh
$ git clone [email protected]:ittakes1/git_practice.git
說明 git clone git@網址:帳號名/項目名.git
gitignore - Specifies intentionally untracked files to ignore
-
Patterns which should be version-controlled and distributed to other repositories via clone (i.e., files that all developers will want to ignore) should go into a
.gitignore
file. -
Patterns which are specific to a particular repository but which do not need to be shared with other related repositories (e.g., auxiliary files that live inside the repository but are specific to one user’s workflow) should go into the
$GIT_DIR/info/exclude
file. -
Patterns which a user wants Git to ignore in all situations (e.g., backup or temporary files generated by the user’s editor of choice) generally go into a file specified by core.excludesFile in the user’s ~/.gitconfig. Its default value is $XDG_CONFIG_HOME/git/ignore. If $XDG_CONFIG_HOME is either not set or empty, $HOME/.config/git/ignore is used instead.
-
空白行不處理
-
以#開頭表示註解 Put a backslash ("") in front of the first hash for patterns that begin with a hash.
-
後綴空白不處理 unless they are quoted with backslash ("").
-
!邏輯非 which negates the pattern; any matching file excluded by a previous pattern will become included again. It is not possible to re-include a file if a parent directory of that file is excluded. Git doesn’t list excluded directories for performance reasons, so any patterns on contained files have no effect, no matter where they are defined. Put a backslash ("") in front of the first "!" for patterns that begin with a literal "!", for example, "!important!.txt".
-
目錄分隔符號/ is used as the directory separator. Separators may occur at the beginning, middle or end of the .gitignore search pattern.
-
以/開頭以避免路徑遞迴。(只忽略特定路徑;如果不以斜線開頭,則不管同名檔案或同名資料夾在哪一層都會被忽略。)
-
以/結尾代表是目錄。
-
glob模式: *, [abc], ?
檢視尚未預存的變更
想瞭解尚未預存的修改,輸入不帶其它參數的 git diff 這命令會比對「工作目錄」和「預存區」之間的版本, 然後顯示尚未被存入預存區的修改內容。
$ git diff
檢視已預存的變更
如果你想檢視你已經預存而接下來將會被提交的內容,可以使用 git diff --staged; 這個命令比對的對象是「預存區」和「最後一次提交」
$ git diff --staged
使用外部工具
git difftool --tool-help
git difftool --tool=vimdiff
要從 Git 中刪除一個檔案,你需要將它從已追蹤檔案中移除(更準確地說,是從預存區中移除),然後再提交; git rm 命令可完成此工作,它同時也會將該檔案從工作目錄中移除,如此它之後也不會身為未追蹤檔案而被你看到
$ git rm PROJECTS.md
最新的在上面
git log
git log --pretty=short
git log --graph 圖示分支
git branch
git branch -a 顯示local and remote 創建,切換分支 git checkout -b
git checkout -b list-dict 等於 git branch list-dict 加 git checkout list-dict 切換到分支
git checkout master 到master
git checkout - 到上一個 合併分支 list-dict 到 master
git checkout master
git merge —no-ff list-dict 回溯舊版 git reset
看log
git reflog
git merge --no-ff heroku/master