目录
简介
本文主要罗列一些工作中常用的git命令,以备个人不时之需。
所有命令引导都可以使用-h作为后缀来查看该命令后面可以跟随的参数。
例如:git status -h 会罗列出所有以status为引导的参数。如下图所示:
从效率上来说,git gui配合命令行才能效率最大化,当工程体量达到了一定的规模,使用GUI操作的效率会逐渐下降(卡)。此时,使用命令行可以很大程度上提高批量操作的速度。而当有对比相关的需求时,又可以使用GUI进行较为直观的对比。
GIT设置系列命令
作用 | 命令行 |
---|---|
清屏 | reset |
查看帮助 | git help |
查看config系列命令的帮助 | git config -h |
查看全局设置(global config) | git config -list --global |
查看全局用户名(global config) | git config user.name |
查看全局用户邮箱 | git config user.email |
设置全局用户名 | git config --global user.name yourname |
设置全局用户邮箱 | git config --global user.email youremail |
设置统一换行符为[lf/crlf] | git config --global core.eol [lf/crlf] |
[打开/关闭]换行符自动转换 | git config --global core.autocrlf [true/false] |
GIT路径系列命令
这里的命令其实比较通用,并非是git专用,但还是罗列一下
作用 | 命令行 |
---|---|
切换路径 | cd |
回退一级路径 | cd.. |
输出当前所在路径 | pwd |
列出当前路径下的所有文件 | ls |
创建新文件 | Touch |
移除文件 | rm/rm -r |
创建目录 | mkdir |
移动文件 | mv |
GIT仓库系列命令
作用 | 命令行 |
---|---|
查看当前版本状态 | git status |
克隆URL上的仓库到本地指定的路径,并递归拉取子模块 | git clone gitURL path --recursive-submodule |
拉取最新[分支名并合并到当前分支] | git pull [branchname] |
获取所有远程分支[清除服务器上已经删除的分支] | git fetch [--prune] |
罗列分支 | git checkout |
切换分支 | git checkout branchname |
合并分支 | git merge branchname |
还原修改的文件 | git checkout -- * |
指定还原某个文件 | git checkout -- * |
回退到当前版本[强制] | git reset [--hard] HEAD |
回退到上N个版本,多少个^代表多少个版本 | git reset HEAD^^^ |
跟踪某个新文件 | git add filename |
提交 | git commit -m |
推送[分支名] | git push [branchname] |
暂存修改 | git stash |
应用第[N]次暂存 | git stash apply status[N] |
变基 | git rebase |
这里并未罗列对比相关的命令,个人认为使用gui进行对比会更加直观一些。
子模块 (Submodule)
作用 | 命令行 |
---|---|
初始化子模块 | git submodule init |
添加子模块 | git submodule add <submodule_url> |
根据远端最新更新子模块 | git submodule update --remote |
GIT Attributes
作用 | 命令行 |
---|---|
配置[文件类型]换行符[lf/crlf] | *.[html/css/js...] text eof=[lf/crlf] |
GIT常见故障排除
Errno 10054
使用git获取github上代码时报错:OpenSSL SSL_read: Connection was reset, errno 10054
(此时又必须开着vpn才能访问到github)
参考网上的回答,成功解决问题:
修改设置,解除ssl验证git config --global http.sslVerify “false” 此时,再执行git操作即可。
Permission denied
一般为没有权限或密钥问题