首页
直播
壁纸
免责声明
更多
统计
关于
Search
1
一款自动化渗透工具包 TscanPlus
225 阅读
2
获取一张美国虚拟信用卡
223 阅读
3
JS Document.evaluate()的使用
199 阅读
4
Git冲突:Please commit your changes or stash them before you merge
176 阅读
5
Python 31条 pip 命令全解析
164 阅读
默认分类
操作系统
Linux
管理面板
实用工具
开发语言
PHP
Web
python
typecho
ThinkPHP
layui
爬虫
文章分享
登录
Search
标签搜索
python
php
web
linux
Git
js
requests
自动化
宝塔
thinkphp
Centos
adb
html
typecho
layui
jquery
ubuntu
multipass
虚拟机
thikphp
YiYun
累计撰写
54
篇文章
累计收到
21
条评论
首页
栏目
默认分类
操作系统
Linux
管理面板
实用工具
开发语言
PHP
Web
python
typecho
ThinkPHP
layui
爬虫
文章分享
页面
直播
壁纸
免责声明
统计
关于
搜索到
17
篇与
的结果
2024-04-10
一款自动化渗透工具包 TscanPlus
对于刚入门网络安全的小伙伴而言,对于各种工具的使用算是头疼的了。不是工具的运行环境有问题,就是工具的使用命令记不住。故而为大家介绍一款综合渗透扫描工具。关于TscanPlus 是一款综合性网络安全检测和运维工具,旨在快速资产发现、识别、检测,构建基础资产信息库,协助甲方安全团队或者安全运维人员有效侦察和检索资产,发现存在的薄弱点和攻击面。安装本我们直接在Windows平台下运行。双击exe文件即可,无需安装。我们在作者的 项目地址 : https://github.com/TideSec/TscanPlus/releases 下载对应的包即可。主要功能端口扫描 端口扫描是前期信息收集的重要手段。为了简单明了,作者提供了常见的web端口、top100、常见RCE端口等等。并且在扫描结果中,从Banner信息中可以得到相关服务的名称。URL探测 这个功能主要检测该站长都是利用了哪些框架,如WP Typecho DZ php mysql等常见的程序类型和系统服务。子域名查找 子域名查找也是我们在信息收集中重要的环节之一。以通过旁站漏洞来获取系统Shell。漏洞检测 作者提供了约400多个已知漏洞。输入目标后可快速检测常见的漏洞。密码破解 支持常见的SSH PDP MYSQL FTP等常见服务的密码破解。目录扫描 通过目录扫描,可以发现站点的一些敏感目录,如站点后台地址等。辅助功能作者为了方便初学者学习,在里面集成了常见的 CS MSF NC等工具上线的命令。原文出处:https://mp.weixin.qq.com/s/U3Hm5DoqWdTOUS8GSabRdw
2024年04月10日
225 阅读
3 评论
0 点赞
2024-03-28
分享常用的40个网站制作技巧
将彻底屏蔽鼠标右键οncοntextmenu= "window.event.returnValue=false " 可用于Table<table border οncοntextmenu=return(false)> <td> no </td></table> 取消选取、防止复制<body onselectstart= "return false "> 不准粘贴οnpaste= "return false " 防止复制οncοpy= "return false; " oncut= "return false; " IE地址栏前换成自己的图标<link rel= "Shortcut Icon " href= "favicon.ico ">可以在收藏夹中显示出你的图标<link rel= "Bookmark " href= "favicon.ico "> 关闭输入法<input style= "ime-mode:disabled "> 永远都会带着框架<script language= "JavaScript "> if (window == top)top.location.href = "frames.htm "; //frames.htm为框架网页 </script>防止被人frame<SCRIPT LANGUAGE=JAVASCRIPT> if (top.location != self.location)top.location=self.location; </SCRIPT>网页将不能被另存为<noscript> <iframe src= "/blog/*.html> "; </iframe> </noscript>查看网页源代码<input type=button value=查看网页源代码 οnclick= "window.location = "view-source: "+ "http://www.williamlong.info " ">删除时确认<a href= "javascript:if(confirm( "确实要删除吗? "))location= "boos.asp?&areyou=删除&page=1 " "> 删除 </a>取得控件的绝对位置//Javascript <script language= "Javascript "> function getIE(e){ var t=e.offsetTop; var l=e.offsetLeft; while(e=e.offsetParent) alert( "top= "+t+ "/nleft= "+l); } </script> //VBScript <script language= "VBScript "> function getIE() dim t,l,a,b set a=document.all.img1 t=document.all.img1.offsetTop l=document.all.img1.offsetLeft while a.tagName <> "BODY " set a = a.offsetParent t=t+a.offsetTop l=l+a.offsetLeft wend msgbox "top= "&t&chr(13)& "left= "&l,64, "得到控件的位置 " end function </script>光标是停在文本框文字的最后<script language= "javascript "> function cc() { var e = event.srcElement; var r =e.createTextRange(); r.moveStart( "character ",e.value.length); r.collapse(true); r.select(); } </script> <input type=text name=text1 value= "123 " οnfοcus= "cc() ">判断上一页的来源javascript: document.referrer最小化、最大化、关闭窗口<object id=hh1 classid= "clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11 "> <param name= "Command " value= "Minimize "> </object> <object id=hh2 classid= "clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11 "> <param name= "Command " value= "Maximize "> </object> <OBJECT id=hh3 classid= "clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11 "> <PARAM NAME= "Command " VALUE= "Close "> </OBJECT> <input type=button value=最小化 οnclick=hh1.Click()> <input type=button value=最大化 οnclick=hh2.Click()> <input type=button value=关闭 οnclick=hh3.Click()> 本例适用于IE屏蔽功能键Shift,Alt,Ctrl<script> function look(){ if(event.shiftKey) alert( "禁止按Shift键! "); //可以换成ALT CTRL } document.οnkeydοwn=look; </script>网页不会被缓存<META HTTP-EQUIV= "pragma " CONTENT= "no-cache "> <META HTTP-EQUIV= "Cache-Control " CONTENT= "no-cache, must-revalidate "> <META HTTP-EQUIV= "expires " CONTENT= "Wed, 26 Feb 1997 08:21:57 GMT "> 或者 <META HTTP-EQUIV= "expires " CONTENT= "0 ">怎样让表单没有凹凸感?<input type=text style= "border:1 solid #000000 "> 或 <input type=text style= "border-left:none; border-right:none; border-top:none; border-bottom:1 solid #000000 "> </textarea>div span layer的区别<div> (division)用来定义大段的页面元素,会产生转行 <span> 用来定义同一行内的元素,跟</div>的唯一区别是不产生转行 </layer> 是ns的标记,ie不支持,相当于 让弹出窗口总是在最上面:<body οnblur= "this.focus(); ">不要滚动条?让竖条没有: <body style= "overflow:scroll;overflow-y:hidden "> </body> 让横条没有: <body style= "overflow:scroll;overflow-x:hidden "> </body> 两个都去掉?更简单了 <body scroll= "no "> </body>怎样去掉图片链接点击后,图片周围的虚线?<a href= "# " onFocus= "this.blur() "> <img src= "/blog/logo.jpg " border=0> </a>电子邮件处理提交表单<form name= "form1 " method= "post " action= "mailto:****@***.com " enctype= "text/plain "> <input type=submit> </form>在打开的子窗口刷新父窗口的代码里如何写?window.opener.location.reload()如何设定打开页面的大小<body οnlοad= "top.resizeTo(300,200); "> 打开页面的位置 <body οnlοad= "top.moveBy(300,200); ">在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动<STYLE> body {background-image:url(/blog/logo.gif); background-repeat:no-repeat; background-position:center;background-attachment: fixed} </STYLE>检查一段字符串是否全由数字组成<script language= "Javascript "> function checkNum(str){return str.match(//D/)==null} alert(checkNum( "1232142141 ")) alert(checkNum( "123214214a1 ")) </script>获得一个窗口的大小document.body.clientWidth; document.body.clientHeight怎么判断是否是字符if (/[^/x00-/xff]/g.test(s)) alert( "含有汉字 "); else alert( "全是字符 ");TEXTAREA自适应文字行数的多少<textarea rows=1 name=s1 cols=27 onpropertychange= "this.style.posHeight=this.scrollHeight "> </textarea>日期减去天数等于第二个日期<script language=Javascript> function cc(dd,dadd) { //可以加上错误处理 var a = new Date(dd) a = a.valueOf() a = a - dadd * 24 * 60 * 60 * 1000 a = new Date(a) alert(a.getFullYear() + "年 " + (a.getMonth() + 1) + "月 " + a.getDate() + "日 ") } cc( "12/23/2002 ",2) </script>选择了哪一个Radio<HTML> <script language= "vbscript "> function checkme() for each ob in radio1 if ob.checked then window.alert ob.value next end function </script> <BODY> <INPUT name= "radio1 " type= "radio " value= "style " checked> Style <INPUT name= "radio1 " type= "radio " value= "barcode "> Barcode <INPUT type= "button " value= "check " οnclick= "checkme() "> </BODY> </HTML>脚本永不出错<SCRIPT LANGUAGE= "JavaScript "> <!-- Hide function killErrors() { return true; } window.onerror = killErrors; // --> </SCRIPT>ENTER键可以让光标移到下一个输入框<input οnkeydοwn= "if(event.keyCode==13)event.keyCode=9 "> 问题点数:0 回复次数:60 显示所有回复显示星级回复显示楼主回复 netnpc cooly 等 级: 发表于:2007-11-14 12:05:271楼 得分:0检测某个网站的链接速度:把如下代码加入 区域中:<script language=Javascript> tim=1 setInterval( "tim++ ",100) b=1 var autourl=new Array() autourl[1]= "www.njcatv.net " autourl[2]= "javacool.3322.net " autourl[3]= "www.sina.com.cn " autourl[4]= "www.nuaa.edu.cn " autourl[5]= "www.cctv.com " function butt(){ document.write( " <form name=autof> ") for(var i=1;i <autourl.length;i++) document.write( " <input type=text name=txt "+i+ " size=10 value= "/blog/测试中......> " =》 <input type=text name=url "+i+ " size=40> =》 <input type=button value=GO οnclick=window.open(this.form.url "+i+ ".value)> <br/> ") document.write( " <input type=submit value=刷新> </form> ") } butt() function auto(url) else b++ } function run(){for(var i=1;i <autourl.length;i++)document.write( " <img src=http:// "+autourl+ "/ "+Math.random()+ " width=1 height=1 οnerrοr=auto( "http:// "+autourl+ " ")> ")} run() </script>各种样式的光标auto :标准光标default :标准箭头hand :手形光标wait :等待光标text :I形光标vertical-text :水平I形光标no-drop :不可拖动光标not-allowed :无效光标help :?帮助光标all-scroll :三角方向标move :移动标crosshair :十字标e-resizen-resizenw-resizew-resizes-resizese-resizesw-resize页面进入和退出的特效进入页面<meta http-equiv= "Page-Enter " content= "revealTrans(duration=x, transition=y) ">推出页面<meta http-equiv= "Page-Exit " content= "revealTrans(duration=x, transition=y) ">这个是页面被载入和调出时的一些特效。duration表示特效的持续时间,以秒为单位。transition表示使用哪种特效,取值为1-23: 0 矩形缩小 1 矩形扩大 2 圆形缩小 3 圆形扩大 4 下到上刷新 5 上到下刷新 6 左到右刷新 7 右到左刷新 8 竖百叶窗 9 横百叶窗 10 错位横百叶窗 11 错位竖百叶窗 12 点扩散 13 左右到中间刷新 14 中间到左右刷新 15 中间到上下 16 上下到中间 17 右下到左上 18 右上到左下 19 左上到右下 20 左下到右上 21 横条 22 竖条 23 以上22种随机选择一种在规定时间内跳转<META http-equiv=V= "REFRESH " content= "5;URL=http://www.williamlong.info ">网页是否被检索<meta name= "ROBOTS " content= "属性值 "> 其中属性值有以下一些: 属性值为 "all ": 文件将被检索,且页上链接可被查询; 属性值为 "none ": 文件不被检索,而且不查询页上的链接; 属性值为 "index ": 文件将被检索; 属性值为 "follow ": 查询页上的链接; 属性值为 "noindex ": 文件不检索,但可被查询链接; 属性值为 "nofollow ": 文件不被检索,但可查询页上的链接。 最大化窗口? <script language= "JavaScript "> <!-- self.moveTo(0,0) self.resizeTo(screen.availWidth,screen.availHeight) //--> </script> 解决问题:由于层与下拉框之间的优先级是:下拉框 > 层,因此在显示的时候,会因为优先级的次序而会出现如上问题。(如果几个元素都是层的话,我们可以通过层的 z-index 属性来设置)解决办法就是:给层中放一个优先级比下拉框更高的元素(iframe),从而解决此问题!具体解决代码如下: <div id= "menu " style= "position:absolute; visibility:hidden; top:20px; left:20px; width:100px; height:200px; background-color:#6699cc; "> <table> <tr> <td> item 1 </td> </tr> <tr> <td> item 2 </td> </tr> <tr> <td> item 3 </td> </tr> <tr> <td> item 4 </td> </tr> <tr> <td> item 5 </td> </tr> </table> <iframe src= "/blog/javascript:false " style= "position:absolute; visibility:inherit; top:0px; left:0px; width:100px; height:200px; z-index:-1; filter= 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0) '; "> </iframe> </div> <a href= "# " οnclick= "document.getElementById( 'menu ').style.visibility= 'visible ' "> menu </a> <form> <select> <option> A form selection list </option> </select> </form> 输入框也可以做的很漂亮了 <div align= "center "> <input type= "hidden " name= "hao " value= "yes "> 外向数: <input name=answer style= "color: rgb(255,0,0); border-left: medium none; border-right: medium none; border-top: medium none; border-bottom: 1px solid rgb(192,192,192) "> 没回答的题数: <input name=unanswer id= "unanswer " style= "color: rgb(255,0,0); border-left: medium none; border-right: medium none; border-top: medium none; border-bottom: 1px solid rgb(192,192,192) "> <br/> 总得分: <input name=score id= "score " style= "color: rgb(255,0,0); border-left: medium none; border-right: medium none; border-top: medium none; border-bottom: 1px solid rgb(192,192,192) "> 结 论: <input name=xgjg id= "xgjg " style= "color: rgb(255,0,0); border-left: medium none; border-right: medium none; border-top: medium none; border-bottom: 1px solid rgb(192,192,192) "> <br/> <br/> <input onClick=processForm(this.form) style= "FONT-FAMILY: 宋体; FONT-SIZE: 9pt " type=button value=查看结果 name= "button "> <input type= "reset " name= "Submit " value= "重做 "> </div> 注意:修改 <body> 为 <body οnlοad= "max.Click() "> 即为打开最大 化窗口,而如果改为 <body οnlοad= "min.Click() "> 就变为窗口一打开就最小化 <object id= "min " type= "application/x-oleobject " classid= "clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11 "> <param name= "Command " value= "Minimize "> </object> <object id= "max " type= "application/x-oleobject " classid= "clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11 "> <param name= "Command " value= "Maximize "> </object> </body> 页面自动刷新(说明) 当你做网页时,是不是有的时候想让你的网页自动不停刷新,或者过一段时间自动跳转到另外一个你自己设定的页面?其实实现这个效果非常地简单,而且这个效果甚至不能称之为特效。你只要把如下代码加入你的网页中就可以了。 1,页面自动刷新:把如下代码加入 <head> 区域中 <meta http-equiv= "refresh " content= "20 "> ,其中20指每隔20秒刷新一次页面. 2,页面自动跳转:把如下代码加入 <head> 区域中 <meta http-equiv= "refresh " content= "20;url=http://www.williamlong.info "> ,其中20指隔20秒后跳转到http://www.williamlong.info页面。 页面自动关闭 5000是指时间 <body onLoad= "setTimeout(window.close, 5000) "> 弹出窗口自动关闭 10秒后弹出窗口自动关闭 注意:在新的tan.htm的body中要加 <onLoad= "closeit() "> head <script language= "JavaScript "> <!-- var gt = unescape( '%3e '); var popup = null; var over = "Launch Pop-up Navigator "; popup = window.open( ' ', 'popupnav ', 'width=225,height=235,resizable=1,scrollbars=auto '); if (popup != null) { if (popup.opener == null) { popup.opener = self; } popup.location.href = 'tan.htm '; } // --> </script> <body> 注意:这段代码是在新建文件中的 <script language= "JavaScript "> function closeit() </script> 这个可不是 <iframe> (引用)呀。是直接调用的。以下代码加入 <body> 区域 <object type= "text/x-scriptlet " width= "800 " height= "1000 " data= "../index.htm "> </object>原文出处: 分享常用的40个网站制作技巧
2024年03月28日
71 阅读
0 评论
0 点赞
2024-03-28
adb(Android Debug Bridge)安装使用教程
一、说明adb的db是debug bridge而不是和gdb一样指debug,这意思是说adb不能像gdb那样能一步步调试代码,但可以启到一些类似调试的功能。下面就针对这些功能进行介绍,本文根据官方文档“http://adbshell.com/commands”整理而成。这种烂大街的文章本不该再写了,但无耐每次自己用都得搜索筛选一藩,索性写下来权当就给自己看。二、安装如果安装了android sdk那么在sdk的platform-tools文件夹下就已经有adb了(使用时有点问题,我选择直接去下了一个)。如果没有安装android sdk,那么也可以直接下载adb,解压即可使用。为了方便建议将解压到的目录加入环境变量。三、使用3.1 启动调试设备模拟器----直接启动模拟手机真机----通过usb线把手机接到电脑3.2 查看当前有哪些设备adb devices第一列是设备序列号;其中“ip:port”组合的是模拟设备,“e6466a68”这种开头的是usb连接上来的真实手机。如果只有一台设备,那么所有下面介绍的命令会自动在该设备上执行,如果有多个设备那么需要通过-s指定设备序列号不然会报“error: more than one device/emulator”(adb -s device_serial_number command形式)。为了方便,在介绍后续命令前我将关掉上图中序列号为192.168.225.101:5555的模拟设备。3.3 安装软件包adb install /path/to/apk.apk安装时有些手机可能要在手机上点击确认进行安装,不然会拒绝安装导致安装失败(报错:INSTALL_FAILED_USER_RESTRICTED: Install canceled by user)。如果报错“error: unknown host service”,那有可能是360手机助手等占用了连接,通过任务管理器将其关闭即可。3.4 查看已安装的软件包adb shell pm list packages此时会列出手机中所有已安装的转件包,为了快速找到自己想要的软件的包名,可以使用grep/findstr等命令进行过滤。3.5 卸载已安装软件包卸载不能通过安装apk时的apk文件名进行卸卸,需要指定软件完整包名进行卸载,包名可通过3.4介绍的办法进行查找adb uninstall package_name3.6 查看apk数据存放位置adb shell pm path package_name3.7 清空apk数据adb shell pm clear package_name3.8 查看当前所在目录adb shell pwd3.9 查看根目录下有哪些文件(夹)adb shell ls /3.10 查看磁盘挂载情况adb shell df -h3.11 上传文件到手机adb push /local/path/to/file/filename /phone/file/path/to/save路径linux用斜框windows用反斜杠3.12 从手机下载文件到本地adb pull /phone/path/to/file/filename /local/file/path/to/save3.13 执行其他linux命令要执行诸如cd、rm、mkdir、touch、cp、mv等等命令,都使用以下格式即可;如要带参数和在shell中使用一样直接带后面即可adb shell command parameters当然也可以直接使用adb shell进入交互shell,不用每次都带abd shell头;退出使用exit。如下图所示:不过有些命令使用adb shell形式和进入交互shell形式,输出是不一样的,没有深究。3.14 查看系统参数adb shell dumpsys system_parameter参考 :https://blog.csdn.net/gaojinshan/article/details/9455193原文出处: adb(Android Debug Bridge)安装使用教程
2024年03月28日
61 阅读
0 评论
0 点赞
2024-03-28
常用的Git命令清单
日常使用只要记住下图6个命令,就可以了几个专用名词的译名如下。Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库一、新建代码库# 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-name] # 下载一个项目和它的整个代码历史 $ git clone [url] # 下载一个项目指定特定的分支 $ git clone -b <Branch name><Repository URL>二、配置Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。# 显示当前的Git配置 $ git config --list # 编辑Git配置文件 $ git config -e [--global] # 设置提交代码时的用户信息 $ git config [--global] user.name "[name]" $ git config [--global] user.email "[email address]"三、增加/删除文件# 添加指定文件到暂存区 $ git add [file1] [file2] ... # 添加指定目录到暂存区,包括子目录 $ git add [dir] # 添加当前目录的所有文件到暂存区 $ git add . # 添加每个变化前,都会要求确认 # 对于同一个文件的多处变化,可以实现分次提交 $ git add -p # 删除工作区文件,并且将这次删除放入暂存区 $ git rm [file1] [file2] ... # 停止追踪指定文件,但该文件会保留在工作区 $ git rm --cached [file] # 改名文件,并且将这个改名放入暂存区 $ git mv [file-original] [file-renamed]四、代码提交# 提交暂存区到仓库区 $ git commit -m [message] # 提交暂存区的指定文件到仓库区 $ git commit [file1] [file2] ... -m [message] # 提交工作区自上次commit之后的变化,直接到仓库区 $ git commit -a # 提交时显示所有diff信息 $ git commit -v # 使用一次新的commit,替代上一次提交 # 如果代码没有任何新变化,则用来改写上一次commit的提交信息 $ git commit --amend -m [message] # 重做上一次commit,并包括指定文件的新变化 $ git commit --amend [file1] [file2] ...五、分支# 列出所有本地分支 $ git branch # 列出所有远程分支 $ git branch -r # 列出所有本地分支和远程分支 $ git branch -a # 新建一个分支,但依然停留在当前分支 $ git branch [branch-name] # 新建一个分支,并切换到该分支 $ git checkout -b [branch] # 新建一个分支,指向指定commit $ git branch [branch] [commit] # 新建一个分支,与指定的远程分支建立追踪关系 $ git branch --track [branch] [remote-branch] # 切换到指定分支,并更新工作区 $ git checkout [branch-name] # 切换到上一个分支 $ git checkout - # 建立追踪关系,在现有分支与指定的远程分支之间 $ git branch --set-upstream [branch] [remote-branch] # 合并指定分支到当前分支 $ git merge [branch] # 选择一个commit,合并进当前分支 $ git cherry-pick [commit] # 本地分支重命名(还没有推送到远程) $ git branch -m oldName newName # 重命名远程分支对应的本地分支 $ git branch -m oldName newName # 上传新命名的本地分支 $ git push origin newName # 把修改后的本地分支与远程分支关联 $ git branch --set-upstream-to origin/newName # 删除分支 $ git branch -d [branch-name] # 删除远程分支 $ git push origin --delete [branch-name] $ git branch -dr [remote/branch]六、标签# 列出所有tag $ git tag # 新建一个tag在当前commit $ git tag [tag] # 新建一个tag在指定commit $ git tag [tag] [commit] # 删除本地tag $ git tag -d [tag] # 删除远程tag $ git push origin :refs/tags/[tagName] # 查看tag信息 $ git show [tag] # 提交指定tag $ git push [remote] [tag] # 提交所有tag $ git push [remote] --tags # 新建一个分支,指向某个tag $ git checkout -b [branch] [tag]七、查看信息# 显示有变更的文件 $ git status # 显示当前分支的版本历史 $ git log # 显示commit历史,以及每次commit发生变更的文件 $ git log --stat # 搜索提交历史,根据关键词 $ git log -S [keyword] # 显示某个commit之后的所有变动,每个commit占据一行 $ git log [tag] HEAD --pretty=format:%s # 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件 $ git log [tag] HEAD --grep feature # 显示某个文件的版本历史,包括文件改名 $ git log --follow [file] $ git whatchanged [file] # 显示指定文件相关的每一次diff $ git log -p [file] # 显示过去5次提交 $ git log -5 --pretty --oneline # 显示所有提交过的用户,按提交次数排序 $ git shortlog -sn # 显示指定文件是什么人在什么时间修改过 $ git blame [file] # 显示暂存区和工作区的差异 $ git diff # 显示暂存区和上一个commit的差异 $ git diff --cached [file] # 显示工作区与当前分支最新commit之间的差异 $ git diff HEAD # 显示两次提交之间的差异 $ git diff [first-branch]...[second-branch] # 显示今天你写了多少行代码 $ git diff --shortstat "@{0 day ago}" # 显示某次提交的元数据和内容变化 $ git show [commit] # 显示某次提交发生变化的文件 $ git show --name-only [commit] # 显示某次提交时,某个文件的内容 $ git show [commit]:[filename] # 显示当前分支的最近几次提交 $ git reflog八、远程同步# 下载远程仓库的所有变动 $ git fetch [remote] # 显示所有远程仓库 $ git remote -v # 显示某个远程仓库的信息 $ git remote show [remote] # 增加一个新的远程仓库,并命名 $ git remote add [shortname] [url] # 取回远程仓库的变化,并与本地分支合并 $ git pull [remote] [branch] # 删除本地指定的远程地址 $ git remote remove [branch] # 上传本地指定分支到远程仓库 $ git push [remote] [branch] # 强行推送当前分支到远程仓库,即使有冲突 $ git push [remote] --force # 推送所有分支到远程仓库 $ git push [remote] --all九、撤销# 恢复暂存区的指定文件到工作区 $ git checkout [file] # 恢复某个commit的指定文件到暂存区和工作区 $ git checkout [commit] [file] # 恢复暂存区的所有文件到工作区 $ git checkout . # 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变 $ git reset [file] # 重置暂存区与工作区,与上一次commit保持一致 $ git reset --hard # 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变 $ git reset [commit] # 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致 $ git reset --hard [commit] # 重置当前HEAD为指定commit,但保持暂存区和工作区不变 $ git reset --keep [commit] # 新建一个commit,用来撤销指定commit # 后者的所有变化都将被前者抵消,并且应用到当前分支 $ git revert [commit] # 暂时将未提交的变化移除,稍后再移入 $ git stash $ git stash pop十、储藏# 储藏当前工作 $ git stash # 带有消息保存储藏 $ git stash save " " # 查看存储的储藏: $ git stash list # 重新应用刚刚储藏的更改 $ git stash apply # 跟踪储藏和其更改 $ git stash show # 重新应用以前的提交 $ git stash pop # 从队列中删除最新的储藏 $ git stash drop # 一次性删除所有可用的储藏 $ git stash clear # 在单独的分支上储藏工作 $ git stash branch 十一、变基# 将来自不同分支的一系列提交应用到最终提交中。 $ git rebase # 继续变基过程 $ git rebase -continue # 中止变基过程 $ git rebase --skip # Git交互式变基(interactive rebase) # 允许对现有提交进行编辑、重新编写、重新排序等各种操作。 $ git rebase -i 十二、其他# 生成一个可供发布的压缩包 $ git archive
2024年03月28日
85 阅读
0 评论
0 点赞
2024-03-27
thinkphp 命令行的使用--转载
1.前言ThinkPHP 支持 Console 应用,通过命令行的方式执行一些 URL 访问不方便或者安全性较高的操作。前面学习的接口封装,都是基于 HTTP 请求的,请求时间是会有超时时间的,若使用命令行可以在后台进程运行,而不是依赖于访问进程,ThinkPHP 命令行提供了一些方便的工具 ,下面介绍如何使用 ThinkPHP 命令行。2.通过命令行查看版本在框架的根目录下,有一个 think 脚本文件,可以使用 php 进程去调用它,查看 ThinkPHP 框架版本可以使用如下命令:php think version3.快速生成控制器若想要单应用 app\controller 目录下快速生成控制器和方法,可以使用如下命令:php think make:controller test生成的控制器文件内容如下:<?php declare (strict_types = 1); namespace app\controller; use think\Request; class test { /** * 显示资源列表 * * @return \think\Response */ public function index() { // } /** * 显示创建资源表单页. * * @return \think\Response */ public function create() { // } /** * 保存新建的资源 * * @param \think\Request $request * @return \think\Response */ public function save(Request $request) { // } /** * 显示指定的资源 * * @param int $id * @return \think\Response */ public function read($id) { // } /** * 显示编辑资源表单页. * * @param int $id * @return \think\Response */ public function edit($id) { // } /** * 保存更新的资源 * * @param \think\Request $request * @param int $id * @return \think\Response */ public function update(Request $request, $id) { // } /** * 删除指定资源 * * @param int $id * @return \think\Response */ public function delete($id) { // } } {callout color="#002aff"}Tips: 其中快速生成几种常见的方法名,如果只想生成控制器可以使用 php think make:controller test --plain。{/callout}4.快速生成模型若想要单应用 app\model 目录下快速生成模型,可以使用如下命令:php think make:model TestModel生成的模型文件内容如下:<?php declare (strict_types = 1); namespace app\model; use think\Model; /** * @mixin \think\Model */ class TestModel extends Model { // }{callout color="#004cff"}Tips: declare (strict_types = 1)表示开启严格模式。{/callout}5.快速生成中间件若想要单应用 app\middleware 目录下快速生成模型,可以使用如下命令:php think make:middleware Auth生成的中间件文件内容如下:<?php declare (strict_types = 1); namespace app\middleware; class Auth { /** * 处理请求 * * @param \think\Request $request * @param \Closure $next * @return Response */ public function handle($request, \Closure $next) { // } }6.快速生成验证器若想要单应用 app\Models 目录下快速生成模型,可以使用如下命令:php think make:validate Test生成的验证器文件内容如下:<?php declare (strict_types = 1); namespace app\validate; use think\Validate; class Test extends Validate { /** * 定义验证规则 * 格式:'字段名' => ['规则1','规则2'...] * * @var array */ protected $rule = []; /** * 定义错误信息 * 格式:'字段名.规则名' => '错误信息' * * @var array */ protected $message = []; } 7.清除缓存文件若想要清除 runtime目录下的缓存文件,可以使用如下命令:php think clear清除之后如下图所示:{callout color="#004cff"}Tips: 若不需要保留空目录,可以使用 php think clear --dir。{/callout}8.输出路由定义列表若想要查看定义了哪些路由,可以使用如下命令:php think route:list9.小结本小节介绍了如何简单的使用 ThinkPHP 提供的命令行,使用这些命令行可以快速的生成控制器、模型、中间件、验证器,也可以根据实际情况选择手动创建这些文件,另外还介绍了如何使用命令行清空缓存,使用命令行查看框架中定义了哪些路由的列表。熟练地掌握这些命令行将会使你的开发效率更高。原文链接:https://www.imooc.com/wiki/thinkphplesson/thinkcommand.html
2024年03月27日
141 阅读
0 评论
0 点赞
1
2
3
4