内容简介:个人使用还有一些使用频率非常低的指令没有记录,至少普通开发者非常不常用,以后可能会补充。话不多说
Git 常用命令集
个人使用 git
的一些总结,一下常用命令的互相搭配使用,能非常完美的处理好日常遇到的 99%
的情况(不敢说100%,得留点余地)。
还有一些使用频率非常低的指令没有记录,至少普通开发者非常不常用,以后可能会补充。
话不多说
首先需要先下载 git
这个还是要说一下的
1. 常用命令
1.1 最常用/版本对比/其他
git status
查看当前分支状态
git reflog
查看每一次的命令,都做过什么
git log
查看此分支完整的提交记录,回车继续看, q
停止
git log --oneline
查看此分支简略的提交记录,只展示提交号和提交信息
git show
查看最近一次提交的具体代码变化
git show <提交ID>
查看某次提交的具体代码变化
git diff
查看当前代码 add
后,会 add
哪些内容
git diff --staged
查看现在 commit
提交后,会提交哪些内容
git diff HEAD
查看当前代码 add
并提交后,会提交哪些内容
git log --oneline --graph
图形化展示合并历史
1.2 初始化基本操作
git init
初始化仓库,默认为 mast
分支
git add -A
提交全部文件修改到缓存区
git add <具体某个文件路径+全名>
提交某些文件到缓存区
git commit -m "<注释>"
提交代码到本地仓库,并写提交注释
git commit –a -m "<新注释>"
更改上次提交的注释
1.3 分支操作
git branch
查看本地所有分支
git branch -r
查看远程所有分支
git branch -a
查看本地和远程所有分支
git merge <分支名>
合并分支
git merge --abort
合并分支出现冲突时,取消合并,一切回到合并前的状态
git branch <新分支名>
基于当前分支,新建一个分支
git checkout --orphan <新分支名>
新建一个空分支(会保留之前分支的所有文件)
git branch -D <分支名>
删除本地某个分支
git push <远程库名> :<分支名>
删除远程某个分支
git branch <新分支名称> <提交ID>
从提交历史恢复某个删掉的某个分支
git branch -m <原分支名> <新分支名>
分支更名
git checkout <分支名>
切换到本地某个分支
git checkout <远程库名>/<分支名>
切换到线上某个分支
git checkout -b <新分支名>
把基于当前分支新建分支,并切换为这个分支
1.4 推拉操作(push和pull)
git pull <远程仓库名> <远程分支名>
拉取远程仓库的分支与本地当前分支合并
git pull <远程仓库名> <远程分支名>:<本地分支名>
拉取远程仓库的分支与本地某个分支合并
git push <远程仓库名> <本地分支名>
推送本地某个分支到远程与其对应的分支上,远程没有则会给远程库新建分支
git push <远程仓库名> <本地分支名>:<远程分支名>
推送本地分支到远程某个分支
git push <远程仓库名> :<远程分支名>
删除远程某个分支
git push -f <同上的命令>
强制提交,覆盖线上
git fetch
获取线上最新版信息记录,不合并,用法和pull类似(一个特殊的操作,比如多人开发分支,其他人提交后,自己看分支的时候,可能还知不道线上的分支已经比自己的新了,需要这个指令,来获取一下线上的最新版本,会拉取,但不会合并,存在本地仓库中)
1.5 查看具体文件版本区别(git diff)
git diff <文件名>
对比最近提交,和近近次提交的区别,不加文件名,则为整体对比
git diff HEAD^ -- <文件名>
同上
git diff HEAD~<一个数字> -- <文件名>
上次提交和前第几次提交作对比
git diff <提交ID> <文件名>
上次提交和某次提交作对比
git diff <文件名>
工作区与暂存区比较
git diff HEAD <文件名>
工作区与最近提交比较
git diff <本地分支名> <文件名>
当前分支的文件与其他分支的文件进行比较
1.6 回滚操作
注意,当回滚代码时, reset
和 revert
都可以使用,下面是两个指令的区别
reset
:真实硬性回滚,目标版本后面的提交记录全部丢失了
revert
:同样回滚,但实际这个回滚操作,算是一个提交,目标版本后面的提交记录也全部都有,而且会多一次提交,就是这次 revert
--hard
的功能:不加他,文件修改会保留,都会处于add之前的状态;加上他,文件修改会被删除,丢失掉
git <reset/revert> <--hard?> HEAD^
回退到上次提交
git <reset/revert> <--hard?> <提交记录>
回退到之前的某次提交
git <reset/revert> <--hard?> <某个分支>
回退到此分支的提交状态,相当于复制分支过来
git reset <文件完整路径+完整名>
把 add
过的某个文件撤销到未 add
的状态
git reset
把 add
过的所有文件撤销到未 add
的状态
git checkout <文件完整路径+完整名>
一个还没有 add
的文件,撤销修改
git checkout .
还没有 add
的所有文件,撤销修改
1.7 远程库和分支的链接操作
git remote -v
查看对应的远程仓库地址
git clone <远程仓库地址链接>
克隆某个远程库,默认库名为 origin
git clone <远程仓库地址链接> <库名>
克隆某个远程库,并自定库名
git remote remove <远程仓库名>
和远程的某个仓库解除绑定关系
git remote add <远程仓库名> <远程仓库地址链接>
和某个远程仓库建立绑定关系
git push --set-upstream <远程仓库名> <远程分支名>
当前分支和远程某个分支建立绑定关系
1.8 储藏操作(stash)
经常有这样的事情发生,当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态。
而你想转到其他分支上进行一些工作。
问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。
解决这个问题的办法就是git stash命令。
git stash save <注释信息>
当前分支提交到储藏,插到储藏序列的最前面(不包括新建文件)
git stash save -u <注释信息>
同上,会包括新建文件,功能更强大
git stash list
查看所有储藏中的工作
git stash drop <储藏的名称>
删除对应的某个储藏
git stash pop
取出储藏中最后存入的工作状态进行恢复,会删除储藏
git stash pop <储藏对应的数字>
取出储藏中对应的工作状态进行恢复,会删除储藏
git stash apply
取出储藏中最后存入的工作状态进行恢复,注意,不会删除储藏
git stash apply <储藏的名称>
取出储藏中对应的工作状态进行恢复,注意,不会删除储藏
git stash branch <新分支名> <储藏的名称>
从储藏中新建分支,会删除储藏
git stash clear
清空所有储藏中的工作
1.9 标签操作(tag)
tag
是什么,虽然整个开发过程,每个提交都对应一个提交ID,回滚也比较方便,但总有一些重大意义的提交,比如从v0.91升级到了v1.0,这个v1.0是必须要单独摘出来保存的,否则万一出现回滚事故,导致提交记录丢失呢?
虽然可以单独新建分支保存,但分支的功能并不是用来做这个的。冗余的分支在开发时也容易产生误操作。
所以 tag
的用处就来了,他可以把某次提交后的项目,整个单独复制拎出来,命名为一个tag(可以以项目版本或打tag的时间来命名),可以写注释,存在tag列表中,与分支隔离开,除非专门命令操作,否则只要项目存在,他们就不会受到影响。
同时,可以使用tag快速回滚项目、基于tag新建分支等,在项目整体的管理上非常方便。
git tag
列出本仓库中所有tag列表
git tag <tag名>'
基于最近的一次提交打tag(轻量tag,不推荐)
git tag -a <tag名> -m '<此tag的注释>'
基于最近的一次提交打tag
git tag -a <tag名> <提交ID> -m '<此tag的注释>'
基于某次提交打tag
git show <tag名>
查看此tag的tag信息
git tag -d <tag名>
删除本地某个tag
git push origin :refs/tags/<tag名>
删除远程仓库中的tag
git push <远程仓库名> <tag名>'
推送某个tag至某个远程库
git push <远程仓库名> --tags'
推送所有tag至某个远程库
git checkout -b <新分支名> <tag名>'
基于某个tag新建分支
2. .gitignore
文件
在使用Git的过程中,有的文件比如日志、临时文件、编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。
没错就是 .gitignore
文件了。
此文件需要放在 .git
(默认是隐藏文件,是git的本地仓库)同一目录下
写法如下:
node_modules/ dist/ *.map npm-debug.log* yarn-debug.log* yarn-error.log*
这样,当 git add
的时候,上面定义忽略的那些文件,就会被git忽略,发生了变化git也不会管。
然而有时候,是会出现意外的。
比如,git已经提交过了,这是后突然说,这里面有个文件需要被忽略,然后我把这个文件写到了 .gitignore
文件中。。。无效!这个文件仍然没有被忽略!
这是就需要如下命令,来删除此文件并忽略
git rm -r --cached <文件路径+文件全名>
在git库中删除文件并停止追踪,但实际文件还保留,只是忽略掉。
由此,方可。
3. 生成 SSH
公钥
绑定一个远程仓库,有两种方式:
- 使用http链接的方式
- 使用ssh加密链接的方式
如果远程仓库为公开仓库,则两者在使用上,区别不大;
但如果是私密仓库,则http方式,需要输入用户名和密码登录后,才可建立联系,但这样一来,需要把私密仓库的账号和密码暴露,即使添加了项目团队成员,如果成员的账号密码暴露,任何人在任何设备上,登录账号密码,至少都能对项目进行拉取操作,所以就有了下面更合适的方式--- ssh
。
ssh
的话,则只需要本地设备,输入一条 git
指令,生成一对公钥和私钥,然后把公钥的内容,复制添加到远程库的设置中,让远程库认识此设备,就想当于用户填写了账号和密码,好处是,这种方法在远程库的添加上,只认设备不认账户,这样只用保证设备是安全的,仓库就是安全的。
下面为本地设备生成 ssh
输入 ssh-keygen
来生成 ssh
window默认存放在 C盘/用户/<用户名称>/.ssh
文件夹中
Mac默认存放在 硬盘/用户/<用户名称>/.ssh
文件夹中
其中两个文件, id_rsa.pub
为公钥,需要打开复制其中的内容,粘贴到需要的网站中(另一个为私钥,切记保管好)
4. 设置用户名、邮箱、登录账户
git config user.name
查看设置的用户名
git config user.email
查看设置的用户邮箱
git config --global user.name <用户名>
设置用户名
git config --global user.email <邮箱>
设置用户邮箱
修改用户登录信息
- window
控制面板 -> 用户账户 -> 管理 Windows 凭据
,即可看到普通凭据中有git的账户信息,可编辑更改
- Mac
钥匙串访问.app -> 右上角搜索git
,即可看到,可编辑更改
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
网络多人游戏架构与编程
格雷泽 (Joshua Glazer)、马达夫 (Sanjay Madhav) / 王晓慧、张国鑫 / 人民邮电出版社 / 2017-10-1 / CNY 109.00
本书是一本深入探讨关于网络多人游戏编程的图书。 全书分为13章,从网络游戏的基本概念、互联网、伯克利套接字、对象序列化、对象复制、网络拓扑和游戏案例、延迟、抖动和可靠性、改进的延迟处理、可扩展性、安全性、真实世界的引擎、玩家服务、云托管专用服务器等方面深入介绍了网络多人游戏开发的知识,既全面又详尽地剖析了众多核心概念。 本书的多数示例基于C++编写,适合对C++有一定了解的读者阅读。本......一起来看看 《网络多人游戏架构与编程》 这本书的介绍吧!