mkdir foldername //创建文件夹
cd foldername //进入文件夹
mkdir foldername && cd foldername //创建文件夹并进入
pwd //显示当前目录 window下这命令无效
git init //初始化 让这个目录成为git仓库
git status //查看仓库当前状态
git log //查看工作日志 //q退出
git log --pretty=oneline //单行输入日志
git add readme.txt //添加文件到仓库
git commit -m "update info" //从缓冲区更新到版本库
git commit -a -m "update info"//从工作区一次性更新到版本库
git diff readme.txt //工作区和缓冲区的文件内容差异
git diff --cached //缓冲区和版本库的文件内容差异
git diff master //工作区和版本库的内容差异
git reset HEAD <filename> //从缓冲区撤销回工作区
git checkout -- <filename> //工作区撤销回版本区的状态
git commit -m "info" --amend //从缓冲区撤销回工作区,然后再重新提交
rm <filename> //删除文件
git rm <filename> //缓冲区删除文件,前提是工作区已经删除了该文件
git rm -f <filename> //缓冲区删除文件,工作区也一并删除了
git rm --cached <filename> //缓冲区删除文件,工作区不删除
//HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭
git checkout <commit id> <filename> //工作区删除文件,从指定版本库中恢复文件
git checkout test.txt//从版本库恢复
git reset --hard <commit id> //退回具体版本
git reset --hard HEAD^ //退回上一个版本
git reset --hard HEAD~<num> //退回指定数字前版本
git reflog //记录每一次命令
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,
并且,远程仓库的默认名称是origin。
//先有本地库 后有远程库
git remote add origin git@github.com:Aralic/learngit.git //关联远程库
git push -u origin master// 本地同步到github上
//先有远程库 克隆到本地
git clone git@github.com:Arliac/gitskills.git
git checkout -b dev //创建分支
git checkout master //切换回master 分支
git branch //查看当前分支
git merge dev //在master分支下 合并dev分支
git branch -d dev //删除dev分支
git remote //查看远程库名字
git remote -v// 查看更详细信息
git push origin master//推送分支
git push origin dev //推送分支
git fetch //同步远程仓库
git diff master origin/master //查看一下和远程同步过来的代码差异
git merge origin/master //和远程仓库代码 合并到本地
git pull //直接和远程仓库合并代码
fork 了别人的仓库后,原作者又更新了仓库,如何将自己的代码和原仓库保持一致?本文将给你解答。
一直以来都想搭建一个自己的博客,但是近半年做项目太忙,再加上教研室的网络很坑爹,所以也一直没顾得上。之前用过 WordPress 托管在免费的京东云擎上,但是速度太慢。在知乎上看到一些相关的内容,于是选择了在github上用jekyll搭建博客。
在使用 InelliJ IDEA 的过程中,通过查找资料以及一些自己的摸索,发现这个众多 Java 程序员喜欢的 IDE 里有许多值得一提的小窍门,如果能熟练的将它们应用于实际开发过程中,相信它会大大节省你的开发时间,而且随之而来的还会有那么一点点成就感:) Try it !
1 、写代码时用 Alt-Insert (Code | Generate…)可以创建类里面任何字段的 getter 与 setter 方法。 |
2 、右键点击断点标记(在文本的左边栏里)激活速查菜单,你可以快速设置 enable/disable 断点或者条件它的属性。
3 、 CodeCompletion (代码完成)属性里的一个特殊的变量是,激活 Ctrl-Alt-Space 可以完成在或不在当前文件里的类名。如果类没有引入则 import 标志会自动创建。
4 、使用 Ctrl-Shift-V 快捷键可以将最近使用的剪贴板内容选择插入到文本。使用时系统会弹出一个含有剪贴内容的对话框,从中你可以选择你要粘贴的部分。
5 、利用 CodeCompletion (代码完成)属性可以快速地在代码中完成各种不同地语句,方法是先键入一个类名地前几个字母然后再用 Ctrl-Space 完成全称。如果有多个选项,它们会列在速查列表里。
6 、用 Ctrl-/ 与 Ctrl-Shift-/ 来注释 / 反注释代码行与代码块。
Ctrl-/ 用单行注释标记(“ //… ”)来注释 / 反注释当前行或者选择地代码块。而 Ctrl-Shift-/ 则可以用块注释标记(“ ”)把所选块包围起来。要反注释一个代码块就在块中任何一个地方按 Ctrl-Shift-/ 即可。
7 、按 Alt-Q (View | Context Info)可以不需要移动代码就能查看当前方法地声明。连续按两次会显示当前所编辑的类名。 |
8 、使用 Refactor | Copy Class… 可以创建一个所选择的类的“副本”。这一点很有用,比如,在你想要创建一个大部分内容都和已存在类相同的类时。 |
9 、在编辑器里 Ctrl-D 可以复制选择的块或者没有所选块是的当前行。
10 、 Ctrl-W (选择字)在编辑器里的功能是先选择脱字符处的单词,然后选择源代码的扩展区域。举例来说,先选择一个方法名,然后是调用这个方法的表达式,然后是整个语句,然后包容块,等等。
11 、如果你不想让指示事件细节的“亮球”图标在编辑器上显示,通过按 Alt-Enter 组合键打开所有事件列表然后用鼠标点击它就可以把这个事件文本附件的亮球置成非活动状态。这样以后就不会有指示特殊事件的亮球出现了,但是你仍然可以用 Alt-Enter 快捷键使用它。
12 、在使用 CodeCompletion 时,可以用逗点(.)字符,逗号(,)分号(;),空格和其它字符输入弹出列表里的当前高亮部分。选择的名字会随着输入的字符自动输入到编辑器里。
13 、在任何工具窗口里使用 Escape 键都可以把焦点移到编辑器上,Shift-Escape 不仅可以把焦点移到编辑器上而且还可以隐藏当前(或最后活动的)工具窗口,F12 键把焦点从编辑器移到最近使用的工具窗口。
14 、在调试程序时查看任何表达式值的一个容易的方法就是在编辑器中选择文本(可以按几次 Ctrl-W 组合键更有效地执行这个操作)然后按 Alt-F8 。
15 、要打开编辑器脱字符处使用的类或者方法 Java 文档的浏览器,就按 Shift-F1 (右键菜单的 External JavaDoc),要使用这个功能须要把加入浏览器的路径,在“ General ”选项中设置(Options | IDE Settings),另外还要把创建的 Java 文档加入到工程中(File | Project Properties)。 |
16 、用 Ctrl-F12 (View | File Structure Popup)键你可以在当前编辑的文件中快速导航,这时它会显示当前类的成员列表。选中一个要导航的元素然后按 Enter 键或 F4 键。要轻松地定位到列表中的一个条目,只需键入它的名字即可。 |
17 、在代码中把光标置于标记符或者它的检查点上再按 Alt-F7 (右键菜单中的 Find Usages…)会很快地查找到在整个工程中使用地某一个类、方法或者变量的位置。
18 、按 Ctrl-N (Go to | Class…)再键入类的名字可以快速地在编辑器里打开任何一个类。从显示出来的下拉列表里选择类,同样的方法你可以通过使用 Ctrl-Shift-N (Go to | File…)打开工程中的非 Java 文件。 |
19 、要导航代码中一些地方使用到的类、方法或者变量的声明,把光标放在查看项上再按 Ctrl-B 即可。也可以通过按 Ctrl 键的同时在查看点上单击鼠标键调转到声明处。
20 、把光标放到查看点上再按 Ctrl-Alt-B 可以导航到一个抽象方法的实现代码。
21 、要看一个所选择的类的继承层次,按 Ctrl-H (Browse Type Hierarchy)即可。也可以激活编辑器中的继承关系视图查看当前编辑类的继承关系。22 、使用 Ctrl-Shift-F7 (Search | Highlight Usages in File)可以快速高亮显示当前文件中某一变量的使用地方。按 Escape 清除高亮显示。 |
23 、用 Alt-F3 (Search | Incremental Search)在编辑器中实现快速查查找功能。 |
在“ Search for: ”提示工具里输入字符,使用箭头键朝前和朝后搜索。按 Escape 退出。
24 、按 Ctrl-J 组合键来执行一些你记不起来的 Live Template 缩写。比如,键“ it ”然后按 Ctrl-J 看看有什么发生。
25 、 Introduce Variable 整合帮助你简化代码中复杂的声明。举个例子,在下面的代码片断里,在代码中选择一个表达式:然后按 Ctrl-Alt-V 。
26 、 Ctrl-Shift-J 快捷键把两行合成一行并把不必要的空格去掉以匹配你的代码格式。
27 、 Ctrl-Shift-Backspace (Go to | Last Edit Location)让你调转到代码中所做改变的最后一个地方,多按几次 Ctrl-Shift-Backspace 查看更深的修改历史。 |
28 、用 Tools | Reformat Code… 根据你的代码样式参考(查看 Options | IDE Setting | Code Style)格式化代码。 |
使用 Tools | Optimize Imports… 可以根据设置(查看 Options | IDE Setting | Code Style | Imports)自动“优化” imports (清除无用的 imports 等)。 |
29 、使用 IDEA 的 Live Templates | Live Templates 让你在眨眼间创建许多典型代码。比如,在一个方法里键入,再按 Tab 键看有什么事情发生了。用 Tab 键在不同的模板域内移动。查看 Options | Live Templates 获取更多的细节。 |
30 、要查看一个文件中修改的本地历史,激活右键菜单里的 Local VCS | Show History… 。也许你可以导航不同的文件版本,看看它们的不同之处再回滚到以前的任何一个版本吧。使用同样的右键菜单条目还可以看到一个目录里修改的历史。有了这个特性你就不会丢失任何代码了。 |
31 、如果要了解主菜单里每一个条目的用途,把鼠标指针移到菜单条目上再应用程序框架的底部的状态栏里就会显示它们的一些简短描述,也许会对你有帮助。
32 、要在编辑器里显示方法间的分隔线,打开 Options | IDE Settings | Editor ,选中“ Show method separators ”检查盒(checkbox)。 |
33 、用 Alt-Up 和 Alt-Down 键可以在编辑器里不同的方法之间快速移动。
34 、用 F2/Shift-F2 键在高亮显示的语法错误间跳转。
用 Ctrl-Alt-Down/Ctrl-Alt-Up 快捷键则可以在编译器错误信息或者查找操作结果间跳转。
35 、通过按 Ctrl-O (Code | Override Methods…)可以很容易地重载基本类地方法。 |
要完成当前类 implements 的(或者抽象基本类的)接口的方法,就使用 Ctrl-I (Code | Implement Methods…)。 |
36 、如果光标置于一个方法调用的括号间,按 Ctrl-P 会显示一个可用参数的列表。
37 、要快速查看编辑器脱字符处使用的类或方法的 Java 文档,按 Ctrl-Q (在弹出菜单的 Show Quick JavaDoc 里)即可。
38 、像 Ctrl-Q (Show Quick JavaDoc 显示简洁 Java 文档), Ctrl-P (Show Parameter Info 显示参数信息), Ctrl-B (Go to Declaration 跳转到声明), Shift-F1 (External JavaDoc 外部 Java 文档)以及其它一些快捷键不仅可以在编辑器里使用,也可以应用在代码完成右键列表里。
39 、 Ctrl-E (View | Recent Files)弹出最近访问的文件右键列表。选中文件按 Enter 键打开。 |
40 、在 IDEA 中可以很容易地对你的类,方法以及变量进行重命名并在所有使用到它们的地方自动更正,试一下,把编辑器脱字符置于任何一个变量名字上然后按 Shift-F6 (Refactor | Rename…)。在对话框里键入要显示地新名字再按 Enter 。你会浏览到使用这个变量地所有地方然后按“ Do Refactor ”按钮结束重命名操作。 |
41 、要在任何视图(Project View 工程视图, Structure View 结构视图或者其它视图)里快速选择当前编辑地部分(类,文件,方法或者字段),按 Alt-F1 (View | Select in…)。 |
42 、在“ new ”字符后实例化一个已知类型对象时也许你会用到 SmartType 代码完成这个特性。比如,键入再按 Ctrl-Shift-Space :
43 、通过使用 SmartType 代码完成,在 IDEA 中创建接口的整个匿名 implementation 也是非常容易的,比如,对于一些 listener (监听器),可以键入
Component component;
component.addMouseListener(
new
);
然后再按 Ctrl-Shift-Space 看看有什么发生了。
44 、在你需要设置一个已知类型的表达式的值时用 SmartType 代码完成也很有帮助。比如,键入
String s = (
再按 Ctrl-Shift-Space 看看会有什么出现。
45 、在所有视图里都提供了速查功能:在树里只需键入字符就可以快速定位到一个条目。
46 、当你想用代码片断捕捉异常时,在编辑器里选中这个片断,按 Ctrl-Alt-T (Code | Surround with…)然后选择“ try/catch ”。它会自动产生代码片断中抛出的所有异常的捕捉块。在 Options | File Templates | Code tab 中你还可以自己定制产生捕捉块的模板。 |
用列表中的其它项可以包围别的一些结构。
47 、在使用代码完成时,用 Tab 键可以输入弹出列表里的高亮显示部分。
不像用 Enter 键接受输入,这个选中的名字会覆盖掉脱字符右边名字的其它部分。这一点在用一个方法或者变量名替换另一个时特别有用。
48 、在声明一个变量时代码完成特性会给你显示一个建议名。比如,开始键入“ private FileOutputStream ”然后按 Ctrl-Space。
xp=(Xp-Xo)cos(a)+(Yp-Yo)sin(a)+xo
yp=-(Xp-Xo)sin(a)+(Yp-Yo)cos(a)+yo
Xp=Xo+(xp-xo)cos(a)-(yp-yo)sin(a)
Yp=Yo+(xp-xo)sin(a)+(yp-yo)cos(a)
Xp、Yp:待求点测图坐标
xp、yp:待求点工程坐标
Xo、Yo:工程坐标系原点测图坐标
xo、yo: 工程坐标系原点工程坐标
a:工程坐标系x轴在测图坐标系中的坐标方位角
//高斯投影正、反算
//////6度带宽 54年北京坐标系
//高斯投影由经纬度(UnitD)反算大地坐标(含带号,Unit:Metres)
void GaussProjCal(double longitude, double latitude, double *X, double *Y)
{
int ProjNo=0; int ZoneWide; ////带宽
double longitude1,latitude1, longitude0,latitude0, X0,Y0, xval,yval;
double a,f, e2,ee, NN, T,C,A, M, iPI;
iPI = 0.0174532925199433; ////3.1415926535898/180.0;
ZoneWide = 6; ////6度带宽
a=6378245.0; f=1.0/298.3; //54年北京坐标系参数
////a=6378140.0; f=1/298.257; //80年西安坐标系参数
ProjNo = (int)(longitude / ZoneWide) ;
longitude0 = ProjNo * ZoneWide + ZoneWide / 2;
longitude0 = longitude0 * iPI ;
latitude0=0;
longitude1 = longitude * iPI ; //经度转换为弧度
latitude1 = latitude * iPI ; //纬度转换为弧度
e2=2*f-f*f;
ee=e2*(1.0-e2);
NN=a/sqrt(1.0-e2*sin(latitude1)*sin(latitude1));
T=tan(latitude1)*tan(latitude1);
C=ee*cos(latitude1)*cos(latitude1);
A=(longitude1-longitude0)*cos(latitude1);
M=a*((1-e2/4-3*e2*e2/64-5*e2*e2*e2/256)*latitude1-(3*e2/8+3*e2*e2/32+45*e2*e2
*e2/1024)*sin(2*latitude1)+(15*e2*e2/256+45*e2*e2*e2/1024)*sin(4*latitude1)-(35*e2*e2*e2/3072)*sin(6*l
atitude1));
xval = NN*(A+(1-T+C)*A*A*A/6+(5-18*T+T*T+72*C-58*ee)*A*A*A*A*A/120);
yval = M+NN*tan(latitude1)*(A*A/2+(5-T+9*C+4*C*C)*A*A*A*A/24
+(61-58*T+T*T+600*C-330*ee)*A*A*A*A*A*A/720);
X0 = 1000000L*(ProjNo+1)+500000L;
Y0 = 0;
xval = xval+X0; yval = yval+Y0;
*X = xval;
*Y = yval;
}
//高斯投影由大地坐标(Unit:Metres)反算经纬度(UnitD)
void GaussProjInvCal(double X, double Y, double *longitude, double *latitude)
{
int ProjNo; int ZoneWide; ////带宽
double longitude1,latitude1, longitude0,latitude0, X0,Y0, xval,yval;
double e1,e2,f,a, ee, NN, T,C, M, D,R,u,fai, iPI;
iPI = 0.0174532925199433; ////3.1415926535898/180.0;
a = 6378245.0; f = 1.0/298.3; //54年北京坐标系参数
////a=6378140.0; f=1/298.257; //80年西安坐标系参数
ZoneWide = 6; ////6度带宽
ProjNo = (int)(X/1000000L) ; //查找带号
longitude0 = (ProjNo-1) * ZoneWide + ZoneWide / 2;
longitude0 = longitude0 * iPI ; //中央经线
X0 = ProjNo*1000000L+500000L;
Y0 = 0;
xval = X-X0; yval = Y-Y0; //带内大地坐标
e2 = 2*f-f*f;
e1 = (1.0-sqrt(1-e2))/(1.0+sqrt(1-e2));
ee = e2/(1-e2);
M = yval;
u = M/(a*(1-e2/4-3*e2*e2/64-5*e2*e2*e2/256));
fai = u+(3*e1/2-27*e1*e1*e1/32)*sin(2*u)+(21*e1*e1/16-55*e1*e1*e1*e1/32)*sin(
4*u)+(151*e1*e1*e1/96)*sin(6*u)+(1097*e1*e1*e1*e1/512)*sin(8*u);
C = ee*cos(fai)*cos(fai);
T = tan(fai)*tan(fai);
NN = a/sqrt(1.0-e2*sin(fai)*sin(fai));
R = a*(1-e2)/sqrt((1-e2*sin(fai)*sin(fai))*(1-e2*sin(fai)*sin(fai))*(1-e2*sin
(fai)*sin(fai)));
D = xval/NN;
//计算经度(Longitude) 纬度(Latitude)
longitude1 = longitude0+(D-(1+2*T+C)*D*D*D/6+(5-2*C+28*T-3*C*C+8*ee+24*T*T)*D
*D*D*D*D/120)/cos(fai);
latitude1 = fai -(NN*tan(fai)/R)*(D*D/2-(5+3*T+10*C-4*C*C-9*ee)*D*D*D*D/24
+(61+90*T+298*C+45*T*T-256*ee-3*C*C)*D*D*D*D*D*D/720);
//转换为度 DD
*longitude = longitude1 / iPI;
*latitude = latitude1 / iPI;
}
几个重要参数的意义: NN卯酉圈曲率半径,测量学里面用N表示 M为子午线弧长,测量学里用大X表示 fai为底点纬度,由子午弧长反算公式得到,测量学里用Bf表示 R为底点所对的曲率半径,测量学里用Nf表示
;;;功能:字符串按指定分隔符分隔
;;;(split "1,,255280.791,3743764.732,2786.206" ",")
;;;返回:("1" "" "255280.791" "3743764.732" "2786.206")
(defun split (str delim / LST POS)
(while (setq pos (vl-string-search delim str))
(setq lst (append lst (list (substr str 1 pos))))
(setq str (substr str (+ 2 pos)))
)
(if (> (strlen str) 0)
(append lst (list str))
lst
)
)
分隔符可以是字串,用于取文件名,用扩展名作为分隔符
;;;(splitX "C:\\Users\\....25~K1+013.52;EL.2776.73~EL.2804.74).dat" ".dat")
;;;返回:(C:\\Users\\....25~K1+013.52;EL.2776.73~EL.2804.74))
(defun splitX (str delim / LST POS)
(while (setq pos (vl-string-search delim str))
(setq lst (append lst (list (substr str 1 pos))))
(setq str (substr str (+ (+ pos (strlen delim)) 1)))
)
(if (> (strlen str) 0)
(append lst (list str))
lst
)
)
;;;功能:获取时间,要用到splitx自定义函数,返回“20170511”类型的字符串
(defun date ()
(setq datetime (rtos (getvar "cdate") 2 6))
(car (splitx datetime "."))
)
;;;功能:获取时间函数,要用到splitx自定义函数,返回“110253”类型的时间字符串
(defun time ()
(setq datetime (rtos (getvar "cdate") 2 6))
(cadr (splitx datetime "."))
)
;功能:在指定点写入文本串
;用法:(_text (getpoint "Pick") "3333" 2 0)
(defun _text (point string height rotation / space text)
(setq acdoc (vla-get-activedocument (vlax-get-acad-object))
space (vlax-get-property
acdoc
(if (= 1 (getvar 'CVPORT))
'Paperspace
'Modelspace
)
)
)
(setq text (vla-addtext space string (vlax-3D-point point) height))
(vla-put-alignment text acalignmentmiddlecenter)
(vla-put-textalignmentpoint text (vlax-3D-point point))
(vla-put-rotation text rotation)
text
)
;用法:(setq fl (getfiled "创建面积统计文件" (cond ( \*file\* ) ( "" )) "txt;csv;xls" 1))
;(_Open (findfile fl))
(defun _Open ( target / Shell result )
(if (setq Shell (vla-getInterfaceObject (vlax-get-acad-object) "Shell.Application"))
(progn
(setq result
(and (or (eq 'INT (type target)) (setq target (findfile target)))
(not
(vl-catch-all-error-p
(vl-catch-all-apply 'vlax-invoke (list Shell 'Open target))
)
)
)
)
(vlax-release-object Shell)
)
)
result
)
Gitalk 是一个基于 Github Issue 和 Preact 开发的评论插件。为什么我要写这篇博文,是因我用Github搭建我的博客页面,在安装Gitalk插件时按网上文章介绍进行配置,在运行时总是出现错误:
每篇文章都只突出解释了某一条设置,如有文章在说到“repo”变量时提到是库名,有一篇文章更是说是博客地址,这几种说法貌似也对,但严格来说却并不正确,而正确的设置是类似于“qin-dong.github.io”的库名。不管是带上.git的库地址还是带上https的博客地址都是不正确的。正确的设置如下:
Gitalk评论效果参见本人github页面: