一、git 基本指令
1、创建版本库
- 在项目文件夹内, 执行: git init
2、提交文件
指令 | 描述 |
---|---|
git status | 进行查看文件状态 |
git add 文件名 | 将文件添加到暂存区 |
git commit | 提交文件到本地库 |
git commit -m “注释内容” | 编写注释,完成提交 |
3、查看文件提交记录
- 执行 git log 文件名 进行查看历史记录
- git log –pretty=oneline 文件名 (简易信息查看)
4、回退历史
- git reset –hard HEAD^ 回到上一次提交
- git rest – hard HEAD~n 回退 n 次操作(回退 2 次版本以上,就建议使用此指令)
5、版本穿越
- 进行查看历史记录的版本号,执行 git reflog 文件名
- 执行git reset –hard 版本号
6、还原文件
- git checkout – 文件名
7、删除某个文件
- 先删除文件,在git add 提交
8、git 结构
- 工作区:就是电脑的本地的磁盘目录
- 本地库:工作区有个掩藏目录.git,它就是 Git 的本地版本库
- 暂存区:一般存放在”git 目录”下的 index 文件(.git/index)中,所以我们把暂存区有时也叫索引区(index)。
9、创建分支
- git branch <分支名>
- git branch -v 查看分支
10、切换分支
- git checkout <分支名>
- 一步完成: git checkout -b <分支名>
11、合并分支
- 先切换到主干 git checkout master
- git merge <分支名>
12、冲突
冲突一般是指同一个文件同一位置的代码,在两个版本合并的时版本管理软件无法判断到底应该保留那个版本,因此会提示该文件发生冲突,需要手工判断解决冲突。
合并时冲突
程序合并时发生冲突系统会提示CONFLICT关键字,命令行后缀会进入MERGING状态,表示此时是解决冲突的状态。
解决冲突:
- 此时通过 git diff 可隐找到发生冲突的文件及冲突的内容。
- 然后修改冲突文件的内容,再次git add<file> 和 git commit 提交后,后缀MERGING消失,说明冲突解决完成。
二、git 与 github
图示:
1、增加远程地址
git remote add <远端代号> <远端地址>
<远端代号> 是指远程链接的代号,一般直接用 origin 做为代号,也可以自定义。
<远端地址>默认远程链接的 url
例如:git remote add origin https://github.com/user111/Helloworld.git
2、推送到远程库
git push <远端代号> <本地分支的名称>
<远端代号> 是指远程链接的代号
<分支名称> 是指要提交的分支名字,比如 master。
例如:git push origin master
3、从 GitHub 上克隆一个项目
git clone <远端地址><新项目目录名>
<远端地址> 是指远程链接的地址
<项目目录名> 是指为克隆的项目在本地新建的目录名称,可以不填,默认是 Github 的项目名。
命令执行完成后,会自动为这个远端地址建一个名为 origin 的代号。
例如: git clone https://github.com/user111/Helloworld.git hello_world
4、从 gitHub 更新项目
git pull <远端代号><远端分支名>
<远端代号> 是指远程链接的代号
<远端分支名> 是指远端的分支名称,如 master.
例如:git pull origin master
5、协作冲突
三、https VS ssh
ssh 模式与 https 模式的一个重要的好处就是,每次 push、pull、fetch 等操作时,不用重复填写用户名密码。(前提是你必须是这个项目的拥有者或合作者,且配置好了 ssh key)。
1、配置 SSH key
- 步骤 1:检查电脑上是否已经生成 SSH Key 在 git bash 下执行如下命令
- 步骤 2:创建 SSH Key: ssh-keygen -t rsa -C XXXXXX@hainan.net 成功的话在~/下生成.shh 文件夹,进去,打开 id_rsa.pub, 复制里面的 Key。
- 步骤 3:进入.sshwe 文件包,打印 id_rsa.pub 的内容,复制全部内容
- 步骤 4:登入 GitHub 后,右上角点击 setting
- 步骤 5:在左侧菜单中选择 SSH and GPG keys
- 步骤 6:Title 随便写,Key 把之前 id_rsa.pub 的内容复制进去,点击 Add SSH Key,设置 shh key 完成。
- 测试连通性:找到一个项目,要改用 ssh 连接
要建立新的远程代号
git@github.com:yuebuqun3333/jianfa.git(参考上面)
git remote add originssh git@github.com:yuebuqun3333/jianfa.git
以后再提交代码的时候就不用输入密码(第一次使用会要求输入个人 yes)
git push originssh master
四、Git 工作流
1、Git 工作流
简单来说就是,一个项目的成员们在工作中统一使用 Git 的方式。
2、集中式工作流
- 像 SVN 一样,集中式工作流以中央仓库为项目所修改的单店=点实体。所有的修改都是提交到 Master 这个分支上。
- 这种方式与 SVN 的主要区别就是开发人员有本地库,Git 很多特性并没有用到
3、GitFlow 工作流
- Gitflow 工作流通过为功能开发、发布准备和维护设立独立的分支,让发布迭代的过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。
4、分支种类
主干分支 master
主要负责管理正在运行的生产环境代码。永远保持与正在运行的生产环境完全一致。
开发分支 develop
主要负责管理正在开发过程的代码。一般情况下应该是最新的代码。
bug 修理分支 hotfix
主要负责管理生产环境下出现的紧急修复代码。从主干分支分出,修理完毕并测试上线后,并回主干分支。并回后,视情况可以删除该分支。
发布版本分支 release
较大的版本上线前,会从开发分支中分出发布版本分支,进行最后阶段的集成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段较稳定后可以视情况删除。
功能分支 feature
为了不影响较短周期的开发工作,一般把中长期开发模块,会从开发分支中独立出来。 开发完成后会合并到开发分支。