Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
本篇博客主要参考
Runoob Git 教程
廖雪峰 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地址。
版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
更全面地,
(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 diff
git log
顾名思义,回到之前修改的某一版本,命令如下:
git reset --hard HEAD^
上面命令是退回到以前的版本,怎么从之前的版本回到之后的或现在的版本
git reset --hard 910eb11
撤销修改分为两种情况:
(1)情况一:文件还没有使用 git add . 提交到缓存区
git checkout -- <file>
or
git restore <file>
(2)情况二:文件已经使用 git add . 提交到缓存区
使用下面的命令将文件从缓存区撤回到工作区,再使用(1)里介绍的命令撤销修改
git reset HEAD <file>
or
git restore -- staged <file>
(1)情况一:误删
与撤销修改一致
git checkout -- <file>
or
git restore <file>
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”
(2)情况二:确定删除
git rm <file>
git commit -m "remove file"
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆
git clone git@github.com:michaelliao/gitskills.git
Git支持多种协议,包括https,但ssh协议速度最快
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
(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>
(1)解决冲突
冲突主要来自不同分支对相同文件做了修改
(2)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
(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,如果有冲突,要先处理冲突。
标签主要是为提交的版本打上版本号
(1)打标签
git tag v0.1
(2)查看标签
git tag