加载中
Git基础
安装git
安装之后要设置自身全局配置
创建版本库
初始化一个git仓库
添加文件到git仓库
分支管理
可视化教程参考git分支管理教程
本地
status
查看工作区状态
commit
branch
分支相当于节点指针
merge
rebase
checkout
checkout可以让你的工作区在各个结点之间自由移动
reset和revert
- reset:可以撤销节点回到历史上任何一个节点,撤销后的节点相当于不存在
- revert:可以撤销某个提交,产生一个新的节点
cherry-pick
cherry-pick可以将某些提交放在当前节点的下面
tag
对于一些特殊的提交节点(特定的版本)可以使用tag打标签
describe
使用describe命名可以查看到当前或指定节点到最近tag的距离
远程
远程仓库相当于本地仓库的拷贝,在本地远程分支的名字是<remote name>/<branch name>,<remote name>默认为origin
clone
fetch
fetch命令用于从远程仓库获取数据,但是并没有修改本地文件
pull
pull相当于将fetch和merge/rebase两个步骤合为一个步骤
push
push是将本地的提交更新到远程仓库中
remote tracking
使用clone之后本地分支和远程分支默认建立连接,使用git push和git pull自动指向对应的分支
使用下述命令可以建立连接
修改最近一次提交git commit --amend
时光穿梭
版本回退
查看工作区状态
查看修改的内容
查看提交历史,可以得知提交ID,即commit_id
reset
HEAD指向的是当前的版本,使用命令指向历史的版本
reset命令中有三个参数
- soft:软回退表示将本地版本库的头指针重置到指定的版本,且这次提交后的所有变更移动到暂存区
- 默认mixed:将本地版本库的头指针重置到指定的版本,且重置暂存区,所有变更移动到工作区
- hard:将本地版本库的头指针重置到指定的版本,重置暂存区和工作区
此外:git reset HEAD filename 回退文件,将文件从暂存区回退到工作区,不能使用参数
reflog
重返未来则用命令
Git stash用法
Git stash用于将未提交的修改保存起来,用于后续恢复当前工作目录
工作区和暂存区
工作区git add到暂存区,然后git commit到本地仓库
管理修改
只有git add之后才能git commit到本地仓库
查看工作区和版本库里最新版本的区别:
撤销修改
场景1:当改乱工作区的文件内容后,要丢弃修改
场景2:如果已经添加到了暂存区要丢弃修改,先:
在按场景1操作。
场景3:提交到了版本库,参考版本回退
删除文件
先rm file删除工作区文件,在使用命令删除本地仓库文件
如果删错了,版本库中还有,可以一键还原
git checkout其实是用版本库里的版本替代工作区的版本,无论修改还是删除都可以一键还原
远程仓库
添加远程库
首先创建ssh key
在用户主目录里找到.ssh目录,id_rsa.pub是公钥,将里边的ssh复制,在GitHub上打开Account settings的“SSH Key“页面
然后将本地库和远程库关联
上述命令中origin是指定的远程库名称
然后是将本地库的代码推送到远程库
第一次要有-u,上述的master为分支的名称,首次会发生警告
查看远程库信息
从远端库克隆
与远程库建立关联后可以直接git clone
也可以使用https协议
如果要克隆gitlab中的项目,要输入username和password登录,GIT_TERMINAL_PROMPT控制是否会出现登录界面
分支管理
Feature分支
切回dev分支
强行删除分支:
多人协作
查看远程库信息
推送分支
抓取分支
注意clone的时候只能clone到main这一个分支
clone其他分支时
当与他人的合并产生冲突时先git pull
解决冲突后再推送
如果git pull还是失败,那么因为本地dev和远程的origin/dev未建立链接,应设置链接
rebase操作可以把本地未push的分叉提交历史整理成直线
标签管理
创建标签
切换到本分支
git tag 可以查看到所有标签
如果要打历史的标签可以先查找历史版本
上边--pretty=oneline表示每个版本一行输出;--abbrev-commit表示提交号只显示前几位,找到对应的commit id
若要查看标签信息
还可以给标签添加信息说明
操作标签
删除标签
将标签推送到远程库
删除远程库的标签
上一篇
Git问题汇总
下一篇
完整Git开发规范
Loading...