Git是目前世界上最先进的分布式版本控制系统
在项目文件夹内,执行: git init
新建文件后,通过git status 进行查看文件状态
将文件添加到暂存区 git add 文件名
提交文件到本地库 git commit
编写注释 ,完成提交
或者也可以git commit –m “注释内容”, 直接带注释提交
执行 git log 文件名 进行查看历史记录
git log --pretty=oneline 文件名 简易信息查看
git reset --hard HEAD^ 回退到上一次提交
git reset --hard HEAD~n 回退n次操作
进行查看历史记录的版本号,执行 git reflog 文件名
执行 git reset --hard 版本号
git checkout – 文件名
先删除文件
再git add 再提交
工作区(Working Directory):就是你电脑本地硬盘目录
本地库(Repository):工作区有个隐藏目录.git,它就是Git的本地版本库
暂存区(stage):一般存放在"git目录"下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
git branch <分支名>
git branch –v 查看分支
git checkout <分支名>
一步完成: git checkout –b <分支名>
先切换到主干 git checkout master
git merge <分支名>
冲突一般指同一个文件同一位置的代码,在两种版本合并时版本管理软件无法判断到底应该保留哪个版本,因此会提示该文件发生冲突,需要程序员来手工判断解决冲突。
合并时冲突:
程序合并时发生冲突系统会提示CONFLICT关键字,命令行后缀会进入MERGING状态,表示此时是解决冲突的状态。
此时通过git diff 可以找到发生冲突的文件及冲突的内容。
然后修改冲突文件的内容,再次git add 和git commit 提交后,后缀MERGING消失,说明冲突解决完成。
GitHub是一个Git项目托管网站,主要提供基于Git的版本托管服务
注意: 不要使用163的邮箱,有可能收不到验证邮件。
较长时间不使用有可能被Github冻结账号。请登录其客服页面https://github.com/contact,填写账号恢复申请。
图解GitHub的代码提交和克隆
git remote add <远端代号> <远端地址> 。
<远端代号> 是指远程链接的代号,一般直接用origin作代号,也可以自定义。
<远端地址> 默认远程链接的url
例: git remote add origin https://github.com/user111/Helloworld.git
git push <远端代号> <本地分支名称>。
<远端代号> 是指远程链接的代号。
<分支名称> 是指要提交的分支名字,比如master。
例: git push origin master
git clone <远端地址> <新项目目录名>。
<远端地址> 是指远程链接的地址。
<项目目录名> 是指为克隆的项目在本地新建的目录名称,可以不填,默认是GitHub的项目名。
命令执行完后,会自动为这个远端地址建一个名为origin的代号。
例 git clone https://github.com/user111/Helloworld.git hello_world
git pull <远端代号> <远端分支名>。
<远端代号> 是指远程链接的代号。
<远端分支名>是指远端的分支名称,如master。
例 git pull origin master
以上对项目的操作方式,必须是项目的创建者或者合作伙伴。
合作伙伴添加方式如下图: 在项目中点击settings页签,然后点击Collaborators,然后在文本框中搜索合作伙伴的邮箱或者账号。点击添加。
添加后GitHub会给合作伙伴对应的邮箱发一封,邀请邮件。
合作伙伴会收到邀请邮件。点击View invitation 按钮后会跳转至GitHub页面,让合作伙伴选择,是否接受邀请。
点击接受后,则合伙伙伴正式加入项目,获得直接提交代码的权限。
在上传或同步代码时,由于你和他人都改了同一文件的同一位置的代码,版本管理软件无法判断究竟以谁为准,就会报告冲突,需要程序员手工解决。
在GitHub网站上建立仓库,填写仓库相关信息
在idea中,settings →Version Control →Git
选择本地的Git.exe的位置
在idea中,settings →Version Control →GitHub
填写网站登录的用户名密码
两个开发人员同样一块代码,但是做了不同的修改,其中一个人提交了,另外一个人再提交就会报错。
可以直接选择Merge,idea会帮你把最新代码下载下来,然后跟你本地代码发生冲突
然后又三个选项,1、直接以你本地代码为准覆盖掉别人的
2、直接以别人代码为准覆盖掉你的
3、手工合并(推荐选择)
![(Git_GitHub_Inteli.assets/21_然后又三个选项,1、直接以你本地代码为准覆盖掉别人的.png)
像SVN一样,集中式工作流以中央仓库作为项目所有修改的单点实体。所有修改都提交到Master这个分支上。
这种方式与SVN的主要区别就是开发人员有本地库。Git很多特性并没有用到。
Gitflow工作流通过为功能开发、发布准备和维护设立了独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。
主干分支 master
主要负责管理正在运行的生产环境代码。永远保持与正在运行的生产环境完全一致。
开发分支 develop
主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。
bug修理分支 hotfix
主要负责管理生产环境下出现的紧急修复的代码。 从主干分支分出,修理完毕并测试上线后,并回主干分支。并回后,视情况可以删除该分支。
发布版本分支 release
较大的版本上线前,会从开发分支中分出发布版本分支,进行最后阶段的集成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段较稳定后可以视情况删除。
功能分支 feature
为了不影响较短周期的开发工作,一般把中长期开发模块,会从开发分支中独立出来。 开发完成后会合并到开发分支。
① 在这个分支下增加新代码,
本地提交,然后push到远端
之后可以在github上看到新的分支被上传
②如果该分支内容修改没有问题,可以合并到主干
首先切换到主干master
在主干master分支上选择要合并的分支进行Merge
① 在这个分支下增加新代码,
本地提交,然后push到远端
之后可以在github上看到新的分支被上传
②如果该分支内容修改没有问题,可以合并到主干
首先切换到主干master
在主干master分支上选择要合并的分支进行Merge
最后把经过合并的master, push到远端即完成了一个功能在主干上的提交。