-
Notifications
You must be signed in to change notification settings - Fork 0
/
tools.Rmd
333 lines (239 loc) · 10.4 KB
/
tools.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
# tools {#tools}
## git 和 github
- push到github的时候每次都需要输入用户名密码
首先,克隆到本地的时候选择ssh方式
```sh
git clone [email protected]:<repo>
## 如果本地已经选择https方式克隆,可以先删除原来的远程仓库,重新添加
## ssh方式
# 查看本地clone方式
git remote -v
# 删除远程仓库
git remote rm origin
# 重新添加
git remote add origin [email protected]:<repo>
```
然后本地生成ssh密匙添加至github账户,获得访问github权限,详细步骤参考
[这里](https://github.com/waylau/github-help/blob/master/Generating%20SSH%20keys%20%E7%94%9F%E6%88%90%20SSH%20%E5%AF%86%E9%92%A5.md)
```sh
# 一路回车,在~/.ssh文件夹下生成了id_rsa文件
ssh-keygen -t rsa -C "<github账户邮箱"
# 拷贝~/.ssh/id_rsa.pub到github账户进行设置
```
最后push即可
```
git push --set-upstream origin master
```
- 修改commit的message
```sh
# 想要修改的commit的父提交hash值
git rebase -i <commit_hash>
# 修改要修改message行首的pick为r(reword),然后修改该条message,保存退出即可
# 如果同时修改github仓库的commit,强制push即可
git push -f
```
- 显示某一次提交中某个文件的变化
```sh
git log <commit_hash> <file_name>
```
- 删除远程仓库(如github)的错误提交,在本地处理好之后,如删除错误提交,然后强制push到远程进行修改
```sh
git push --force
```
- 删除远程分支
```sh
git push origin --delete <remote_branch>
```
- 修改本地仓库关联的远程仓库,提交修改至另一个远程仓库
```sh
git remote set-url origin https://github.com/yiluheihei/beginr.git
```
- [删除本地 untracted files](https://stackoverflow.com/questions/61212/how-to-remove-local-untracked-files-from-the-current-git-working-tree)
```sh
# 查看哪些文件将被删除
git clean -n
# 删除文件
git clean -f
# 删除文件和文件夹
git clean -f -d
# 删除 ignore 的文件
git clean -f -X
# 删除 ignore 和非 ignore 文件
git clean -f -x
```
- unstage `git add`的文件
```sh
git reset HEAD <file>
```
- 忽略本地文件修改
```sh
# 若文件状态为unstage
git checkout <file>
# 若文件已经通过`git add` stage,首先文件状态修改为unstage
git reset HEAD <file>
git checkout <file>
```
- 拉取远程分支时保持本地修改
```sh
# 备份当前工作区内容,从最近一次提交中读取内容
git stash
# 拉取远程分支内容
git pull <remote branch>
# 从stash中读取备份的内容
git stash pop
```
- 远程仓库已经有新的commit,在本地开发的时候没有pull到本地,就直接进行修改并
commit,这时候再push到远程仓库就会提示远程仓库中有本地不存在的commit。这时候就
需要在远程仓库基础上merge本地的最新commit
```sh
# 首先抓取远程仓库数据
git fetch
# 然后在本地分支内,在origin仓库的基础上变基提交,如果没有冲突,则直接基于远程
# 仓库合并了本地提交。如果有冲突,则解决冲突后合并
git rebase origin/master
```
- 删除已经提交的文件,并添加到ignore
```sh
# 从版本控制中的index中删除该文件
git rm -r --cached <file>
# 该文件添加至ignore,然后commit
git commit
```
- 恢复已经push到远程仓库的误删的文件
```sh
# 找到误删文件的commit
git log --diff-filter=D -- <filename>
# 恢复文件, ~n表示该commit的第n个祖先
git checkout <commit>~1 -- <filename>
```
- 查看仓库中代码行数
参考[这里](https://stackoverflow.com/questions/26881441/can-you-get-the-number-of-lines-of-code-from-a-github-repository)
```sh
git ls-files | xargs wc -l
# R 代码行数
git ls-files | grep '.R$' | xargs wc -l
```
- windows下命令行git中文显示乱码
设置环境变量`LESSCHARSET=utf-8`
## hugo
- 基于hugo采用blogdown建站的时候出现错误`panic: BUG: Expected valid escape code
after \, but got '\r'.`
是由于配置文件`config.toml`中采用多行字符中`"""`的换行符引起的`\`,去掉换行符即
可,参考[这](https://github.com/gcushen/hugo-academic/issues/852).
## docker
- 安装(centos)
```sh
curl -sSL get.docker.com -o get-docker.sh
# 可选择合适的源
sh get-docker.sh --mirror Aliyun
## 启动docker
sudo systemctl enable docker
sudo systemctl start docker
## docker 默认只能root用户才能运行
## 可以把需要用docker的用户加入docker用户组
sudo usermod -aG dokcer $USER
# 以docker 用户组登入
newgrp docker
```
- docker 配置国内源
参考[这](http://mirrors.ustc.edu.cn/help/dockerhub.html?highlight=docker),配置
文件`/etc/docker/daemon.json`中加入中科大源。
```
{
"registry-mirrors":
["https://docker.mirrors.ustc.edu.cn/"]
}
```
然后重启docker服务`sudo systemctl restart docker`。同时也可以添加阿里云源,
方法是注册阿里云开发账户后,访问https://cr.console.aliyun.com/#/accelerator,
点击镜像加速器,就看到加速器地址,添加进去即可。
- docker 中运行含图形界面的程序
参考[这里](https://stackoverflow.com/questions/24095968/docker-for-gui-based-environments)
和[这里](http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/)
```sh
# 1. 赋予其他用户访问本机x server的权利
xhost local:root # xhost +
# 挂载 X11 至docker
docker run -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY <the image>
```
## conda
- 设置清华源,参考[此](https://mirror.tuna.tsinghua.edu.cn/help/anaconda/)
```sh
channels:
- conda-forge
- bioconda
- defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
```
- 安装 biconda 上的工具的时候,可能出现软件版本冲突错误: `UnsatisfiableError:
The following specifications were found to be incompatible with each other:
Output in format: Requested package -> Available versions`.
可能是 conda 中 channels 顺序设置错误,按照 [bioconda 文档中建议的顺序](https://bioconda.github.io/user/install.html#set-up-channels)(`conda-forge > bioconda > defaults`)设置. 或参考[这里](https://stackoverflow.com/questions/64081302/conda-install-figtree/64084648#64084648).
Output in format: Requested package -> Available versions
- macOS 10.14 Mojave,conda安装包的时候设计到qt就出现错误,如`conda-forge::qt-5.9.7-h93ee506_1'. PermissionError(1, 'Operation not permitted')`
解决方法[在此](https://github.com/conda/conda/issues/8440#issuecomment-481167572)
```
# for base:
cd ~/anaconda3/bin
ls *.app
rm -rf *.app
conda update --all --yes
# for some_env:
cd ~/anaconda3/envs/some_env/bin
ls *.app
rm -rf *.app
conda update -n some_env --all --yes
```
## Zotero
### collecions (分类)
Zotero中可以把文献按层次进行分组(或子组),比如某一个课题或某一篇文章的参考文献
归为一个分类。相同文献条目可以划分到不同分类不会重复保存该条目的数据(条目只会
保存一次,不同分类下的该条目都指向它)。根目录(My Library)会显示所有条目,在根目
录下多次出现的条目才是重复条目。
常用的与分类有关的操作
- 移动分类,可以在左边面板中利用鼠标拖拽。
- 分类的排序,默认按字母顺序排列
- 条目添加到另一个分类,类似于copy,直接鼠标拖拽该条目到另一个分类即可。
- 条目移动到另一个分类,类似于move,在拖动的时候按住`Mac: Cmd`或`Windows:Shift`
键。
- 删除分类,右键点击`删除分类`,删除分类及其子分类,但不会删除分类中的条目,条目
在根目录下仍存在(点击`删除分类及条目`删除分类下条目)。
- 删除分类中的条目
- remove, 在右边面板中选中相应分类下的条目后按`Delete`删除,或者是点击
右键选择`从分类中删除条目`, 只会删除该分类下的条目,不会删除其他任何分类中
相同的条目(如根目录).
- delete, `Cmd/Ctrol+delete`移动条目到回收站,或点击右键移动条目至回收站。
- 查看条目在哪些分类中,选中条目后,按住`Mac:Option/Windows:Control/Linux:Alt`,
一定时间后左侧面板中含有该条目的分类会高亮显示。
Zotero自带特殊分类
- 重复条目(Duplicated Items), 重复的条目可以帮助我们合并重复条目。
- 未分类条目(Unfiled Items), 没有在任何分类中(比如位于根目录下)
- 回收站(Trash), 类似于电脑的回收站,可以重新恢复相应条目、永久删除条目等。
项目默认30天后删除。
此外,子分类中的条目默认不会显示在父分类中,可以通过设置`高级(Advanced Pane) ->
设置编辑器(Config Editor), 把`extensions.zotero.recursiveCollections`设置为
`True`
### 合并重复条目
重复条目分类中列出了相应Library下的重复条目。合并重复条目(不是删除重复条目),
这样可以保证条目所有的分类和标签都能保留,而删除重复条目可能删除相应的信息,并且
word插件也会自动识别合并。
在重复条目分类中选中相应的重复条目,然后在右侧面板中进行合并即可。也可以在相应的
分类中选择相同的条目点击右键`合并条目`。
## VSCode
### python
- python代码块有空行的时候,通过REPL运行的时候会出现缩进错误, 这是因为空行中没
有缩进,设置`editor.trimAutoWhitespace": false`.