赞
踩
- 在单人开发过程中,需要进行版本控制,以利于开发进度的控制
- 在多人开发过程中,不仅需要进行版本管理,还需要进行多人协同控制
- Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或大或小的项目
- Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件
- Git可以使用本地创建仓库与网络仓库,解决了集中管理型版本控制软件存在的一些问题(例如:SVN)。
- 官网:Git
下载Git:Git - Downloads
安装,除了安装位置外,其他一直下一步即可
安装完成后,在任意的文件目录下,右键都可以打开Git的命令行窗口。
Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识,--global表示全局属性,所有的git项目都会共用属性
配置用户名
$ git config --global user.name "xiaokh0707"
配置邮箱
$ git config --global user.email "653807260@qq.com"
此时就可以在C:\Users\Administrator.gitconfig文件可以查看到我们的配置信息。
- 工作区(Working Directory):电脑上的本地硬盘目录,平时存放项目代码的地方
- 暂存区(Statge):用于临时存放的你的改动,事实上它只是一个文件,保存即将提交到文件列表信息,一般存放在"git目录"下的index文件(.get/index)中,所以我们把暂存区有时也叫作索引(index)
- 版本库(Repository):工作区有个隐藏目录.get,它就是Git的本地仓库。
存储顺序:工作区--->>暂存区---->>版本库
git的工作流程:
1、在工作目录中添加、修改文件
2、将需要进行版本控制文件放入暂存区域;
3、将暂存区域的文件提交到git仓库
使用步骤:(首先设置电脑可以查看隐藏文件)
1.在任意位置创建空文件夹,作为项目目录,例如:在D盘右键创建git-repository文件夹
2.在项目文件夹内右键打开git bash窗口,输入命令:git init
此时git_repositroy目录下会生成一个隐藏的.get目录
3.在空白位置,右键新建一个文件,例如a.txt
4.输入命令:git add 文件名,此时是将文件添加到暂存区当中
5.输入命令:git status ,查看暂存区状态
6.如需删除,可以输入命令:git rm --cached 文件名 ,此时是从暂存区中删除了,工作目录中还会存在该文件,删除以后再次查看,该文件名颜色已经发生改变
7.(不推荐)如需提交文件到本地仓库,输入命令:git commit,提交完成后,会提示在文件中写一些备注(可写可不写),如需写可以使用i/a/o编辑文本(和Linux命令一样),然后保存并退出
推荐:使用git commit -m "注释内容",直接带注释提交
8.输入命令:git log 查看所有历史记录,输入命令:git log 文件名,查看该文件的历史记录
9.输入命令:git log --pretty=oneline 查看文件历史记录简易信息,输入命令:git log --pretty=oneline 文件名 查看该文件历史记录简易信息
10.(不推荐使用)输入命令:git reset --hard HEAD^ ,回退到上一次提交
输入命令:git reset --hard HEAD-n ,回退到n次操作
先修改一下a.txt文件,往里面添加内容,再提交
11.输入命令:git reflog 文件名,查看文件历史记录的版本号
输入命令:git reset --hard 版本号,跳转到该版本时候的状态
12.手动删除工作目录中的文件,然后输入命令:git checkout 文件名,可以恢复目录中已经删除的文件
13.手动删除工作目录中的文件,然后输入命令:git add 文件名(此时该命令表示提交删除文件的操作)
然后输入命令:git commit -m "删除文件" (此时才是真正删除了该文件,但是此次删除只是这一次操作的版本号没有了,其他的都可以恢复)
恢复文件某个版本,可指定之前的版本号
5. 分支的相关操作
创建分支
输入命令:git branch <分支名>
输入命令:git branch -v,查看分支
切换分支
输入命令:git checkout <分支名>
切换到分支后,在分支下的操作,master(主线)不会有任何变化
此时可以在工作目录下可以看到c.txt文件,但是当切换到master时,再去查看工作目录已经没有c.txt文件了
切换后
输入命令:git checkout -b <分支名> ,将创建分支,切换分支一起完成
合并分支
输入命令:git checkout master ,切换到主干
输入命令:git merge <分支名> ,合并分支
此时在工作目录中又可以查看到c.txt文件了
冲突问题:当主线和分支合并之后,分支和主线都会有相同的文件,此时在主线中修改该文件内容并提交,在分支中也修改该文件内容并提交,再次合并时就会出现冲突,此时文件中会显示冲突内容,我们需要手动解决再合并了。
当很多人协同开发的时候,每个人都在自己的本地仓库维护版本
但很重要的一点是,多人之间需要共享代码,合并代码,此时就需要一个远程仓库
有 很多远程仓库可以选择,比如 github(GitHub: Where the world builds software · GitHub),码云(Gitee - 基于 Git 的代码托管和研发协作平台);此两种可以注册自己测试使用,但如果是商业项目,需要更多支持,需要付费
公司内部也可以有自己构建的远程仓库
命令 | 描述 |
---|---|
git remote add 标识名(master) 远程地址 | 本地关联远程仓库 |
git push 标识名 master | 将本地仓库内容上传到远程仓库 |
git pull 标识名 master | 从远程仓库下载内容到本地仓库 |
git clone 远程地址 | 将远程仓库复制到本地,并自动形成一个本地仓库 |
1.在码云上常见仓库(裸库,只创建库,不创建文件)
2.增加远程地址:git remote add <远端代号> <远程仓库地址>
注册登录gitee,点击新建仓库
增加远程仓库的地址: git remote add origin https://gitee.com/xiaokh0707/test.git
3.推送到远程仓库:git push <远端代号> <本地分支名称>
git push origin master
本地创建目录,添加文件到本地仓库,然后推送到远程仓库
第一次连接,会让我们输入注册gitee的邮箱和密码
如果输入用户名和密码不成功,需要先去控制面板把之前的密码删除,也有可能是曾经使用过码云,但密码有过改动,再次使用时会提示重新输入密码。
推送成功
查看结果
别人提交或手动跟新远程仓库中的代码
更新到本地:git pull <远端代号> <远端分支名>
git pull origin master
打开工作空间下的a.txt文件
如果仓库已经被别人创建完毕,则可以通过git clone 将其复制到本地,手动创建目录,在目录下执行以下命令
git clone <远端地址> <新项目目录名称>
git clone https://gitee.com/xiaokh0707/test.git
新建一个文件夹,右键选择Git Bash Here
输入命令: git clone https://gitee.com/xiaokh0707/test.git
此时,文件夹中夹就下载了代码
打开settings,找到Git
需要手动下载一个Gitee插件,然后导入即可
(需要翻墙,访问的是外国网站,翻墙的方法,需要的百度)
下载成功了,找到插件jar包的位置
打开idea中的settings,找到pluigns
点击ok
创建一个项目,点击VCS
点击最下面的提交按钮
选中当前项目test,右键
更新完成
再次add,再次commit
切换版本测试
切换过后,版本就跳到了没修改代码之前
再跳回去
选中master,点击,再选择checkout
成功之后,去远程仓库查看,记得刷新页面
创建dev分支,然后创建一个类,然后合并到master主分支上,然后在master和dev分支中分别对当前类进行修改并提交到本地仓库,然后再合并,则会发生冲突,我们可以选择close,然后手动解决冲突即可。
克隆的项目创建本地仓库,并把项目提交到本地仓库。
创建dev分支,然后创建一个类,然后提交到本地仓库上
切换到master主分支,然后合并,然后修改这个dev分支创建的类,最后提交到本地仓库中
切换到dev分支,修改Dog类,然后提交到本地仓库了
切换到主分支,然后进行合并,会发生冲突
点击close,手动删除冲突的代码,然后提交到本地仓库
1、由管理员负责创建一个远程库,初始的库中什么也没有,为裸库。库的名称建议和项目同名
2、管理员将本地库上传到远程库
3、将其他开发人员拉入远程库的 开发成员列表中 ,使得其他开发人员可以访问该远程库。流程如下:
5. master分支设置为 protected分支,只有管理员有权限将代码合并到其中。dev分支设置为 常规分支所有开发人员都可以合并代码
1、初始化:在idea中clone 远程库,获得项目,会建立本地库。
2、后续的开发中,都要在dev分支上进行。开发完一个功能并测试通过后就commit 提交到本地的dev分支中,然后 上传(push)到远程dev分支中。
3、需要更新项目内容时,通过 pull 从远程仓库拉取内容。
4、注意:多人协同时,每次在 push 到远程库前,都先做一次pull,一来是把远程最新内容合并到本地,二来是核实本地内容是否和远程内容有冲突。
5、后续的开发,会接到一个个的功能任务,往复操作 2>、3>、4> 而已
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。