目录
- Git 和其它版本控制系统的主要差别在于 Git 对待数据的方式。其它系统如CVS、Subversion等,通常将存储的信息看作一组基本文件和各文件随时间逐步累积的差异 ,故通常被称为基于差异(delta-based)的版本控制软件。
- Git 则不然,Git 存储的数据更像是对文件系统的一系列快照。在 Git 中,每当你提交更新或保存项目状态时,它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。快照的好处在于,进行最常见的 stage、push、commit 等操作时,只需要移动指针指向不同的快照即可。相对于传统的版本控制软件,这种基于指针的机制开销极其小,性能极其强。
常用命令
- 初始化
git config --global user.name "fantab01" #针对当前仓库配置⽤户名。
git config --global user.email "fantaibo@outlook.com" #--global参数配置全局⽤户名。
git config --global init.defaultBranch main
git config --list #检查配置
ssh-keygen -t rsa -C "fantaibo@outlook.com" #一路回车
- 基础命令
git init <directory> #在指定的⽬录下创建⼀个空仓库。不带参数将在当前⽬录下创建。
git clone <repo> #克隆⼀个指定仓到本地,指定仓可为本地仓库路径或者远程路径。
git status #显示哪些⽂件已被staged、未被staged以及未被tracked。
git log #以缺省格式显示全部commit历史。更多⾃定义参数请参考后续部分。
- add
git add <directory> #将指定⽬录所有修改加⼊下⼀次commit。
git add <directory> #将<directory>替换成<file>将添加指定⽂件的修改。
git remote add origin git@github.com:fantab01/仓库名.git
git remote add origin git@gitee.com:fantab01/仓库名.git
- commit
git commit -m <message> #提交暂存区的修改,使⽤指定文本作为提交信息。
git commit -m <message> --amend #将当前staged修改合并到最近⼀次commit。
- push
git push origin main #推送本地master分支至远程同名分支,若没有则创建
git push -u origin main #加-u设其为默认远程分支
git push -f origin main #强制推送
- pull
git pull <remote> #从指定远程库抓取所有分⽀commit,合并到本地库。
git pull --rebase #抓取所有远程分⽀,以rebase⽽非merge模式并⼊本地仓。
- fetch
#fetch与pull的区别是,fetch相当于pull加merge。
git fetch <remote> <branch> #从指定远程库抓取指定分支所有commit到本地库。
git fetch <remote> <branch> #去掉<branch>将抓取远程所有分⽀。
- reset
git reset #移除暂存区修改,保持⼯作区不变。
git reset --hard #移除暂存区修改,强制删除⼯作区修改。
git reset <commit> #回滚当前分⽀到指定commit,移除暂存区修改,保持⼯作区不变。
git reset --hard <commit> #回滚当前分⽀到指定commit,移除暂存区修改,强制删除⼯作区修改
- branch
git branch #显示本地repo的所有分⽀
git switch -c <branch> #创建并切换到⼀个新的名为<branch>的分⽀;无-c参数将切换已有分⽀。
git merge <branch> #将指定分⽀<branch>合并到当前分⽀。