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...
文章列表

加载中