Git是一个版本控制工具,本文者将从使用的角度出发,介绍最常见的基本用法,一篇blog即可快速上手。
本文以64位windows系统为例。
个人开发熟悉基础用法即可,进阶用法针对项目团队进行。
基础用法
安装 Git
- 下载Git,进入下载地址点击
clip here to download
即可。(若下载速度慢可考虑科学上网) - 安装,日常使用一路 next 即可,若有其他要求参考其他 blog
- 安装后可以在开始菜单中看到Git的三个启动图标(Git Bash、Git CMD(Deprecated)、Git GUI),至此,安装完毕
安装完毕后,要做的第一件事就是设置你的用户名和邮件地址,因为每次 Git 提交需要这些信息。步骤如下:
- 打开 Git Bash
- 配置全局的用户名及邮箱,
--global
标签意味着接下来的所有操作都默认使用此用户信息$ git config --global user.name "John Doe" $ git config --global user.email [email protected] 复制代码
新建仓库
仓库是存放代码文件的地方。
在 Git Bash 中
- 创建仓库所在文件夹,并跳转至对应路径
cd /d/_data/Git_files/test
- 使用
git init
新建仓库,此时文件夹内会有个.git
的隐藏文件夹,这里会记录用户所有的变更信息 - 复制代码文件到仓库内,使用
git status
查看仓库状态信息注意到文件夹颜色是红色的,代表仓库内容有更改,且还未提交。
在 git 中,文件有 4 种状态。
- Modified 状态:红色,代表文件已更改且未加入“暂存区”
- Staged 状态:绿色,代表文件已加入“暂存区”
这里的概念及流程图不懂没关系,只要懂如何提交和回退就行了,提交和回退的方法见下文。
提交
要提交更改有两个步骤:
-
使用
git add <filename>
将文件加入暂存区(使用git add .
可一次性将仓库内所有文件加入),此时再次使用git status
查看信息,发现文件夹变绿。 -
接下来再提交这次变更,执行
git commit -m <message>
提交,-m
代表附带<message>
信息,用于附带本次提交的备注信息,如git commit -m "my first commit"
。当代码文件变更时(使用
git status
发现文件名变红),需要再次执行“步骤4”提交变更。注意:
git commit
只会提交那些加入到暂存区的文件(git status
中为绿色的文件),若在提交前想反悔,执行git reset <filename>
将文件退出暂存区状态(git status
变红)。 -
可以通过
git log
查看提交日志,红框为每次提交的 commitID,该值唯一。
回退
若对新版本不满意,想回到旧版本,可通过 git reset <commitID> [--参数]
实现版本回退。
参数有三种,不带参数默认为 --mixed
:
--hard
:不保存所有更改--soft
:保留变更且变更内容处于 Staged,红色--mixed
:保留变更且变更内容处于 Modified,绿色
使用 git reflog
查看所有提交过的版本。
注意:这里的 commitID 是 7 位的,与
git log
中的不同,实际上也只需要取前7位就能唯一确定ID值。
若想回到任意版本,使用 git reset <commitID>
即可。
若想回到最新版本,可以直接使用 git pull
。
进阶用法
配置命令别名
使用 alias 可以自定义命令,简化命令。
编辑仓库内 .git
隐藏文件夹中的 config
文件,添加 alias 别名如图即可使用。
如图,后续执行 git ad
命令相当于执行 git add .
。
常用别名设置(来源于网络)
分支
使用分支,可以让我们从开发主线上分离出来,以免影响开发主线。开发项目时,一般一个人负责一个分支。
分支相当于两条并行的路线,两者相互独立、方向不同,一条路上的改动不会影响另一条,如图所示。
通过 git checkout -b <name> <template>
创建新的分支,参数 <name>
是新分支的名字,参数 <template>
是指定以哪个现有分支或者 commit 为模板,缺省(默认)以当前分支为模板。
以哪个分支为模板,就会继承该分支的一切,包括之前的所有提交的记录,相当于拷贝了一个副本,但之后在副本这个分支上的所有修改与原有分支无关。
使用 git checkout <name>
切换到名为 <name>
的分支。
通过 git branch
查看所有分支,带 *
号且高亮的是当前所在分支。
以后若想回到某个版本,可以直接切换分支,而不需要查找 commitID ,更为方便。
合并
可以将其他分支上的改动合并到本分支,如图所示。
注意只是合并分支的变更,而不是内容!合并不改变其他分支的内容。
使用 git merge <branchName>
将分支"branchName" 的 commit 记录合并到当前分支。
远程仓库
使用 git clone [url]
将远程仓库文件夹下载至本地, [url]
是你要拷贝的项目。
git push <远程主机名> <本地分支名>:<远程分支名>
命令用于从将本地的分支版本上传到远程并合并。
若使用 git push
提交时提示没有上流分支,需执行 git push --set-upstream origin bc-a
将远程仓库的bc-a分支作为本地bc-a的上流分支,之后再使用 git push
可以直接将本地分支推送至远程仓库的上流分支了。
使用 git fetch [clias]
拉取远程仓库信息,告诉git去获取它有你没有的数据。
git merge [alias]/[branch]
将服务器上的任何共性合并到你当前的分支。
在本地创建分支时,若想以远程仓库里的分支为模板,则命令应改为 git checkout -b <分支名> origin <远程分支名>
git pull
,等同于先 fetch 再自动 merge
rebase
rebase 变基,即在基础分支被更改的情况下,将当前分支的所有更改附加到新的基础分支上,但不改变基础分支,相当于更新当前分支的基础分支。
使用 git rebase <分支名>
把当前分支的后续修改依次应用于master分支。
使用 git rebase --continue
继续下一个结点。
Reference
超详细Git 安装教程(Windows)__阿衡_的博客-CSDN博客_安装git
Git - 初次运行 Git 前的配置 (git-scm.com)