[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子模块
- 工作记录
- 常用命令
- 帮助
- 资源
- 解疑答惑