继任者: Julia, Python, R。
Which numerical computing language is best: Julia, MATLAB, Python or R?
全面对比 MATLAB、Julia、Python,谁在科学计算中更胜一筹?
有个国产软件号称不错,没有用过: truffer
插件列表:
快捷键:
refer link Use ssh client from Git instead of Windows inbuilt SSH client. E.g. set VS Code to use C:\Program Files\Git\usr\bin\ssh.exe instead of C:\Windows\System32\OpenSSH\ssh.exe.
Steps:
In VS Code navigated to [File] -> [Preferences] -> [Settings] -> Search remote.ssh.path Input C:\Program Files\Git\usr\bin\ssh.exe Alternatively:
Update PATH environment variable to point to Git bin before Windows System32. Type “env” in Start bar to edit System (or account) environment variables. Select Path and hit edit. Add C:\Program Files\Git\usr\bin\ssh.exe to the list and move it to the top of the list.
单向登陆的操作过程(能满足上边的目的):
1、登录A机器
2、ssh-keygen -t [rsa | dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub |
3、将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub » ~/.ssh/authorized_keys
4、大功告成,从A机器登录B机器的目标账户,不再需要密码了;(直接运行 #ssh 192.168.20.60 )
解决方案:
windows命令行下:
SET REMOTEHOST=username@hostname
scp %USERPROFILE%.ssh\id_rsa.pub %REMOTEHOST%:~/tmp.pub ssh %REMOTEHOST% “mkdir
-p ~/.ssh && chmod 700 ~/.ssh && cat ~/tmp.pub >> ~/.ssh/authorized_keys
&& chmod 600 ~/.ssh/authorized_keys
&& rm -f ~/tmp.pub”
如果此方法不行,可直接登录服务器去创建修改 /.ssh/authorized_keys
解决方案:
在VS code工具栏File->preference->settings搜索 remote.SSH.showLoginTerminal,并*勾选上
解决方案:
在 /etc/ssh/sshd-config更改AllowTCPForwarding - yes
解决方案:
确认如下三个权限是否正确(显示隐藏文件命令:ls -la)
【1】
chmod 700 /home/username
【2】
chmod 700 ~/.ssh/
【3】
chmod 600 ~/.ssh/authorized_keys
确认public_key在服务器上是否正确:cat ~/.ssh/authorized_keys
连接ssh server时,即使输入正确的密码,仍然有以上提示。
解决方法:
在TERMINAL中,首先,手动登录:
ssh 用户名@服务器地址
输入密码,登录成功后。
然后,再次连接ssh server,就可以成功了。
参考:原贴
$cd ~/.vim/plugged/
$git clone http://www.github.com/kana/vim-textobj-user
安装上这个插件就OK了.
vim .vimrc
配置let g:ycm_server_python_interpreter = ‘‘pthon3绝对路径’ 比如: let g:ycm_server_python_interpreter = ‘/usr/bin/python3.5’
参考了以下的贴子
一般只改用户家目录下面的 .vimrc 此配置文件只针对用户有效。 更改后需使用su - 用户名 来使配置生效(例如 su - zhang3)。
.vimrc为隐藏文件 使用ls -al可查看。
" update cscope index
map <F12> : call ReConnectCscope()<cr>
func! ReConnectCscope()
exec "cs kill 0"
exec "!./generate.sh"
exec "cs add cscope.out"
endfunc
其中,generate.sh文件要放到你自己当前的工作目录下,并更改文件属性为可执行文件。
$ chmod +x generate.sh
generate.sh文件的内容如下:
#!/bin/bash
date;
echo "ctags done......"
find -L . -name "*.h" -o -name "*.c" -o -name "*.cc" -o -name
find -L . -name "*.pl" >>cscope.files
date;
cscope -RCbq -i cscope.files;
ctags -R -L cscope.files;
echo "cscope done......"
date;
在你正在编辑文件过程中,按F12按键,开始更新cscope索引
回车
回车
cscope索引更新完成!
# ~/.vimrc内容如下:
if has("cscope") && filereadable("/usr/bin/cscope")
set csprg=/usr/bin/cscope
set csto=0
set cst
set nocsverb
" add any database in current directory
if filereadable("cscope.out")
cs add cscope.out
" else add database pointed to by environment
elseif $CSCOPE_DB != ""
cs add $CSCOPE_DB
endif
set csverb
endif
nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-\>i :cs find i <C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR>
" map F12 key
"Highlight all search pattern matches
set hls
"Map F12 to create ctags index in current directory
map <F12> :!ctags -R <CR><CR>
"A shotcut to execute the grep command
map mg :!grep <C-R><C-W> . -r <CR>
"change the comment color
hi Comment ctermfg=6
" for 'tags not found'
set tags=tags;
set autochdir
" 'ctags -R' in terminal
参考:原贴
索引 | git命令 | 解释 |
---|---|---|
1 | git init | 初始化一个新的Git库 |
2 | git config –global user.name <your-name> git config –global user.email <your-email> |
设置用户名和邮箱 |
3 | git clone <repository-url> | clone一个仓库 |
4 | git add <file> git add . |
将文件添加到暂存区 |
5 | git diff | 查看未暂存的更改 |
6 | git commit -m “message” | 提交暂存的更改 |
7 | git reset | 重置暂存区到上一个提交 |
8 | git status | 查看工作目录和暂存区的状态 |
9 | git rm <file> | 从索引和工作目录中删除文件 |
10 | git log | 查看提交历史 |
11 | git show <commit-hash> | 查看提交的元数据和内容更改 |
12 | git branch | 列出所有本地分支 |
13 | git branch <branch-name> | 创建一个新分支 |
14 | git branch -m <new-branch-name> | 重命名当前分支 |
15 | git branch -d <branch-name> | 删除一个分支 |
16 | git checkout <branch-name> | 切换到另一个分支 |
17 | git merge <branch-name> | 将指定分支合并到当前分支 |
18 | git remote add <name> <repository-url> | 创建与远程仓库的新连接 |
19 | git push <remote> <branch> | 将提交的更改推送到远程仓库 |
20 | git pull <remote> | 从远程仓库下载内容 |
21 | git gc | 清理不必要的文件并优化本地仓库 |
22 | git stash | 暂时移除未提交的更改并稍后保存 |
23 | git stash apply | 应用之前暂存的更改 |
$ git init . #创建仓库
$ git add text.txt #添加文件
$ git commit -m "write text.txt" #提交文件到仓库
$ git status
$ git diff #查看修改文件
$ git log
$ git log --pretty=oneline
$ git reset --hard commit id号 #(commit id号可只取前两位,为了避免相同,可以多取几位)
$ git reset --hard HEAD (查看当前版本)
$ git reset --hard HEAD^^ #(退到上一个版本.HEAD表示当前版本,HEAD^表示上一个版本,同理HEAD^^表示上上个版本。。。。不过这样太麻烦。所以如果要往上回退100个版本,则写成 HEAD~100)
$ git log
$ git log --pretty=oneline
$ git reset --hard HEAD~1 #这里的数字表示你要回退的版本数量)
$ git clean -dxf #删除当前目录下所有没有track过的文件和文件夹. 不管他是否是.gitignore文件里面指定的文件夹和文件..)
# 签出以前版本的指定文件,并覆盖当前文件
$ git checkout origin/main -- app/cluster_2dwow/src/app_cluster.c
$ git checkout 3da97368a61c7e7b8a46dc661b0bd11bff65e20f -- audio_main.c
# 将当前未提交的文件与以前某个commit id进行比较,并生成差异文件
$ git diff 3da97368a61c7e7b8a46dc661b0bd11bff65e20f --cached >fatfs_on_sdcard_2204191335.diff
$ git reflog
b7057a9 HEAD@{0}: reset: moving to b7057a9
98abc5a HEAD@{1}: commit: more stuff added to foo
b7057a9 HEAD@{2}: commit (initial): initial commit
$ git reset --hard 98abc5a #所以,我们要找回我们第二commit,只需要做如下操作:
$ git checkout master #首先切换到master分支上
$ git pull origin master #如果是多人开发的话 需要把远程master上的代码pull下来
$ git merge dev #然后我们把dev分支的代码合并到master上
$ #根据提示找到冲突的文件,解决冲突
$ git status
$ git add <解决冲突后的文件> #解决冲突后,add, 然后就可以commit了
$ git reflog #查出要回退到merge前的版本号,按q 退出查询,或者通过Version Control直接查看
$ git reset --hard <commit id> #回退到merge前的代码
$ git diff HEAD -- xxx #(查看对于某个文件来说,工作区和版本库里面最新版本的区别)
$ git checkout -- file #(恢复修改之前的模样 (–后面有个空格) ,其实是用版本库里的版本替换工作区的版本,一键还原)
$ git reset HEAD 文件名 #(恢复到提交之前)
$ rm text2.txt
$ git status
$ git commit -am " " #(提交删除操作,让文件在版本中删除,必须要用-am提交 )
$ git diff --patch > 0001-some-modifications.patch #从差异生成补丁
$ git apply -R <patch> #还原补丁
$ git apply ~/patch-set/*.patchpatch #在要应用补丁的文件夹下应用补丁, 不会commit.
$ git am ~/patch-set/*.patchpatch #在要应用补丁的文件夹下应用补丁, 会commit并添加commit message
$ git am --abort #如果不想打这一系列patch了,或者废弃上一条am命令
$ git apply --reject <patch_name> #根据git am失败的信息,找到发生冲突的具体patch文件,然后用该命令,强行打这个patch,发生冲突的部分会保存为.rej文件(例如发生冲突的文件是a.txt,那么运行完这个命令后,发生conflict的部分会保存为a.txt.rej),未发生冲突的部分会成功打上patch。根据.rej文件,通过编辑该patch文件的方式解决冲突。
$ git am ~/patch-set/*.patchpatch #重新打patch
#指定commit id,生成一个差异文件,其中c40dbfc7497e0620621bd7ef36364f41418e7a49为较早的commit id
$ git diff c40dbfc7497e0620621bd7ef36364f41418e7a49 f9d8afe0bac8856bd13d920559735c2c8345ac50 > emmc_boot.diff
#指定commit id,生成一个patch文件,其中3da97368a61c7e7b8a46dc661b0bd11bff65e20f为较早的commit id
$ git diff 3da97368a61c7e7b8a46dc661b0bd11bff65e20f --patch >fatfs_on_sdcard_app.patch
#从某个commit id开始到现在的所有补丁
$ git format-patch c40dbfc7497e0620621bd7ef36364f41418e7a49
0001-cr7-loader-boot-from-emmc-is-ok.patch
0002-cr7-loader-boot-from-emmc-is-OK.patch
0003-Load-cr7-rtos-from-emmc-is-OK.patch
$ git apply --stat 0001-minor-fix.patch #检查patch文件
$ git apply --check 0001-minor-fix.patch #查看是否能应用成功
$ git am -s < 0001-minor-fix.patch #应用patch
# 解决Git apply时warning: 1 line adds whitespace errors.
$ git reset --hard <前一个commit id>
$ git am --reject --whitespace=fix /someone.patch
$ git format-patch -01 重新制作补丁,然后利用 #vimdiff检查一下,是否已修正。
C盘的C:\Users\Administator目录下生成 .gitconfig配置文件。用文档编辑工具打开该文件
添加:
[user]
name = titron //你的用户名
email = hxxx@163.com //你的git邮箱账号
[credential]
helper = store
有时候在参加一个项目时,执行clone得到master分支, 一开始只是想看看源码或者忘记了自己没有新建分支,结果后面自己根据需求添加了代码【添加后没有执行commit】, 但是此时的修改都在master分支, 提交必然是不可以的,还是要新建分支【所有修改都要在新建分支上进行】,最后在分支执行通过后,才能合并到master分支。 那么,这时候如何力挽狂澜,如何在保存这些修改的前提下,新建分支并提交呢? 原文链接
# 步骤1:在当前的master分支上的修改暂存起来
$ git stash
# 步骤2:暂存修改后,在本地新建分支(new_branch )为新分支的名字
$ git checkout -b new_branch
# 步骤3:将暂存的修改放到新建分支中
$ git stash pop
# 步骤4:使用TortoiseGit进行commit,比如add, modify, delete
# 步骤5:将提交的内容push到远程服务器
git push
# 建立远程分支
$ git push origin testRelease-tzdong
$ git branch -vv
$ git branch --set-upstream-to=origin/testRelease-tzdong testRelease-tzdong
# 删除远程分支
$ git push origin --delete testRelease-tzdong
$ git switch main
$ git pull
$ git switch 1-issue-emmc_boot
$ git log
$ git rebase -i main
# 执行上面的语句后,会进入以下编辑界面
pick xxx: commit1 add : add xxx
pick xxx: commit2 fix: update xxxx
pick xxx: commit3 fix: delete xxx
pick xxx: commit4 modify : update xxxx
# 进入编辑模式,将除第一行的pick外,其余的pick都改成 squash ,退出编辑模式,保存即可
pick xxx: commit1 add : add xxx
squash xxx: commit2 fix: update xxxx
squash xxx: commit3 fix: delete xxx
squash xxx: commit4 modify : update xxxx
$ git log --oneline
$ git commit --amend
$ git commit -s --amend
$ git push -f
Git 不要只会 pull 和 push,试试这 5 条提高效率的命令
stash:存储临时代码。
reset –soft:软回溯,回退 commit 的同时保留修改内容。
cherry-pick:复制 commit。
revert:撤销 commit 的修改内容。
reflog:记录了 commit 的历史操作。
# .gitignore文件内容
# dir 不需要提交的目录
/S4/ICUMX_obj/
/S4/ICUMX_output/
git rm -r --cached . #清除缓存
git add . #重新trace file
git commit -m "update .gitignore" #提交和注释
git push origin master #可选,如果需要同步到remote上的话
转自Could not resolve host: github.com的解决方案
解决方法:添加相应IP 地址到文件:/etc/hosts
$ git clone git@mmmmm.com:llll.git
Cloning into 'llll'...
ssh: Could not resolve hostname mmmmm.com: Name or service not known
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
$ sudo vim /etc/hosts
# add
xxx.yyy.zzz.xxx mmmmm.com
$ ping mmmmm.com
PING mmmmm.com (xxx.yyy.zzz.xxx) 56(84) bytes of data.
64 bytes from mmmmm.com (xxx.yyy.zzz.xxx): icmp_seq=1 ttl=46 time=108 ms
64 bytes from mmmmm.com (xxx.yyy.zzz.xxx): icmp_seq=1 ttl=46 time=108 ms
64 bytes from mmmmm.com (xxx.yyy.zzz.xxx): icmp_seq=1 ttl=46 time=108 ms