Git是一个免费的、开源的分布式版本控制系统
从个人开发过渡到团队协作,需要版本控制(毕设论文版本的笑话)
Git工作机制
工作区:存放代码的本地磁盘目录(代码能删)
暂存区:工作区代码添加到暂存区(代码能删)
本地库:暂存区代码提交到本地库(生成历史版本了,代码删不掉了,除非不push到远程库)
远程库:本地库代码推送到远程库(生成历史版本了,代码删不掉了,除非删库跑路)
代码托管中心是基于网络服务器的远程代码仓库,i.e.远程库
Git远程库如下:
Git安装视频
上图中的用户签名存储在【C:\Users\21473.gitconfig】
Git首次安装必须设置用户签名,否则无法提交代码,用户签名仅用于区分代码的提交者
新建并进入空目录【D:\ProgramFiles\GitSpace\GitDemo】,右键【Git Bash Here】,输入【git init】,生成【.git】目录
首次查看(工作区没有文件)
新增文件(hello.txt)
再次查看(检测到未追踪的文件)
将工作区的文件添加到暂存区
查看状态(检测到暂存区有新文件)
使用【git rm --cached hello.txt】只是将暂存区的hello.txt删除,工作区的hello.txt还在
查看状态(检测到工作区有文件被修改)
将修改的文件再次添加到暂存区
查看状态(工作区的修改添加到了暂存区)
查看历史版本
版本穿梭
指针head指向分支master,分支master指向版本83375ef
Git切换版本的底层就是移动指针head
master和hot-fix都是指向具体版本的指针,当前的分支由head决定,所以创建分支的本质就是创建具体版本的副本及指向该副本的指针
合并分支时,两个分支在同一文件同一位置有两套不同的修改,Git无法决定合并方式,必须人为决定新代码内容
分支master在hello.txt中第4行处添加字符串master merge conflict test,并add和commit
分支hot-fix在hello.txt中第4行处添加字符串hot-fix merge conflict test,并add和commit
分支master合并分支hot-fix,自动合并失败,进入MERGING状态,人工vim hello.txt决定新代码内容,再add和commit,注意此时commit不能加文件名,自动合并成功,退出MERGING状态
注意,合并后只会修改master内容,hot-fix不变
在GitHub新建空仓库GitDemo,复制HTTPS【https://github.com/itsdandy163/GitDemo.git】
查看本地别名(没有)
添加本地别名(GitDemo)
查看本地别名(GitDemo*2)
切换到分支master
推送本地库到远程库【git push GitDemo master】,注意带分支,第一次要登录
在GitHub修改了hello.txt,在末行添加了字符串pull test
拉取远程库到本地库【git pull GitDemo master】,注意带分支
clone作了3件事:1. 拉取代码;2. 初始化本地库;3. 创建别名为origin
团队内协作视频教程
跨团队协作视频教程
【-t rsa】设置非对称加密算法
敲3次空格
上图的结果如下,产生公钥和私钥
打开公钥文件,复制公钥
将公钥添加到GitHub
使用ssh方式拉取远程库到本地库
这里忘加分支master了,但远程库只有分支master,故不影响,但建议加上
使用ssh方式推送本地库到远程库
Idea项目中的【.idea或.iml等】与Git无关,故配置忽略文件来忽略这些文件,以屏蔽IDE工具之间的差异
创建【C:\Users\21473\git.ignore】,添加如下代码模板
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
在【C:\Users\21473.gitconfig】中添加如下代码,注意将win的\换成/
[core]
excludesfile = C:/Users/21473/git.ignore
Idea定位Git程序视频教程
设置->版本->Git
Idea项目git init视频教程
VCS->Create Git Repository
然后git_test就有.git了,pom.xml也变红了
后面看视频吧
全球最大同性交友网站,技术宅男的天堂,新世界的大门
码云创建远程库
Idea集成Gitee码云
码云连接GitHub 进行代码的复制和迁移
基于局域网的代码托管中心
GitLab服务器的搭建和部署
Idea集成GitLab