- Workspace:工作区
- Index / Stage:暂存区
- Repository:仓库区(或本地仓库)
- Remote:远程仓库
git基本操作
# 克隆
$ git clone [url]
# 添加
$ git add ./
# 提交
$ git commit -m “提交”
# 上传
$ git push
# 下拉更新
$ git pull
# 从远程获取代码库
$ git fetch
配置和查看信息
# 显示当前的Git配置
$ git config --list
# 编辑Git配置文件
$ git config -e [--global]
# 设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"
# 显示有变更的文件
$ git status
# 显示当前分支的版本历史
$ git log
# 显示commit历史,以及每次commit发生变更的文件
$ git log --stat
# 显示暂存区和工作区的差异
$ git diff
# 显示工作区与当前分支最新commit之间的差异
$ git diff HEAD
# 显示当前分支的最近几次提交
$ git reflog
git分支操作
# 查看当前分支
$ git branch
# 创建分支dev1
$ git branch dev1
# 切换到dev1分支
$ git checkout dev1
# 查看本地和远程分支, -r是查看远程分支
$ git branch -a
# 删除本地分支dev1
$ git branch -d dev1
# 删除远程分支
$ git push origin --delete dev1
# 合并分支:将dev2分支合并到当前分支中
$ git merge dev2
# 推送当前分支到远程分支,并创建分支
$ git push --set-upstream origin 分支名称
# 切换到到远程分支,并新建本地分支
$ git checkout -b 本地分支名 origin
# 推送到远程分支
$ git push -u origin
git回退操作
# 查看当前提交记录
$ git log
# 回退提交, 可以回退到上一次的提交
$ git reset --hard 版本号
# 回退上一个版本 HEAD^^ 上上一个版本
$ git reset --hard HEAD^
# 显示所有的分支操作,包裹删除的记录也会有,也可以回退
$ git reflog
git标记操作
# 列出所有tag
$ git tag
# 新建一个tag在当前commit
$ git tag [tag]
# 新建一个tag在指定commit
$ git tag [tag] [commit]
# 删除本地标记
$ git tag -d [tag]
# 删除远程tag
$ git push origin :refs/tags/[tagName]
# 查看tag信息
$ git show [tag]
# 提交指定tag
$ git push [remote] [tag]
# 提交所有tag
$ git push [remote] --tags
# 推送远程标记
$ git push origin [tagName]
vim 文件名字,用来打开文件
i进入编辑模式,开始修改代码
esc退出编辑模式,:wq 保存并退出
其他
# 生成一个可供发布的压缩包
$ git archive
git pull和git fetch的区别是什么
在我们开发过程中,代码仓库至少会有3个仓库/副本:
- 本地工作目录:也就是我们开发过程中正在编辑的工作目录
- 本地仓库:由于git是分布式的,所以每个开发者本地都会有一个本地仓库,当我们通过git commit提交代码时,更改就从本地工作目录提交到了本地仓库
- 远程仓库:顾名思义,就是在远程服务器上存储的仓库,例如Github、Gitlab,当我们使用git push推送代码时,代码就从本地仓库推到了远程仓库
git fetch
在拉取代码过程中,git fetch会首先检查本地仓库和远程仓库的差异,检查哪些不存在于本地仓库,然后将这些变动的提交拉取到本地。
但是,请注意,它是把远程提交拉取到本地仓库,而不是本地工作目录,它不会自行将这些新数据合并到当前工作目录中,我们需要继续执行git merge才会把这些变动合并到当前工作目录。
git pull
它直接获取远程的最新提交,直接拉取并合并到本地工作目录,而且在合并过程中不会经过我们的审查,如果不仔细检查,这样很容易遇到冲突。
相比之下,git fetch是一个更安全的选择,因为它从你的远程仓库拉入所有的提交,但不会对你的本地文件做任何修改。这给了你足够时间去发现远程仓库自从你上次拉取后到现在为止发生的变化。你可以在合并前检查哪些文件有变化,哪些文件可能导致冲突。
而git pull相当于运行git fetch,然后立即将你的改动合并到本地仓库。
这样的确少了一个步骤,但是也会带来一些风险。
总结:
1、git fetch 能够直接更改远端跟踪分支,而git pull无法直接对远程跟踪分支操作;
$ git fetch origin
2、git fetch 将数据拉取到本地仓库不会自动合并或修改当前的工作,git pull是从远程获取最新版本并git merge到本地,会自动合并或修改当前的工作。
生成SSH
# 添加自己的邮箱 注:C大写
$ ssh-keygen -t rsa -C "qq@qq.com"
查看公钥: 打开公钥存储文件,复制内容
将公钥复制到git仓库中。
# 创建连接
$ ssh -T git@gitee.com
问题:ssh-keygen 不是内部或外部命令
解决方法:
1.找到Git(安装目录)/usr/bin目录下的ssh-keygen.exe(如果找不到,可以在计算机全局搜索)
2.属性–>高级系统设置–>环境变量–>系统变量,找到Path变量,进行编辑,End到最后,输入分号,粘贴复制的ssh-keygen所在的路径,保存;
重新cmd,执行ssh-keygen,成功!
关注微信公众号,了解更多前端知识。更有小程序和UI设计、后台node等方面的内容哦