Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的项目,局域网可以配置GitLab服务器,外网环境有GitHub、码云。常见的版本控制工具:Subversion(SVN)、CVS等
版本控制工具的好处:
协同修改:多人并行不悖的修改服务器端的同一份文件
数据备份:不仅保存目录和文件的当前状态,还能保存每一个提交过的历史状态
版本管理:在保存每一个版本的信息时候要做到不保存重复数据,以节约存储空间,提高运行效率,这方面SVN采用文件系统快照方式
权限控制:对团队中参与开发的人员进行权限控制,对团队外开发者贡献的代码进行审核——Git独有
历史记录:查看修改人、修改时间、修改内容、修改信息。可将本地文件恢复到某一个历史状态
分支管理:允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率
Git的优势:
a.大部分操作在本地完成,不需要联网
b.尽可能添加数据而不是修改或删除数据
c.分支操作非常快捷流畅
d.与Linux命令兼容
安装Git及初始化本地仓库
git --version:查看Git安装版本
init:初始化命令,初始化完成后会有一个.git隐藏文件夹,用来管理Git仓库
git config --global user.name "配置全局用户名"
git config --global user.email "配置用户邮箱"
git add 文件名:将工作区的文件添加到暂存区
git commit -m/message"修改注释":将暂存区的文件提交到本地库中
git status [文件名]:查看暂存区/分支中的文件状态
查看日志:
git log:查看历史记录,显示从最近到最远的日志
简化显示:git log --pretty=oneline
查看简短日志:git reflog
Git执行/存储流程:
代码工作区---add--->暂存区(属于临时存储)---commit--->本地库(历史流程)
工作区、暂存区和本地仓库,逻辑上是本地计算机,当我们新建一个文件时,文件位于工作区,处于(modified)修改状态,还没有提交保存;通过git add命令将其添加到暂存区,文件是已暂存(staged)状态,表示把已修改的文件放到下次提交时要保存的清单中,通过命令git commit将文件放入本地仓库,文件为提交(commited)状态,表示该文件已经被安全地保存在本地数据库中,到这一步可以说是成功生成了一个新的版本,远程仓库用来将本地仓库上传到网络、实现备份、共享和合作
git branch -v:查看当前git仓库所有分支
git branch [分支名]:添加分支
git checkout 分支名:切换分支
git branch -d/delete 分支名:删除分支
配置Git远程SSH Key
ssh-keygen -t rsa -C "email,建议写真实邮箱",会有三次提示输入,直接回车即可
在用户目录下生成 .ssh 目录 ,个 里面有一个 id_rsa.pub 文件 ,保存的就是公钥。
登录码云,在 SSH 公钥文本框里粘贴 id_rsa.pub 文件的内容
验证秘钥是否添加成功
执行命令 ssh -T git@git.oschina.net
Git 使用 SSH 连接第一次验证服务器的 key 时,需要你进行确认,此时输入 yes 回车即可。
再次执行 ssh -T git@git.oschina.net
git remote -v:查看所有地址别名
git remote add 别名 路径:添加新路径并配置别名
git remote remove 别名:删除配置的别名/路径
git clone 仓库地址:克隆仓库/分支
git pull [别名] [分支名]:从远程仓库下载
git push [别名] [分支名]:推送到远程仓库
Clone和Pull区别:
Clone是克隆到Repository中,Pull是直接拉取到workspace中
注意:如果遇到上传代码冲突,一定要先Pull到本地,然后修改冲突的文件,最后add—>commit—>push
常用命令集:
mkdir: XX(创建一个空目录 XX 指目录名)
pwd: 显示当前目录的路径
git init 把当前的目录变成可以管理的 git 仓库,生成隐藏的.git 文件。
git add XX 把 XX 文件添加到暂存区。
git commit -m “XX” 提交文件 -m 后面的是注释
git status 查看仓库状态
git diff XX 查看 XX 文件修改了哪些内容
git log 查看历史记录
git reset -hard HEAD^ 或者 git reset -hard HEAD~ 回退到上一个版本(如果想回退到 100个版本,使用 git reset -hard HEAD~100)
cat XX 查看 XX 文件内容
git reflog 查看历史记录的版本号 id
git checkout --XX 把 XX 文件在工作区的修改全部撤销
git rm XX 删除 XX 文件
git remote add origin https://gitee.com/oldlu_wk/gittest.git 关联一个远程库
git push -u (第一次提交要用-u 以后不需要)origin master 把当前 master 分支推送到远程库
git clone https://gitee.com/oldlu_wk/gittest.git 从远程库中克隆
git checkout -b dev 创建 dev 分支 并切换到 dev 分支上
git branch 查看当前所有分支
git checkout master 切换回 master 分支
git merge dev 在当前分支上合并 dev 分支
git branch -d dev 删除 dev 分支
git branch name 创建分支
git stash 把当前的工作隐藏起来等以后恢复现场后继续工作
git stash list 查看所有被隐藏的文件列表
git stash apply 恢复被隐藏的文件,但是内容不删除
git stash drop 删除文件
git stash pop 恢复文件的同时也删除文件
git remote 查看远程库的信息
在IDEA中配置和操作Git
创建本地仓库,一般指定到项目结构下
添加到暂存区和提交到本地仓库工作空间
配置远程仓库地址
提交并上传
上传过程中可能出现的问题: Push rejected: Push to origin/master was rejected
解决办法:
1.选择你要上传代码的文件夹,鼠标右键 git Bash Here
2.输入下面两行命令
git pull origin master --allow-unrelated-histories --把远程仓库中的内容 pull 到本地工作目录
git push -u origin master -f --在 pull 下来的项目中做修改,通过以上命令 push 到远程仓库了
在IDEA中解决Git上传冲突问题
点击合并
修改冲突文件
修改完成后即可Commit and Push