前言
git在开发中已经是很常用的工具了
但很多同学还是只会commit,pull,push这些简单的命令
今天来做一个搜集
把开发中一些实用的git命令汇集在这篇博客里
话不多说,立马开始
基本操作
git init
为你的项目创建一个git仓库
这样就会在你项目下面生成.git的隐藏文件
这样你的项目就可以进行git操作了
当然,前提是你安装了git环境
如果你的项目在执行git命令时出现这种报错:
fatal: not a git repository (or any of the parent directories): .git
就说明其实你没有git仓库
这样就可以通过这个命令创建一个本地仓库
git clone + url
拷贝一个 远程的Git 仓库到本地,让自己能够查看该项目,或者进行修改。
url就是远程仓库的地址啦
git remote add origin + 仓库的git地址
设置你当前本地项目的远程仓库,这样就可以push代码到远程仓库了
git remote show origin
查看当前仓库的git地址
git log
查看git的全部提交记录
也可以用下面这张方式:
git log -2
这种方式表示查看最近两条记录
git pull
获取当前分支下的更新代码,就是拉代码
git push --force
强制推送,一般用于远程的强制回滚,顺序如下:
- git reset --hard commitId //想要回到的 commitId
- git push --force // 强制推送,去到想要回到的commitId(提交节点),这个提交节点之后的所有提交都将被删除
git status
查看仓库当前的状态,显示有变更的文件。
git status 输出的命令很详细,但有些繁琐。
git status -s 以精简的方式显示文件状态。
不同的状态如下:
效果如图:
git add +文件名路径
添加需要提交的文件名(路径参考git status 打印出来的文件路径),可以有多个,比如:
git add
app/src/main/java/com/example/mydemo/A.java
app/src/main/java/com/example/mydemo/B.java
(注意要全路径名)
git add .
把本地仓库的所有修改的文件都添加进去
git commit -m + “提交注释”
提交文件,后面加上提交注释,提交前要先git add +文件名路径
不然是不能提交的
git push -u + 分支名
把本地commit的记录提交到远程分支上面
比如要提交到master分支,就这样写:
git push -u origin master
git reset + 提交编号
如果我们提交了一条记录
但是想撤回
可以先通过git log得到提交记录
可以通过这个命令回到上一次提交时的状态:
git reset ac69fb3b2bcc9efa87a677039e0dd62ee02f3357
这个字符串就是提交记录里的编号
查询和修改相关
git config user.name
查看用户名
git config user.password
查看密码
git config user.email
查看邮箱
git config --list
查看配置信息
git config --global user.name “新的用户名”
修改用户名
git config --global user.password “新的密码”
修改密码
git config --global user.email “xxxx@xxx.com(新的邮箱)”
修改邮箱
分支相关
git branch
获取所有分支名字
以及当前所在分支
另外还有 git branch -a 命令
加上了-a参数,可以查看远程分支,远程分支会用红色表示出来(开了颜色支持的前提下)
git branch + 分支名
创建一个新分支
git merge + 分支名
合并分支
把输入的分支名合并到当前分支
比如,当前分支为branchA
我们输入
git merge branchB
就会把branchB分支合并到当前的branchA分支
git branch -d + 分支名
删除这个分支
注意,如果这个分支没有被合并
会报错
如果还是想强行删除这个分支
用这个命令:
git branch -D + 分支名
git checkout + 分支名
切换到当前分支
例如:
git checkout master
就是切换到master分支
git reflog show + 分支名
查看这个分支是基于那个父分支创建的
比如:
git reflog show xiong_upmicnum
按下回车后,主要看Created from信息,如下:
就可以得知:xiong_upmicnum分支是基于develop分支创建的
git branch -m + 老分支名 + 新分支名
修改本地分支名字,把老分支名字改为新分支名字
当然如果要修改远程的,可以这么做:
1:先修改本地的分支名
2:删除远程的老分支
3:重新push当前修改名字之后的分支
当然,在Android Studio中,也可以不用命令,直接点击右下角的分支列表
然后对指定的分支左键单机,就可以完成上面三步操作了
下图是本地分支,远程的还有Delete选项
暂存相关
git stash
如果你想切个分支或者想pull最新代码,但是你本地代码有修改,而且这些代码又没有实现并很好完成一个功能或者业务逻辑而不想commit代码,所以,此时,你最希望有这样一个命令,那就是,先把代码存储到本地而不提交,然后可以让我去实现切换分支或者pull最新代码。git stash就可以实现这个功能
具体流程为:
git stash //把本地修改并且未提交的内容,存储到本地栈中的栈顶。
do some work //此时你可以去切换分支或者pull最新代码
git stash pop //此时你可以把你刚才stash到本地栈中的代码pop到本地
git stash pop
把你刚才stash到本地栈中的代码pop到本地
git stash list
查看你本地存储的暂存日志,如下图
git stash clear
清除所有stash暂存信息
git stash drop stash@{0}
删除指定的stash,大括号内的数字就是你暂存日志列表里的数字
比如你要删除栈顶的第一条
就是git stash drop stash@{0}
结果就由上图的列表变成了下图的列表:
git stash save “你的stash日志”
和git stash命令功能一样,只不过多加了日志
比如git stash save “新建一个stash”
这样列表里就是:
git stash pop stash@{1}
和git stash pop命令一样都是拉取暂存内容,只不过可以指定去拉去栈顶的第几个暂存内容
不可以可重复拉取暂存内容
git stash apply stash@{1}
和git stash pop命令一样都是拉取暂存内容,只不过可以指定去拉去栈顶的第几个暂存内容
可重复拉取暂存内容并恢复
git show stash@{0}
查看本地最后一个stash
git stash --help
获取stash帮助,会跳转到一个帮助页面
报错解决
使用问题:git stash pop stash@{0} 报错,如下
error: unknown switch `e'
usage: git stash apply [--index] [-q|--quiet] [<stash>]
-q, --quiet be quiet, only report errors
--index attempt to recreate the index
这种问题是因为VSCode中,花括号在 powershell 中被认为是代码块执行标识符,
若想正常使用,可用反引号 进行转义:stash@
{0’},如下:
git stash pop stash@`{0`}
其他
1:当git打印日志,日志过多时不会一下子显示,而是要通过回车才能看到下一行
如果要退出这种状态,按下q键就可以重新进入输入命令状态
2:AS很多操作是可以通过命令的,当然能用命令实现也可以,看个人情况
3:默认一个电脑的所有项目都会用同一个用户名和邮箱,但如果是公司的电脑,我们希望用自己的用户名和邮箱,就需要特别设置,以前我们是这样修改配置的
## git config --global user.name "新的用户名"
修改用户名
## git config --global user.password “新的密码”
修改密码
## git config --global user.email “xxxx@xxx.com(新的邮箱)”
修改邮箱
如果你这样去修改,那么就是全局修改
如何针对单个项目去配置专属的用户名和邮箱呢?
其实很简单
在每个项目的根目录下都有一个.git 文件夹,该文件夹是隐藏状态,先将其显示,
然后打开里面的config文件,在末尾添加一条配置信息:
[user]
name = compay_yourname
email = youremail@compay.cn
这样设置后,你在该项目下提交的信息即为你设置的信息。
唯一的缺点是他是只能配置该项目,如果有多个项目,需要分别配置下。