Git 使用指南

145 阅读4分钟

Git 安装

MacOS 系统安装 Git

安装 Xcode,在菜单栏中选择Xcode > Preferences > Locations,或者直接快捷键command + ,,选择Command Line Tools,点Install就可以完成安装了

Windows 系统安装 Git
  1. Git官网 下载安装程序,然后按默认选项安装即可

  2. 安装完成后,在开始菜单里找到Git > Git Bash,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

配置当前机器的标识
git config --global user.name "<Your Name>"
git config --global user.email "<Your E-mail>"

Git 安装完成后还需最后一步配置,这样配置是由于 Git 是分布式版本控制系统,所以每台机器需要用户名和邮箱作为一个标识

原理 / 流程

Git 包含有四个区
  1. 工作区(Workspace)
  2. 暂存区(Index / Stage)
  3. 本地仓库(Repository)
  4. 远程仓库(Remote)
Git 流程图
graph LR;
Workspace(工作区)
Index(暂存区)
Repository(本地仓库)
Remote(远程仓库)
Workspace-->|add|Index-->|commit|Repository
Repository-->|push|Remote
Repository-->|checkout|Workspace
Remote-->|fetch/clone|Repository
Remote-->|pull/clone|Workspace
版本库

版本库可以理解为是一个目录,该目录里的所有的文件都可以被 Git 管理起来,每个文件的修改、删除,Git都能追踪,以便任何时刻都能追踪历史的版本

基础操作

创建版本库

即把当前目录变成 Git 可以管理的仓库,使用命令:

git init
将文件提交至暂存区

将文件 file 从工作区添加到暂存区,如果要添加当前目录下的所有文件,可用"."表示所有文件:

git add <file> / git add .
将文件提交至本地仓库

将暂存区的文件全部提交至本地仓库,提交后暂存区就没有任何文件了:

git commit -m "<注释信息>"
查看仓库的状态

比如和最近一次 commit 相比,工作区文件是否有修改:

git status
查看具体修改内容
git diff

如果暂存区为空,git diff比较工作区和最近一次 commit 的代码的具体差异;

如果暂存区不为空,git diff比较工作区和暂存区的具体差异

版本回退

HEAD指向提交区里的最新的版本,HEAD^指向上一版本,HEAD^^指向上两版本,HEAD~n指向上n个版本,这些指针都是可以当作提交ID使用

回退

将工作区的文件回退到提交ID对应的状态,并把提交区的HEAD指针指向对应的节点

git reset --hard <提交ID>
查看提交日志
git log
查看所有操作记录
git reflog

分支管理

查看分支

不加参数的话默认显示本地分支,加上参数-r的话,显示的是远程仓库的分支:

git branch [-r]
创建分支

创建分支branch

git branch <branch>
切换分支

切换到分支branch,如果加上参数-c的话,表示创建分支branch并切换到该分支:

git switch [-c] <branch>
合并分支

将分支branch合并到当前分支:

git merge <branch>
删除分支

如果分支branch有被 push 到远程仓库或者 merge 到 HEAD,使用-d参数可以直接删除该分支,如果没有则会删除失败,这时可以使用参数-D强制删除:

git branch -d/-D <branch>

远程仓库

给远程仓库取别名

在本地保存远程仓库的地址 url,并取名为origin

git remote add <origin> <远程仓库地址url>
显示远程仓库

显示所有远程仓库名称,以及其地址 url:

git remote -v
远程仓库删除&改名
git remote rm <origin> # 删除远程仓库 origin
git remote rename <old_name> <new_name> # 修改仓库 old_name 为 new_name
push

将本地仓库当前分支的内容推送到到远程仓库originbranch分支中,如果加上参数-u,可以使本地的当前分支追踪远程仓库的branch分支,以后只需git push命令即可推送:

git push [-u] <origin> <branch>
pull / fetch

pull将远程仓库originbranch分支拉取到本地仓库的当前分支

git pull <origin> <branch>

fetch则是将文件从远程仓库拉取到本地仓库,但是不更工作区的代码

git fetch
追踪远程仓库

每次 push 和 pull 都输入远程仓库的分支名非常麻烦且没必要,因此可以使得本地当前分支追踪远程仓库originbranch分支,使得每次 push、pull 操作都有默认的远程分支:

git branch -u <origin>/<branch>
查看追踪关系

查看本地分支与远程分支的追踪关系:

git branch -vv
创建已追踪的本地分支

在本地创建与远程分支branch同名的分支,并使本地分支branch追踪远程仓库分支branch

git checkout --track <origin>/<branch>

创建本地分支mybranch,并使本地分支mybranch追踪远程仓库originbranch分支:

git checkout -b <mybranch> <origin>/<branch>
从远程仓库克隆
git clone <远程仓库地址url>

git clone相当于三个操作:

git init
git remote add origin <远程仓库地址url>
git fetch
git checkout --track origin/master

Tips

想将远程仓库回退至上一提交版本

先把本地的分支和工作区回退到上一次提交的版本

git reset --hard HEAD^

使用git push要将本地分支推上远程分支时会发现推不了,提示让你git pull,但是git pull的话就又回到最新版本了,相当于没回退

可使用强制推的方式将代码推上远程仓库

git push -f