内容简介:个人使用还有一些使用频率非常低的指令没有记录,至少普通开发者非常不常用,以后可能会补充。话不多说
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
,即可看到,可编辑更改
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python for Data Analysis
Wes McKinney / O'Reilly Media / 2012-11-1 / USD 39.99
Finding great data analysts is difficult. Despite the explosive growth of data in industries ranging from manufacturing and retail to high technology, finance, and healthcare, learning and accessing d......一起来看看 《Python for Data Analysis》 这本书的介绍吧!