Git和GitHub
- Git:目前世界上最先进的分布式版本控制系统
- GitHub:用Git做版本控制的代码托管平台
- 集中式:依赖于某个中心,如果中心服务器瘫痪,则整体网络不能使用
分布式:去中心,不依赖中心,每个结点都可以独立使用git - 版本控制:
1.追踪文件的变更,什么人在什么时间改了什么内容都会记录下来
2.在多人协同做项目的时候,版本控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高协同开发的效率。 - Git相关概念
工作区:没有被add的文件
暂存区:已经被add过的文件
分支:已经被commit过的文件
Git的基本配置(Windows)
安装好Git之后,在桌面或者任何文件目录下右击鼠标:
选择Git Bash Here:
- 配置个人的用户名和电子邮箱(向远程仓库push代码时显示的信息)
- git config --global user.name “username”
- git config --global user.email xxx@xxx.xxx
- 查看已有的配置信息
- git config --list
- 如果用了 --global选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。不管你的远程版本库是用GitHub,还是GitLab,或者git.oschina.net等等,你提交代码的信息都是你上面设置的这个。
GitHub Desktop的简单使用及原理(Unity)
1.创建本地版本库并提交:
-
打开GitHub Desktop后,点击这里
点击Add,Create new repository(新建版本库)
输入仓库名,选择存储路径,选择忽略文件(git ignore)
- git ignore:在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。git为我们提供了一个.gitignore文件,只要在这个文件中申明有哪些文件你不希望添加到git中去,这样当你使用git add的时候这些文件就会被自动忽略。
-
确认后可以看到在这个文件夹里已经生成了一些文件
这个.git文件是个隐藏文件,点击查看,勾选隐藏的项目,就可以看到了
此时在网页端还看不到我们新建的这个仓库,因为我们还没有上传,这里先根据自己的需要配置 .gitignore文件和 .gitattributes文件,然后打开.git文件夹,用记事本打开config文件
下面我们配置unity的比较工具。在下面添加这一段代码,红色框内写你自己的UnityYAMLMerge路径(右击你的unity快捷方式,打开文件所在位置->打开Data文件夹->打开Tools文件夹(UnityYAMLMerge.exe文件就在这个文件夹中)->复制这个路径并替换到红框内->把所有" \ “替换为” / "->在路径最后加上这个exe文件的名字:UnityYAMLMerge.exe),然后保存。
基本的配置就已经完成了。
之后在你新建的仓库文件夹(.git文件夹所在的文件夹)中新建unity文件,git会在这个文件夹中检测更新,在左边可以看到一些新增的文件(绿色的代表新增,黄色修改,红色删除)
然后我们在unity中新建一个Script文件夹,在这个文件夹下新建一个叫做New的C#脚本,在Desktop中也可以看到这些修改,然后给这次修改写一个简短的描述,然后就可以Commit到主分支上去了。
然后点击上传,选择名字、是否私有,之后就可以在网页端看到这个项目了,点开之后也可以看到这个项目的各个文件夹
2.从远程版本库中克隆文件到本地
点击Add选择Clone repository,然后从版本库中选择要克隆的项目,点击Clone,
在本地你选择的文件夹中就有这个项目了,在History中也可以看到之前的一些change。
需要注意的是:换一台电脑,克隆之后的文件当中,.gitignore文件和.gitcontrubute文件都与原先提交的一样,但是.git文件夹中的config文件还要重新配置。
- 多人协作中冲突的解决(主从分支)
在上面说的Commit本地文件中,都是在主分支上操作,但是多人协作的时候,不同的人同时对一个项目操作难免会产生冲突,所以在多人项目中,最好是每个人都操作自己的一个从分支- 新建分支:命名为自己的id
- 新建分支:命名为自己的id
修改自己的分支后,Commit到自己的分支上,主分支并不会自动与自己的分支合并:
需要手动进行合并:发出合并请求Pull Requests
他会打开网页端,需要写一个request请求
然后它会进行比较,如果有冲突的话是没有办法合并的,没有冲突就可以直接合并了
如果你更新了一些东西,使得你的分支跟主分支不同的话,上传的时候就会出现冲突
这时点击打开命令行,输入git mergetool回车,只要之前你对config的配置是对的,他会自动进行比较,并合并。
合并之后,可能会多出一些多余的文件,可以在命令行里按Y(Yes)删掉,多余的场景可以自己打开文件夹手动删掉
其他人想要从主分支获取更新,可以这样做:
关于Git的基础使用大概就是这样了