你害怕别人问到你:“有没有属于自己的Git吗?”
与maven极其相似,作为一款分布式版本控制工具针对分布式环境下不同的开发人员他提供备份、代码复原、代码托管、协同开发,日志回溯…等强大的功能,Git种存在两种类型的仓库,即本地仓库和远程仓库。
为了搭建Git地远程仓库,我们可以通过一些网上提供的代码服务来实现,比如GitHub、Gitee、GitLab(下图就是Gitee界面)
分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样工作的时候,无需要联网,因为版本库就在你自己的电脑上。多人协作只需要各自的修改推送给对方,就能互相看到对方的修改
Git环境配置下载地址: 点击下载(大家可以自行去注册一个Gitee账号并建立一个属于自己的仓库,非常简单)
当注册创建好了帐号之后就可以查看到信息
在使用Git对代码进行版本控制,首先需要获取Git仓库,通常可以通过
1.在本地初始化一个Git仓库
2.克隆远程的仓库。
其中第二种比较常用,因为在公司开发中远程仓库往往已将创建好,只需要克隆到本地即可。创建初始仓库非常简单,只需在目录中点击右键Git Bash Here,在命令行中输入git init即可,就像这样:
而克隆远程仓库则是在目录中点击右键Git Bash Here,在命令行中输入git clone+HTTP链接即可,就像这样,我将java-basic这个仓库克隆到了本地
版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作区:包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码
暂存区: .git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改
文件的地方
Git工作区中的文件存在两种状态:
untracked未跟踪(未被纳入版本控制)
tracked已跟踪(被纳入版本控制)
1.Unmodified未修改状态
2.Modified已修改状态
3.staged已暂存状态
查看的修改的状态(暂存区、工作区)命令形式:git status
比如,此时文件“Sheep.java”还处于未跟踪状态
作用:添加工作区一个或多个文件的修改到暂存区
命令形式:git add 单个文件名|通配符
将所有修改加入暂存区:git add .
此时文件“”Sheep.java“处于已暂存状态
作用:提交暂存区内容到本地仓库的当前分支
命令形式:git commit -m ‘注释内容’ 文件名
命令的作用是将暂存区的文件取消暂存或者是切换到指定版本
git reset --hard 指定版本的commit值
如果想查看已经配置的远程仓库服务器,可以运行 git remote命令,它会列出每一个远程服务器的简写如果已经克隆了远程仓库,那么至少应该能看到origin,这是Git.克隆的仓库服务器的默认名字,通过git remote -v则可以查看到远程仓库地址
若本地仓库没有关联任何远程仓库,则不会显示相关信息:
添加远程仓库,运行git remote add 添加一个新的远程Git仓库,同时指定一个可以引用的简写
将本地仓库内容推送到远程仓库主分支,可以使用命令: git push [remote-name] [branch-name]
若后期对代码做出更改,重复上述步骤即可。
git pull命令的作用是从远程仓库获取最新版本并合并到本地仓库,命令格式: git pull [short-name][branch-name]
注意如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错( fatal: refusing to merge unrelated histories )
解决此问题可以在git pull命令后加入参数–allow-unrelated-histories
1.初始化本地远程仓库后上传到远程仓库情况
git init //初始化仓库
git add .(文件name) //添加文件到本地
git commit -m “first commit” //添加文件描述信息
git remote add origin 远程仓库地址 //链接远程仓库
git pull origin master // 把本地仓库的变化连接到远程仓库master 分支
git push -u origin master //把本地仓库的文件推送到远程仓库master 分支
2.克隆远程仓库后推送到远程仓库
git clone 远程仓库地址 //克隆远程仓库
git add .(文件name) //添加文件到本地
git commit -m “first commit” //添加文件描述信息
git push -u origin master //把本地仓库的文件推送到远程仓库master 分支
也就是俗话所说的三板斧