Git 使用教程

Git 简介

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

本篇博客主要参考
Runoob Git 教程
廖雪峰 Git 教程

1.Git 的安装与配置

(1)安装
下载链接:https://git-scm.com/downloads
无脑安装即可
右键可看到 “Git Bash Here” 即表示安装成功
(2)配置
安装完成后,配置下个人信息,右键点击 “Git Bash Here” ,输入以下命令

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

注意:
git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址

2.Git 版本库基本操作

2.1 版本库简介

版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
Git 使用教程_第1张图片
更全面地,

  • Workspace:工作区,即电脑上的目录
  • Index / Stage:暂存区,一般存放在 “.git目录下” 下的index文件(.git/index)中
  • Repository:仓库区(或本地仓库),工作区有一个隐藏目录.git,就是本地仓库
  • Remote:远程仓库
    注意:
    箭头上的单词就是以后常用操作的命令
    Git 使用教程_第2张图片
2.2 创建本地仓库

(1)初始化

假如电脑上有一个叫 “git_test” 的文件夹,存放着某个工程的代码
输入以下命令

输入以下命令,在 git_test 文件夹下建立仓库

git init git_test

在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录
(2)添加文件到仓库
不管是创建的新文件,还是修改的旧文件,提交过程是一样的,分为两步:

git add 
git commit -m 

首先,使用 git add 将文件添加到缓存区

git add . // 添加目录下的所有文件到缓存区
git add readme.txt // 添加单个文件到缓存区

然后,使用 git commit 将文件添加到仓库

git commit -m "commit first time" // 一次提交所有文件到仓库,并添加修改 log

(3)文件状态与log查询
A)查询文件下所有文件的状态,比如说是否有修改

git status

Git 使用教程_第3张图片
B)查看文件修改的内容

git diff

Git 使用教程_第4张图片
C)查看上传的log

git log
2.3 版本回退

顾名思义,回到之前修改的某一版本,命令如下:

 git reset --hard HEAD^

上面命令是退回到以前的版本,怎么从之前的版本回到之后的或现在的版本

 git reset --hard  910eb11
  • 其中,910eb11 为版本号的前几位,通过 git reflog 可查看
2.4 撤销修改

撤销修改分为两种情况:
(1)情况一:文件还没有使用 git add . 提交到缓存区

git checkout -- <file>
or
git restore <file>

(2)情况二:文件已经使用 git add . 提交到缓存区
使用下面的命令将文件从缓存区撤回到工作区,再使用(1)里介绍的命令撤销修改

git reset HEAD <file>
or
git restore -- staged <file>
2.5 文件删除

(1)情况一:误删
与撤销修改一致

git checkout -- <file>
or
git restore <file>

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”
(2)情况二:确定删除

git rm <file>
git commit -m "remove file"

3.远程仓库

3.1 创建远程仓库
3.2 仓库clone

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆

git clone git@github.com:michaelliao/gitskills.git

Git支持多种协议,包括https,但ssh协议速度最快

3.3 关联本地仓库与远程仓库

Git自动把本地的master分支和远程的master分支对应起来,命令如下

 git remote add origin git@github.com:michaelliao/learngit.git

其中,origin 为远程库的本地别名
(1)本地库首次提交

 git push -u origin master

我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
(2)之后提交

git push origin master

4.分支管理

4.1 创建与合并分支

(1)创建并切换到分支

git checkout -b dev

dev 为分支名
相当于以下两条命令

git branch dev
git checkout dev

(2)查看当前分支

$ git branch
* dev
  master

git branch命令会列出所有分支,当前分支前面会标一个 * 号
(3)切换回主分支

git checkout master

(4)合并分支
切换回主分支后,运行以下命令,将 dev 分支合并到 master 分支上

git merge dev

git merge命令用于合并指定分支到当前分支
(5)删除分支
合并后,若要删除 dev 分支,则可

git branch -d dev

(6)小结

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>或者git switch <name>

创建+切换分支:git checkout -b <name>或者git switch -c <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>
4.2 常用分支

(1)解决冲突
冲突主要来自不同分支对相同文件做了修改
(2)Bug 分支
先说明一下情况:

  • 在工作区内,不提交(add/commit)就创建并切换分支,切换分支后,原分支添加的内容将消失

好,现在进入正题

  • 假如现在代码出现bug,你想新建一个新的分支,但又不想提交现在的代码,怎么办?

首先,保护现场

git stash

此时,可放心的创建并切换分支

git checkout -b bug-101

修复bug后,提交并切换回master分支,完成合并,删除 bug-101 分支

转到工作分支,

git stash apply // 恢复工作区
git stash drop // 删除stash内容
or
git stash pop // 恢复同时删除

(3)Feature 分支
所应用的场景为添加新功能
若添加一个vulcan的功能,则可建立如下分支

git switch -c feature-vulcan

若要强行删除一个没有合并的分支

git branch -D feature-vulcan
4.3 多人协作

(1)远程库与本地库连接

git remote add origin git@github.com:michaelliao/learngit.git

(2)查看远程库信息

$ git remote
origin

or

$ git remote -v
origin  git@github.com:michaelliao/learngit.git (fetch)
origin  git@github.com:michaelliao/learngit.git (push)

(3)推送分支
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:

git push origin master // 推送到远程 master
git push origin dev   // 推送到远程 dev

(3)抓取分支
先抓再推,避免冲突

git pull <remote> <branch>
git push <remote> <branch>   // eg: git push origin master; origin远程库本地别名,master分支名

(4)小结

查看远程库信息,使用git remote -v;

本地新建的分支如果不推送到远程,对其他人就是不可见的;

从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;

从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

5 标签管理

5.1 创建标签

标签主要是为提交的版本打上版本号
(1)打标签

git tag v0.1

(2)查看标签

git tag

你可能感兴趣的:(软件操作技巧)