文章目录
1.Git概述
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
1.1 基本术语
- Fetch(获取),从远程代码库更新数据到本地代码库。注意:Fetch 只是将代码更新到本地代码库,你需要检出(check out)或与当前工作分支合并(merge)才能在你的工作目录中看到代码的改变。
- Pull(拉取),从远程代码库更新数据到本地代码库,并与当前工作分支合并,等同于 Fetch + Merge。
- Push(推送),将本地代码库中已提交(commit)的数据推送到指定的 remote,没有 commit 的数据,不会push
- HEAD,指向你正在工作中的本地分支的指针
- Master 分支:主分支,所有提供给用户使用的正式版本,都在这个主分支上发布。
- Tags(标签):用来记录重要的版本历史,例如里程碑版本
- Origin:默认的 remote的名称
- Git clone(克隆版本库):从服务端将项目的版本库克隆下来
- Git init(在本地初始化版本库):在本地创建版本库的时候使用
1.2 工作流程
1.3 基本概念
Git 工作区、暂存区和版本库概念:
-
工作区(workplace):就是你在电脑里能看到的目录。
-
暂存区(Index):英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
-
版本库(Repository):工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
1.4 状态说明
- 如果本地文件名颜色为红色,表示该文件是新增的本地文件且没有add。可以右键文件名(NEWREADME.md)->git->add,或者右键项目名(learn-ngari-framework-myself)->git->add。
- 如果本地文件名颜色为绿色,表示该文件是新增的本地文件且已经add过了,可以视同文件名颜色为蓝色的文件,直接操作commit然后push。
- 如果本地文件名颜色为蓝色,表示该文件有修改,但是没有commit过,可以右键文件名(README.md)->git->commit,或者右键项目名(learn-ngari-framework-myself)->git->commit。
- 如果本地文件名颜色为黑色,有两种可能。第一种:本地确实没有做任何修改;第二种:有修改且commit过,但是没有push。
1.5 注意事项
- 提交代码
- fetch --> pull --> add --> commit --> push
- 由于本地代码可能会落后于远端,为确保准确性,在提交代码前必须先fetch,再pull,然后再操作commit。
- 以上操作可以使用命令行,也可以使用IDEA中的可视化操作工具。(VCS—>Git)
- 本地配置文件不要提交提交到远端分支,由于每个人的本地路径、启动配置等不尽相同,如果提交到远端分支拉取的时候会存在大量的冲突,且合并冲突无意义,要求大家本地的配置文件不要勾选上传到远端分支。如果不想看到这些文件出现,可以在自己的项目中增加ignore文件,配置一下即可。
- 下载代码
- 下载代码之前我们需要先设置一下Git的SSH Key
- 设置完毕以后,在IDEA启动页找到Check out from Version Control选项
- 然后在相应的代码仓库里面找到项目的对应分支的SSH地址,输入密码以后就会下载代码了
2.Git命令
2.1 创建仓库
2.1.1 git init
使用当前目录作为目录,只需要打开Git Bash,输入下面指令即可。
git init
如果是指定目录作为仓库(newrepo为指定目录),则使用
git init <newrepo>
2.1.2 git clone
命令 | 说明 |
---|---|
git clone <repo> | 克隆仓库至当前目录 |
git clone <repo> <directory> | 克隆仓库到指定的目录 |
2.1.3 git config
git 的设置使用 git config 命令。
命令 | 说明 |
---|---|
git config --list | 使用t显示当前的 git 配置信息 |
git config -e | 编辑 git 配置文件,针对当前仓库 |
git config -e --global | 同样的编辑git配置文件,不过是针对所有仓库 |
git config --global user.name “name” | 设置提交代码时的用户名 |
git config --global user.email xxx@163.com | 设置提交提交代码时的用户邮箱 |
注意:如果去掉 –global 参数只对当前仓库有效。
2.2 基本操作
2.2.1 提交与修改
命令 | 说明 |
---|---|
git add <filen name> | 添加文件到暂存区 |
git status | 查看仓库当前的状态,显示有变更的文件。 |
git diff | 比较文件的不同,即暂存区和工作区的差异。 |
git commit -m ”提交备注“ | 提交暂存区到本地仓库,-m是添加提交备注。 |
git commit --amend | 重写上一次的提交信息,命令执行会进入到编辑器页面 |
git reset --hard HEAD^ | 回退版本到上一个版本,^的个数代表回退到当前版本的第几个版本。 |
git reset --hard <版本号> | 我们可以使用git reflog获得版本号,然后使用该命令回退到指定版本 |
git rm <file name> | 将文件从暂存区和工作区中删除。 |
git mv <old dir> <new dir> | 移动或重命名工作区文件。 |
2.2.2 查看日志
命令 | 说明 |
---|---|
git log | 查看历史提交记录 |
git blame <file name> | 以列表形式查看指定文件的历史修改记录 |
git reflog | 查看精简的提交日志 |
2.2.3 远程操作
命令 | 说明 |
---|---|
git remote | 列出已经存在的远程分支 |
git remote -v | 列出详细信息,在每一个名字后面列出其远程url, -v 选项显示对应的克隆地址 |
git remote add url | 添加一个远程仓库 |
git fetch | 从远程获取代码库 |
git pull | 下载远程代码并合并 |
git push | 上传远程代码并合并 |
2.3 分支管理
命令 | 说明 |
---|---|
git branch | 列出所有分支 |
git branch -d <branch name> | 删除分支 |
git branch <branch name> | 创建新的分支 |
git checkout <branch name> | 切换分支 |
git merge <branch name> | 将某一分支合并到当前分支 |
| 创建新的分支 |
| git checkout <branch name> | 切换分支 |
| git merge <branch name> | 将某一分支合并到当前分支 |
合并分支要注意解决冲突。