mirror of
https://github.com/k88hudson/git-flight-rules.git
synced 2025-06-16 04:44:07 -03:00
Compare commits
3 Commits
21ff580f4d
...
fcc7508195
Author | SHA1 | Date | |
---|---|---|---|
fcc7508195 | |||
e275970496 | |||
02f590f2e6 |
173
README_zh-TW.md
173
README_zh-TW.md
@ -121,11 +121,19 @@
|
||||
- [將版本庫導出為 Zip 檔](#%E5%B0%87%E7%89%88%E6%9C%AC%E5%BA%AB%E5%B0%8E%E5%87%BA%E7%82%BA-zip-%E6%AA%94)
|
||||
- [推送有相同名稱的分支與標籤](#%E6%8E%A8%E9%80%81%E6%9C%89%E7%9B%B8%E5%90%8C%E5%90%8D%E7%A8%B1%E7%9A%84%E5%88%86%E6%94%AF%E8%88%87%E6%A8%99%E7%B1%A4)
|
||||
- [追蹤檔案](#%E8%BF%BD%E8%B9%A4%E6%AA%94%E6%A1%88)
|
||||
- [我只想改變一個檔案名字的大小寫,而不修改內容](#%E6%88%91%E5%8F%AA%E6%83%B3%E6%94%B9%E8%AE%8A%E4%B8%80%E5%80%8B%E6%AA%94%E6%A1%88%E5%90%8D%E5%AD%97%E7%9A%84%E5%A4%A7%E5%B0%8F%E5%AF%AB%E8%80%8C%E4%B8%8D%E4%BF%AE%E6%94%B9%E5%85%A7%E5%AE%B9)
|
||||
- [我想從 Git 刪除一個檔案,但保留該檔案](#%E6%88%91%E6%83%B3%E5%BE%9E-git-%E5%88%AA%E9%99%A4%E4%B8%80%E5%80%8B%E6%AA%94%E6%A1%88%E4%BD%86%E4%BF%9D%E7%95%99%E8%A9%B2%E6%AA%94%E6%A1%88)
|
||||
- [我只想改變一個檔案名稱的大小寫,而不修改內容](#%E6%88%91%E5%8F%AA%E6%83%B3%E6%94%B9%E8%AE%8A%E4%B8%80%E5%80%8B%E6%AA%94%E6%A1%88%E5%90%8D%E7%A8%B1%E7%9A%84%E5%A4%A7%E5%B0%8F%E5%AF%AB%E8%80%8C%E4%B8%8D%E4%BF%AE%E6%94%B9%E5%85%A7%E5%AE%B9)
|
||||
- [我想在拉取時覆蓋本機檔案](#%E6%88%91%E6%83%B3%E5%9C%A8%E6%8B%89%E5%8F%96%E6%99%82%E8%A6%86%E8%93%8B%E6%9C%AC%E6%A9%9F%E6%AA%94%E6%A1%88)
|
||||
- [我想將檔案從 Git 移除,但保留檔案](#%E6%88%91%E6%83%B3%E5%B0%87%E6%AA%94%E6%A1%88%E5%BE%9E-git-%E7%A7%BB%E9%99%A4%E4%BD%86%E4%BF%9D%E7%95%99%E6%AA%94%E6%A1%88)
|
||||
- [我想將特定檔案還原至某個修訂版](#%E6%88%91%E6%83%B3%E5%B0%87%E7%89%B9%E5%AE%9A%E6%AA%94%E6%A1%88%E9%82%84%E5%8E%9F%E8%87%B3%E6%9F%90%E5%80%8B%E4%BF%AE%E8%A8%82%E7%89%88)
|
||||
- [我想列出提交或分支之間特定檔案的差異](#%E6%88%91%E6%83%B3%E5%88%97%E5%87%BA%E6%8F%90%E4%BA%A4%E6%88%96%E5%88%86%E6%94%AF%E4%B9%8B%E9%96%93%E7%89%B9%E5%AE%9A%E6%AA%94%E6%A1%88%E7%9A%84%E5%B7%AE%E7%95%B0)
|
||||
- [我想 Git 忽略特定檔案的更動](#%E6%88%91%E6%83%B3-git-%E5%BF%BD%E7%95%A5%E7%89%B9%E5%AE%9A%E6%AA%94%E6%A1%88%E7%9A%84%E6%9B%B4%E5%8B%95)
|
||||
- [用 Git 除錯](#%E7%94%A8-git-%E9%99%A4%E9%8C%AF)
|
||||
- [組態](#%E7%B5%84%E6%85%8B)
|
||||
- [我想為 Git 命令設定別名](#%E6%88%91%E6%83%B3%E7%82%BA-git-%E5%91%BD%E4%BB%A4%E8%A8%AD%E5%AE%9A%E5%88%A5%E5%90%8D)
|
||||
- [我想將空目錄加入到版本庫](#%E6%88%91%E6%83%B3%E5%B0%87%E7%A9%BA%E7%9B%AE%E9%8C%84%E5%8A%A0%E5%85%A5%E5%88%B0%E7%89%88%E6%9C%AC%E5%BA%AB)
|
||||
- [我想快取一個版本庫的使用者名稱和密碼](#%E6%88%91%E6%83%B3%E5%BF%AB%E5%8F%96%E4%B8%80%E5%80%8B%E7%89%88%E6%9C%AC%E5%BA%AB%E7%9A%84%E4%BD%BF%E7%94%A8%E8%80%85%E5%90%8D%E7%A8%B1%E5%92%8C%E5%AF%86%E7%A2%BC)
|
||||
- [我想 Git 忽略權限與檔案模式更動](#%E6%88%91%E6%83%B3-git-%E5%BF%BD%E7%95%A5%E6%AC%8A%E9%99%90%E8%88%87%E6%AA%94%E6%A1%88%E6%A8%A1%E5%BC%8F%E6%9B%B4%E5%8B%95)
|
||||
- [我想設定全域使用者資訊](#%E6%88%91%E6%83%B3%E8%A8%AD%E5%AE%9A%E5%85%A8%E5%9F%9F%E4%BD%BF%E7%94%A8%E8%80%85%E8%B3%87%E8%A8%8A)
|
||||
- [我不知道我做錯了什麼](#%E6%88%91%E4%B8%8D%E7%9F%A5%E9%81%93%E6%88%91%E5%81%9A%E9%8C%AF%E4%BA%86%E4%BB%80%E9%BA%BC)
|
||||
- [其他資源](#%E5%85%B6%E4%BB%96%E8%B3%87%E6%BA%90)
|
||||
- [書籍](#%E6%9B%B8%E7%B1%8D)
|
||||
@ -1640,23 +1648,100 @@ $ git push [遠端] refs/tags/[標籤名稱]
|
||||
|
||||
## 追蹤檔案
|
||||
|
||||
### 我只想改變一個檔案名字的大小寫,而不修改內容
|
||||
### 我只想改變一個檔案名稱的大小寫,而不修改內容
|
||||
|
||||
```sh
|
||||
(main)$ git mv --force myfile MyFile
|
||||
(main)$ git mv --force [原名稱] [新名稱]
|
||||
```
|
||||
|
||||
### 我想從 Git 刪除一個檔案,但保留該檔案
|
||||
### 我想在拉取時覆蓋本機檔案
|
||||
|
||||
```sh
|
||||
(main)$ git rm --cached log.txt
|
||||
(main)$ git fetch --all
|
||||
(main)$ git reset --hard origin/main
|
||||
```
|
||||
|
||||
### 我想將檔案從 Git 移除,但保留檔案
|
||||
|
||||
```sh
|
||||
(main)$ git rm --cached [檔案名稱]
|
||||
```
|
||||
|
||||
### 我想將特定檔案還原至某個修訂版
|
||||
|
||||
```sh
|
||||
$ git checkout [提交] -- [檔案名稱]
|
||||
```
|
||||
|
||||
還原多個檔案:
|
||||
|
||||
```sh
|
||||
$ git checkout [提交] -- [檔案名稱1] [檔案名稱2]
|
||||
```
|
||||
|
||||
### 我想列出提交或分支之間特定檔案的差異
|
||||
|
||||
```sh
|
||||
$ git diff [提交1]:[檔案名稱] [提交2]:[檔案名稱]
|
||||
# 或
|
||||
$ git diff [提交1] [提交2] -- [檔案名稱]
|
||||
```
|
||||
|
||||
當然,也可以用分支名稱來表示分支頂端的提交。
|
||||
|
||||
### 我想 Git 忽略特定檔案的更動
|
||||
|
||||
這可以用於不應該提交的組態模板或其他需在本機加入憑證的檔案。
|
||||
|
||||
```sh
|
||||
$ git update-index --assume-unchanged [要忽略的檔案]
|
||||
```
|
||||
|
||||
注意,這*並不會*將檔案從版本控制移除——只是在本機上忽略。要取消這個設定,以下命令清除此旗標:
|
||||
|
||||
```sh
|
||||
$ git update-index --no-assume-unchanged [要取消忽略的檔案]
|
||||
```
|
||||
|
||||
## 用 Git 除錯
|
||||
|
||||
[`git bisect`](https://git-scm.com/docs/git-bisect) 命令透過二分搜尋找到哪個提交引入了漏洞。
|
||||
|
||||
假設你在 `main` 分支上,想找到哪個提交導致程式出錯。你開始二分搜尋:
|
||||
|
||||
```sh
|
||||
$ git bisect start
|
||||
```
|
||||
|
||||
接著你應該指定哪個提交已經包含了這個漏洞,哪個沒有。例如,你目前所在的修訂版是壞的,而 `v1.1.1` 是好的:
|
||||
|
||||
```sh
|
||||
$ git bisect bad
|
||||
$ git bisect good v1.1.1
|
||||
```
|
||||
|
||||
接著 Git 會簽出你提供的範圍中間的提交,並詢問該提交是好是壞。你應該會看到類似這樣的訊息:
|
||||
|
||||
```sh
|
||||
Bisecting: 5 revision left to test after this (roughly 5 step)
|
||||
[c44abbbee29cb93d8499283101fe7c8d9d97f0fe] Commit message
|
||||
(c44abbb)$
|
||||
```
|
||||
|
||||
然後你可以檢查這個提交是好是壞。然後用以下命令告訴 Git:
|
||||
|
||||
```sh
|
||||
$ git bisect good # 如果是好的。
|
||||
$ git bisect bad # 如果是壞的。
|
||||
```
|
||||
|
||||
Git 會從範圍中選擇另一個提交,這個過程將重複直到沒有剩下的修訂版需要檢查,而命令最後會印出**第一個**壞提交。
|
||||
|
||||
## 組態
|
||||
|
||||
### 我想為 Git 命令設定別名
|
||||
|
||||
在 OS X 和 Linux 下,Git 的組態檔案儲存在 `~/.gitconfig`。可以在 `[alias]` 部分設定一些快捷別名(以及容易拼錯的),如:
|
||||
在 OS X 和 Linux 下,Git 組態檔案位於 `~/.gitconfig`。可以在 `[alias]` 部分設定一些快捷別名(以及容易拼錯的),如:
|
||||
|
||||
```vim
|
||||
[alias]
|
||||
@ -1681,18 +1766,84 @@ $ git push [遠端] refs/tags/[標籤名稱]
|
||||
zap = fetch -p
|
||||
```
|
||||
|
||||
### 我想快取一個版本庫的使用者名稱和密碼
|
||||
### 我想將空目錄加入到版本庫
|
||||
|
||||
假設有一個版本庫需要授權,這時你可以快取使用者名稱和密碼,而不用每次推送和拉取時都輸入一次:
|
||||
你無法這麼做!Git 不支援,但有一個技巧——你可以在該目錄創建包含以下內容的 `.gitignore` 檔案:
|
||||
|
||||
```
|
||||
# 忽略這個目錄中所有檔案。
|
||||
.
|
||||
# 除了這個檔案自身。
|
||||
!.gitignore
|
||||
```
|
||||
|
||||
另一個慣例是在該目錄中創建一個名為 `.gitkeep` 的空檔案:
|
||||
|
||||
```sh
|
||||
$ mkdir 空目錄
|
||||
$ touch 空目錄/.gitkeep
|
||||
```
|
||||
|
||||
你也可以改稱其為 `.keep`,將第二個命令改為 `touch 空目錄/.keep` 即可。
|
||||
|
||||
### 我想快取一個版本庫的使用者名稱和密碼
|
||||
|
||||
假設有一個版本庫需要身分認證,這時你可以快取使用者名稱和密碼,而不用每次推送和拉取時都輸入一次。憑證協助程式可以做到這點:
|
||||
|
||||
```sh
|
||||
# 設定 Git 使用憑證記憶快取。
|
||||
$ git config --global credential.helper cache
|
||||
# Set Git to use the credential memory cache.
|
||||
```
|
||||
|
||||
```sh
|
||||
# 設定快取在 1 小時後過期(以秒為單位)。
|
||||
$ git config --global credential.helper 'cache --timeout=3600'
|
||||
# Set the cache to timeout after 1 hour (setting is in seconds).
|
||||
```
|
||||
|
||||
顯示可能的憑證協助程式:
|
||||
|
||||
```sh
|
||||
$ git help -a | grep credential
|
||||
```
|
||||
|
||||
作業系統特定的憑證快取協助程式:
|
||||
|
||||
```sh
|
||||
# OS X:
|
||||
$ git config --global credential.helper osxkeychain
|
||||
```
|
||||
|
||||
```sh
|
||||
# Windows 2.7.3+:
|
||||
$ git config --global credential.helper manager
|
||||
```
|
||||
|
||||
```sh
|
||||
# Ubuntu 或其他使用 GNOME 的發行版:
|
||||
$ git config --global credential.helper gnome-keyring
|
||||
```
|
||||
|
||||
其他作業系統和發行版可能有不同的協助程式。
|
||||
|
||||
### 我想 Git 忽略權限與檔案模式更動
|
||||
|
||||
```sh
|
||||
$ git config core.fileMode false
|
||||
```
|
||||
|
||||
如果要設定為目前登入的使用者的預設行為:
|
||||
|
||||
```sh
|
||||
$ git config --global core.fileMode false
|
||||
```
|
||||
|
||||
### 我想設定全域使用者資訊
|
||||
|
||||
設定跨版本庫的使用者資訊:
|
||||
|
||||
```sh
|
||||
$ git config --global user.name [名字]
|
||||
$ git config --global user.email [email]
|
||||
```
|
||||
|
||||
## 我不知道我做錯了什麼
|
||||
|
Reference in New Issue
Block a user