[TOC]
# Permission denied (publickey)
~~~bash
# 更改`.ssh`文件夾權限
$ chmod 700 ~/.ssh
# 更改`.ssh/authorized_keys`文件權限
$ chmod 600 ~/.ssh/*
~~~
# `.gitkeep`
就個人而言,一般需要`.gitkeep` 地方,是希望完成以下功能:
* 使 git 忽略一個文件夾下的所有文件,并保留該文件夾
~~~sh
# .gitignore
# ignore all files in lib/
lib/*
# except for .gitkeep
!.gitkeep
# ignore TODO file in root directory,not subdir/TODO
/TODO
~~~
當`.gitignore` 采用上面的寫法時,git 會忽略 `lib` 文件夾下除了`.gitkeep` 外的所有文件。
# 下載 repo中 單個文件夾
## 借助 subversion
點擊進入我們要下載的 dict,url 地址為:https://github.com/starnightcyber/findSubDomains/**tree/master**/dict
將**tree/master**用**trunk**替換,即https://github.com/starnightcyber/findSubDomains/**trunk**/dict
使用命令如下:
~~~
# svn checkout https://github.com/starnightcyber/findSubDomains/trunk/dict
A dict/dns_servers.txt
A dict/next_sub.txt
A dict/next_sub_full.txt
A dict/subnames.txt
A dict/subnames_full.txt
Checked out revision 17.
~~~
這樣,我們就下載好了我們只需要使用的字典 dict,這種方式尤其是在項目很大的時候,而網速有不給力的情況下,特別方便。
## Sparse Checkout模式
Git1.7.0以后加入了 Sparse Checkout 模式,這使得 Check Out 指定文件或者文件夾成為可能。
具體實現如下:
```shell
$mkdir project\_folder
$cd project\_folder
$git init
$git remote add -f origin
```
上面的代碼會幫助你創建一個空的本地倉庫,同時將遠程Git Server URL加入到Git Config文件中。
接下來,我們在Config中允許使用Sparse Checkout模式:
```
$git config core.sparsecheckout true
```
接下來你需要告訴Git哪些文件或者文件夾是你真正想Check Out的,你可以將它們作為一個列表保存在 .git/info/sparse-checkout 文件中。
例如:
```
$echo “libs” >> .git/info/sparse-checkout
$echo “apps/register.go” >> .git/info/sparse-checkout
$echo “resource/css” >> .git/info/sparse-checkout
```
最后,你只要以正常方式從你想要的分支中將你的項目拉下來就可以了:
```
$git pull origin master
```
具體可參考 Git 的[Sparse checkout文檔](http://schacon.github.io/git/git-read-tree.html#_sparse_checkout)
[如何從 GitHub 上下載單個文件夾?](https://www.zhihu.com/question/25369412)
# 不小心把密碼上傳到 GitHub 了
## 使用專用工具 [BFG Repo-Cleaner](https://rtyley.github.io/bfg-repo-cleaner/)
就有個兄弟寫了個工具來一鍵解決咱們的問題。主頁在這,估計大家都能看懂吧?我再簡述一下,有沒有辦法直接把敏感信息替換成其他內容啊?有啊!
假如我的倉庫名字為`python_test_code`,先創建一個名為`password.txt`的文件,在其中一行一個輸入你的敏感信息,比如說密碼啦,郵箱啦,等等啦,它會進行搜索替換所有提交歷史中的該信息,最后運行這么一句 ((如果要清除的內容帶中文,記得編碼為 UTF-8 喲):
```java
java -jar bfg.jar --replace-text password.txt python_test_code
```
最后在 `force push`:
```
git push origin --force –all
```
# Git修改已經提交的用戶名信息
https://www.jianshu.com/p/93bb4d049955
[git 修改已提交的某一次的郵箱和用戶信息](https://segmentfault.com/q/1010000006999861)
- 介紹
- 1. Get Git - 安裝并且設置Git
- 2. Repository - 建立一個本地的repository
- 3. Commit to it - 檢查狀態、新增或修改commits
- 4. GitHubbin - 注冊GitHub帳號
- 5. Remote Control - 將repository做本地和遠程的連接
- 6. Forks and Clones - Fork和clone一個開源的計劃
- 7. Branches aren't just for Birds - 建立一個feature branch
- Git分支開發模型
- 8. It's a Small World - 邀請并和別人合作
- 9. Pull, Never Out of Date - 利用Push和pull來和GitHub.com同步
- 10. Requesting You Pull Please - 建立一個pull request
- 11. Merge Tada - Merge和刪除branches
- 學會 GitHub
- GitHub 使用指南
- git 與 github 模板配置
- GitHub Actions
- 實用技巧
- Git Flow
- Submodule子模塊
- 工作記錄
- 常用命令
- 幫助
- 資源
- 解疑答惑