Git 常用命令集

栏目: 编程工具 · 发布时间: 5年前

内容简介:个人使用还有一些使用频率非常低的指令没有记录,至少普通开发者非常不常用,以后可能会补充。话不多说

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 回滚操作

注意,当回滚代码时, resetrevert 都可以使用,下面是两个指令的区别

reset :真实硬性回滚,目标版本后面的提交记录全部丢失了

revert :同样回滚,但实际这个回滚操作,算是一个提交,目标版本后面的提交记录也全部都有,而且会多一次提交,就是这次 revert

--hard 的功能:不加他,文件修改会保留,都会处于add之前的状态;加上他,文件修改会被删除,丢失掉

git <reset/revert> <--hard?> HEAD^ 回退到上次提交

git <reset/revert> <--hard?> <提交记录> 回退到之前的某次提交

git <reset/revert> <--hard?> <某个分支> 回退到此分支的提交状态,相当于复制分支过来

git reset <文件完整路径+完整名>add 过的某个文件撤销到未 add 的状态

git resetadd 过的所有文件撤销到未 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++有一定了解的读者阅读。本......一起来看看 《网络多人游戏架构与编程》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具