Git 幫助
如果你忘記了命令或命令的選項,你可以使用 Git 幫助。
在命令列中,有幾種不同的使用幫助命令的方式:
git command -help
- 檢視特定命令的所有可用選項git help --all
- 檢視所有可能的命令
讓我們看看不同的命令。
Git -help 檢視特定命令的選項
任何時候,如果你需要幫助來記住特定命令的選項,你可以使用 git command -help
:
這將顯示特定命令的所有可用選項:
usage: git commit [] [--] ...
-q, --quiet suppress summary after successful commit
-v, --verbose show diff in commit message template
Commit message options
-F, --file read message from file
--author override author for commit
--date override date for commit
-m, --message
commit message
-c, --reedit-message
reuse and edit message from specified commit
-C, --reuse-message
reuse message from specified commit
--fixup use autosquash formatted message to fixup specified commit
--squash use autosquash formatted message to squash specified commit
--reset-author the commit is authored by me now (used with -C/-c/--amend)
-s, --signoff add a Signed-off-by trailer
-t, --template
use specified template file
-e, --edit force edit of commit
--cleanup how to strip spaces and #comments from message
--status include status in commit message template
-S, --gpg-sign[=]
GPG sign commit
Commit contents options
-a, --all commit all changed files
-i, --include add specified files to index for commit
--interactive interactively add files
-p, --patch interactively add changes
-o, --only commit only specified files
-n, --no-verify bypass pre-commit and commit-msg hooks
--dry-run show what would be committed
--short show status concisely
--branch show branch information
--ahead-behind compute full ahead/behind values
--porcelain machine-readable output
--long show status in long format (default)
-z, --null terminate entries with NUL
--amend amend previous commit
--no-post-rewrite bypass post-rewrite hook
-u, --untracked-files[=]
show untracked files, optional modes: all, normal, no. (Default: all)
--pathspec-from-file
read pathspec from file
--pathspec-file-nul with --pathspec-from-file, pathspec elements are separated with NUL character
Note: You can also use --help instead of -help to open the relevant Git manual page
Git help --all 檢視所有可能的命令
要列出所有可能的命令,可以使用 help --all
命令:
注意:這將顯示一個非常長的命令列表
$ git help --all
````
這將顯示所有可能的命令列表。
## 合併分支和解決衝突
緊急修復已經準備好,現在讓我們合併 master 和 emergency-fix 分支。
首先,我們需要切換到 master 分支:
`git checkout master`
現在,我們將當前分支(master)與 emergency-fix 合併:
git merge emergency-fix
更新 09f4acd..dfa79db
快進
index.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
由於 emergency-fix 分支直接來自於 master,並且在我們工作時沒有對 master 進行其他更改,Git 將其視為 master 的延續。因此,可以“快進”,將 master 和 emergency-fix 指向相同的提交。
由於 master 和 emergency-fix 現在本質上相同,我們可以刪除 emergency-fix,因為它不再需要:
git branch -d emergency-fix
已刪除分支 emergency-fix(是 dfa79db)。
### 合併衝突
現在我們可以切換到 hello-world-images 並繼續工作。新增另一個影像檔案(img\_hello\_git.jpg)並更改 index.html,以便顯示它:
git checkout hello-world-images
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>
<h1>Hello world!</h1>
<div><img src="img_hello_world.jpg" alt="Hello World from Space" style="width:100%;max-width:960px"></div>
<p>This is the first file in my new Git Repo.</p>
<p>A new line in our file!</p>
<div><img src="img_hello_git.jpg" alt="Hello Git" style="width:100%;max-width:640px"></div>
</body>
</html>
現在,我們已經完成了在該分支上的工作,可以為該分支暫存並提交:
git add --all
git commit -m "added new image"
我們看到 index.html 在兩個分支中都發生了更改。現在我們準備將 hello-world-images 合併到 master 中。但是,我們最近在 master 中所做的更改會發生什麼?
git checkout master
git merge hello-world-images
自動合併 index.html
合併衝突(內容):index.html 中的合併衝突
自動合併失敗;解決衝突,然後提交結果。
合併失敗,因為在 index.html 的不同版本之間存在衝突。讓我們來檢查狀態:
git status
在 master 分支上,你有未解決的路徑。
(解決衝突並執行 "git commit")
(使用 "git merge --abort" 中止合併)
要提交的更改:
新檔案:img\_hello\_git.jpg
新檔案:img\_hello\_world.jpg
未解決的路徑:
(使用 "git add ..." 標記解決)
兩者修改: index.html
這證實了 index.html 中存在衝突,但影像檔案已經準備好並暫存以進行提交。
因此,我們需要解決衝突。在編輯器中開啟檔案:
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>
<h1>Hello world!</h1>
<div><img src="img_hello_world.jpg" alt="Hello World from Space" style="width:100%;max-width:960px"></div>
<p>This is the first file in my new Git Repo.</p>
<<<<<<< HEAD
<p>This line is here to show how merging works.</p>
<p>A new line in our file!</p>
<div><img src="img_hello_git.jpg" alt="Hello Git" style="width:100%;max-width:640px"></div>
hello-world-images
</body>
</html>
我們可以看到不同版本之間的差異,並按照我們的需求進行編輯:
```html
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>
<h1>Hello world!</h1>
<div><img src="img_hello_world.jpg" alt="Hello World from Space" style="width:100%;max-width:960px"></div>
<p>This is the first file in my new Git Repo.</p>
<p>This line is here to show how merging works.</p>
<div><img src="img_hello_git.jpg" alt="Hello Git" style="width:100%;max-width:640px"></div>
</body>
</html>
```
現在我們可以暫存 index.html 並檢查狀態:
```bash
git add index.html
git status
```
在 master 分支上,所有衝突都已解決,但你仍在合併中。
(使用 "git commit" 完成合並)
要提交的更改:
新檔案:img\_hello\_git.jpg
新檔案:img\_hello\_world.jpg
修改: index.html
衝突已解決,我們可以使用提交來完成合並:
```bash
git commit -m "merged with hello-world-images after fixing conflicts"
```
然後刪除 hello-world-images 分支:
```bash
git branch -d hello-world-images
```
```bash
已刪除分支 hello-world-images(是 1f1584e)。
```
現在你對分支和合並的工作方式有了更好的瞭解。是時候開始與遠端倉庫一起工作了!
## Git .gitignore 檔案:建立、示例規則和模式匹配
`.gitignore` 檔案是用於指定 Git 忽略的檔案和資料夾的配置檔案。這意味著 Git 不會跟蹤或包含在版本控制中,但它們仍然存在於你的工作目錄中。以下是關於`.gitignore`檔案的詳細資訊:
建立\*\*`.gitignore`\*\*檔案
要建立一個`.gitignore`檔案,請按照以下步驟操作:
1. 開啟終端或命令列工具。
2. 導航到你的 Git 儲存庫的根目錄。
3. 建立`.gitignore`檔案。你可以使用以下命令:`touch .gitignore`。這將在儲存庫的根目錄中建立一個`.gitignore`檔案。
4. 使用文字編輯器開啟`.gitignore`檔案,你可以新增你要忽略的檔案和資料夾的規則。
示例 `.gitignore` 檔案
下面是一個示例`.gitignore`檔案的內容,演示了一些忽略規則:
```log
# 忽略所有 .log 檔案
*.log
# 忽略任何名為 "temp" 的目錄中的所有內容
/temp/
# 忽略所有 .zip 和 .rar 壓縮檔案
*.zip
*.rar
# 忽略特定檔案
config.txt
# 忽略特定資料夾及其內容
bin/
build/
```
這個`.gitignore`檔案包含了各種忽略規則,例如忽略所有`.log`檔案、名為"temp"的目錄、`.zip`和`.rar`壓縮檔案、`config.txt`檔案以及`bin/`和`build/`資料夾及其內容。
`.gitignore` 檔案的規則如下:
- 模式匹配:`.gitignore`中的規則使用模式匹配來匹配檔案和資料夾。
- 行註釋:以`#`開頭的行將被視為註釋。
- 檔案匹配:你可以使用`*`來匹配任何字元,`?`來匹配單個字元,`[]`來匹配字符集,`[!...]`來否定字符集。
- 目錄匹配:如果模式以`/`結尾,則該模式僅匹配目錄。
- 遞迴匹配:使用``來匹配任何子目錄。
- 否定規則:使用`!`符號來否定已定義的規則。
示例規則包括:
- `*.log`:忽略所有副檔名為`.log`的檔案。
- `/temp/`:忽略名為"temp"的目錄及其內容。
- `bin/`:忽略名為"bin"的資料夾及其內容。
- `!important.log`:忽略所有`.log`檔案,但不包括名為"important.log"的檔案。
透過編輯`.gitignore`檔案,你可以自定義哪些檔案和資料夾應該被 Git 忽略,以便它們不會包含在版本控制中。這對於避免將不必要的或敏感檔案提交到版本控制中非常有用。
## 最後
為了方便其他裝置和平臺的小夥伴觀看往期文章:
微信公眾號搜尋:`Let us Coding`,關注後即可獲取最新文章推送
看完如果覺得有幫助,歡迎 點贊、收藏、關注