代码版本控制系统的作用
代码备份
版本控制
协同工作
责任追溯
常用的版本控制系统
CVS
SVN
Git
本地仓库
远程仓库
本地历史仓库 Repository 存放不同版本的代码暂存区 Index 代码提交到仓库之前的临时存储空间
git init // 初始化,创建git仓库git status // 查看git状态(文件是否进行了添加,提交操作)
git add // 添加,将指定文件添加到暂存区
git reset HEAD // 取消本次修改中所有add操作
git commit -m "描述信息" // 提交,将暂存区文件提交到历史仓库
git rebase -i commit唯一序列号 .. 将pick修改为drop // 删除指定commit
注意:只能删除当前邮箱账户下的提交
git rebase --abort // 解决代码回退的问题
git log // 查看日志(git提交的历史日志)
git log --pretty=oneline // 以简洁模式展示提交历史日志
git log --graph --pretty=oneline --abbrev-commit // 图形化简略模式显示分支提交记录
历史版本切换 git reflog // 查看所有分支的所有操作记录 git reset --hard "commit的唯一标识" //回退版本至指定提交处
分支就是由每次提交的代码,串成的一条时间线 两条时间线并行工作,互不打扰 多条时间线可以进行合并
使用场景 1.周期较长的模块开发 2.尝试性的模块开发 使用分支意味着可以将工作从开发主线上分离开来,以免影响开发主线
主分支 -> Master -> 指向提交的代码版本 Head -> 指向当前所使用的分支 流程 1.创建新分支 2.切换分支 3.合并分支 4.删除分支
git branch 分支名 // 创建分支git checkout 分支名 // 切换分支 git checkout -b 分支名 // 创建并切换分支ls // 查看当前目录下文件git branch // 查看所有分支
git merge 分支名 // 删除分支git branch -d 分支名 // 删除指定分支
远程仓库就是代码托管平台(部署在公网上的一个网站)
GitHub (https://github.com)
GitHub是全球最大的开源项目托管平台,俗称大型程序员社区化交友网站
码云(https://gitee.com)
码云是全最大的开源项目托管平台,提供免费私有库
1.创建远程仓库2.生成SSH公钥配置 (1)设置Git账户 git config user.name 查看git账户 git config user.email 查看git邮箱 git config --global user.name "账户名" 设置全局账户名 git config --global user.email "邮箱" 设置全局邮箱 (2)生成SSH公钥 cd ~/.ssh 查看是否生成过ssh公钥 ssh-keygen -t rsa -C "邮箱名称" 默认安装目录为用户目录下的.ssh文件夹,敲击三次回车后即完成 (3)设置账户公钥 (4)公钥测试 ssh -T [email protected]
步骤 1.为远程仓库的URL(网址)自定义仓库名称 2.推送 命令 git remote add 远程名称 远程仓库URL // 自定义远程仓库名称 git push -u 远程仓库名称 分支
先有远程仓库,本地仓库为空 1.将远程仓库的代码克隆到本地仓库 git clone 仓库地址 拉取指定分支代码 git clone -b 分支名 仓库地址 2.创建新文件,添加并提交到本地仓库 3.推送至远程仓库 4.项目拉取更新 git pull 远程仓库名 分支名
产生原因 -> 多人同时拉取了远程仓库上文件,一个人修改完该文件提交后,其他人再提交该文件的更新时就会产生代码冲突 <<<<<<<和>>>>>>>中间的内容,就是冲突的部分 解决办法 1.修改冲突行后保存即可解决冲突 2.重新add冲突文件并commit到本地仓库,重新push到远程
1.File -> Settings -> Version Control -> Git -> Path to Git executable -> Test 指定git.exe存放的目录2.VCS -> Import into Version Control -> Create Git Repository 创建一个代码仓库3.提供代码,更新代码4.切换代码版本 (1)需要切换版本处右键 -> Reset Current Branch to Here (切换至指定版本处之后的其他版本记录都会丢失) (2)需要切换版本处右键 -> Revert Commit -> Merge (解决冲突) -> Commit 不会舍弃任意一条版本记录 原理是将每次版本回退都作为一次新的版本提交5.版本分支管理 (1)新建分支 VCS -> Git -> Branches -> New Branch (2)切换分支 Git:分支名称 -> Local Branches -> 选择分支名称 -> Checkout VCS -> Git -> Branches -> Local Branches -> 选择分支名称 -> Checkout (3)合并分支 VCS -> Git -> Merge changes -> 选择合并分支 -> Merge (4)删除分支 VCS -> Git -> Branches -> Git Branches -> Local Branches -> 选中分支 -> delete6.操作远程分支(1)添加远程地址 VCS -> Git -> Remotes (2)Push VCS -> Git -> Push (3)Pull VCS -> Git -> Pull (4)克隆 初始化IDEA -> Get from Version Control -> 键入URL和Directory -> Clone
git log查看版本信息git config --global user.name 'jiang' 创建用户git config --global user.email '[email protected]'创建邮箱账号git add 文件名 创建一个版本git commit -m '注释'提交版本并添加注释信息git reset --hard HEAD~100版本回退至前100个版本git reset --hard HEAD^^^^版本回退至前四个版本git reset --hard c355e6b98391576e266d7833c1a9822f4b0954c8 回退至commit编号对应的版本git reflog 查看版本创建回退日志git status 查看工作区中的文件状态git checkout -- <文件名> 撤销修改暂存区的变动git reset HEAD 文件名 撤销修改工作区的变动,git add 后小结:场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节。对比文件的不同点:git diff HEAD -- 文件名git diff HEAD HEAD^ -- 文件名 对比当前版本与上一个版本的区别,-代表上一个版本相对于当前版本没有的东西,+代表新增的东西git rm code2.txt 删除文件至暂存区rm code2.txt 删除文件至工作区git log --pretty=oneline 以简短方式显示版本变更记录git branch 查看当前分支git checkout -b dev切换到一个新的分支Fast-forward 快速合并,把指针前移查看分支:git branch创建分支:git branch 切换分支:git checkout 创建+切换分支:git checkout -b 合并某分支到当前分支:git merge 删除分支:git branch -d setorward' 禁用Fast-forward快速合并git stash 保存工作现场git stash list 列出所有保存的stashgit stash pop 恢复工作现场无法远程获取ssh仓库办法:1.eval '$(ssh-agent.exe -s)'2.ssh-add生成ssh公钥:ssh-keygen -t rsa -C '邮箱名'跟踪远程分支:git branch --set-upstream-to=origin/smart smart提交分支到远程服务器器:git push origin smart克隆远程服务器上的代码:git clone ssh地址拉取远程分支上的代码:git pull origin 分支名称