git版本控制系统详细介绍
常用的git代码托管服务:Git中存在两种类型的仓库,即本地仓库和远程仓库,如果搭建git远程仓库呢?可以借助网上提供的代码托管服务来实现,常用的有GitHub,码云,GitLab等github是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,所以改名为github码云是国内的一个国内的代码托管平台,由于服务器在国内,所以相比于github,码云速度会...
常用的git代码托管服务:
Git中存在两种类型的仓库,即本地仓库和远程仓库,如果搭建git远程仓库呢?
可以借助网上提供的代码托管服务来实现,常用的有GitHub,码云,GitLab等
- github是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,所以改名为github
- 码云是国内的一个国内的代码托管平台,由于服务器在国内,所以相比于github,码云速度会更快
- GitLab是一个用于仓库管理系统的开源项目,使用git作为代码管理工具,并在此基础上搭建起来的web服务
Git常用命令:
环境配置:
当安装git后首先要做的事情是设置用户名称和email地址,这是非常重要的,因为每次git提交都会使用该用户信息
*设置用户信息
git config --global user.name ‘itcast’
git config --global user.email ‘hello@itcast.cn’
*查看配置信息
git config –list
git config user.name
‘
获取git仓库
要使用git对我们的代码进行版本控制,首先需要获得git仓库
获取git仓库通常有两种方式:
*在本地初始化一个git仓库
1.先创建一个文件夹,放你所有的本地仓库,进入其中一个仓库中(即文件夹),右键打开git bash命令窗口,也可以通过cd进入,总之一定要先进入你要操作的git本地仓库中
2.git init :初始化(创建)一个git本地仓库,创建后会产生一个.git隐藏文件夹,即代表创建成功,默认产生一个master主分支
*从远程仓库克隆
1.git clone https://gitee.com/zhu_wei_jian/vue_shop.git:地址即为如果所示的下载/克隆地址,表示从远程仓库中,把该仓库克隆到本地仓库中
工作目录,暂存区和版本库的概念:
版本库:.git隐藏文件夹就是版本库,版本库中存储了很多配置信息,日志信息和文件版本信息等
工作目录(工作区):包含.git文件夹的目录就是工目录,主要用于存放开发的代码
暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方.
它们之间的关系如下: 开发修改后的代码需要先从工作区放入暂存区,然后才能提交
Git工作目录(工作区)下文件的两种状态:
- untracked未跟踪 (即未被纳入版本控制)
例如:在工作区中手动创建一个文件 - tracked已跟踪 (被纳入版本控制)
*Unmodified 未修改状态
*Modified 已修改状态
*Staged 已暂存状态
这些文件的状态会随着我们执行的git命令发生变化
本地仓库操作:
git status:查看文件的状态,在工作区中
git status -s:查看文件的状态,使输出的状态更加简洁
git add 文件名 :把指定的某个未跟踪的文件加入暂存区
git add . :把当前工作区中所有文件加入到暂存区
git reset: 文件名:将暂存区内某个文件取消暂存
git commit -m "初始化hello.txt文件:将暂存区的文件修改提交到本地仓库
总结:修改后的文件只有加入到暂存区中的文件才能提交,否则提交不做处理
git rm:删除文件,执行此命令删除后,默认暂存区中的也被删除了,只需要直接提交就行
手动再工作区删除:手动删除,默认暂存区中还存在此文件,需要放到暂存区中再提交才能删除
注意:删除的只是工作区的文件,本地仓库中没有动,还需要提交到暂存区再提交才能把本地仓库中的也删除
将文件添加到忽略列表:
一般我们总会有些文件无需纳入git的管理,也不希望它们总出现在未跟踪文件列表,通常都是些自动生成的文件,比如说日志文件,或者编译过程中创建的临时文件等,在这种情况下,我们可以在工作区
中创建一个名为.gitignore的文件(文件名称固定),列出要忽略的文件模式
工作区中创建此文件命令:touch .gitignore
注意:在window中创建文件需要后缀前有名称,一般创建不出来,可以通过git命令工具创建
*.a :表示所有以.a结尾的文件不在管理
!lib.a :表示此文件除外,还要管理此文件
Build/:表示此目录下的文件都忽略
/TODO: 表示忽略此文件,不管理
Doc/*.txt :表示doc目录下所有以.txt结尾的文件忽略
Doc/**/*.pdf:表示在doc目录下,以及子目录中,所有以.pdf的文件都不再管理
git log:查看日志记录,查看日志时,输入Q可以退出日志
远程仓库操作:
查看远程仓库:
git remote:查看已经配置的远程仓库服务器,会列出下指定的远程仓库的简写
git remote -v:可以看到更详细的远程仓库的信息
git remote show origin:更详细
只要这个仓库是克隆过来的,默认已经配置了一个远程仓库,名字为origin,与该克隆过来的远程仓库建立了联系
添加远程仓库:
git remote add :添加一个新的远程git仓库,同时指定一个可以引用=的简写
从远程仓库克隆:
git clone : 默认配置下远程git仓库中的每一个文件的每一个版本都将被拉取下来,克隆的是远程仓库中几乎所有的数据(包括日志信息,历史记录等),而不仅仅是克隆工作所需要的文件
移除无效的远程仓库
git remote rm:如果因为一些原因想要移除一个远程仓库,可以使用
注意:此命令只是从本地移除远程仓库的记录,并不会真正影响到远程仓库
从远程仓库中抓取与拉取:
Git fetch:从远程仓库获取最新版本到本地仓库(会发现在工作区中没有显示,不会合并到工作区中,其实是放在了.git目录下object文件里面),不会自动merge(合并)
Git pull:是从远程仓库获取最新版本并merge到本地仓库
注意:如果当前文件仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库中fetch(拉取)文件的时候会报错,解决此问题可以在git pull 命令后加入参数–allow-unrelated-histories
推送到远程仓库:
Git push [remote-name] [branch-name]:可以将其推送到远程仓库
例如:git push origin master
推送配置:
git config --global push.default “current”:可通过此命令设置默认的推送分支
Git分支;
查看分支:
Git branch :列出所有本地的分支
Git branch -r :列出所有关联的远程仓库的分支
Git branch -a:列出所有本地分支和远程的分支
创建分支:
Git branch :创建一个name分支
删除本地分支:
Git branch -d :删除本地分支,没有修改的情况下
Git branch -D :在修改了文件又没有推送的情况下,强制删除分支
删除远程仓库分支:
Git push origin -d :删除远程仓库的分支
切换分支:
Git checkout :切换到branchName分支
合并分支:
Git merge :合并branchName分支到当前分支下
如:git branch b1
注意:如果你在不同的两个分支中,对同一个文件的同一部分进行了不同的修改,git就没办法合并它们,同时会提示文件冲突,此时需要我们打开冲突的文件并修复内容,最后执行git add 命令来标识冲突已经解决
Git标签:
Git可以给历史中的某一个提交打上标签,以示重要,比较有代表性的是人们会使用这个功能来标记发布结点(v1.0,v2.0)。标签指的是某个分支某个特定时间点的状态,通过标签可以很方便的切换到标记时的状态
列出已有的标签:
Git tag :列出所有标签
Git show [tag]:查看tag信息
创建标签:
git tag [tagName]:新建一个tag,一般情况下都是使用版本号当作标签名
提交标签:
Git push [remoteName] [tag]:推送提交指定的tag到远程仓库中
例如:git push origin v1.0
检出(提取)标签:
Git checkout -b [branch] [tag]:以某个tag标签为基础,复制文件新建一个分支,并且切换到此分支
删除标签:
Git tag -d [tag]:删除本地tag
Git push origin :refs/tags/[tag]:删除远程tag
例如:git push origin :refs/tags/v0.1
使用TortoiseGit管理文件版本:
下载和安装:
TortoiseGit是一款开源的git图形界面工具,使用TortoiseGit可以简化git相关的操作(本质上还是执行git的相关命令),下载地址:https://tortoisegit.org/download/,安装完成后,在任意目录右键,如果看到tortoiseGit则说明安装完成
使用SSH协议传输数据:
由于git的远程仓库并不在我们本地,当我们在使用远程仓库的时候(例如克隆,拉取,推送)就会涉及到数据的网络传输,git支持多种数据传输协议
*本地协议(Local)
*HTTPS协议
*SSH(secure Shell)协议
*Git协议
码云只支持HTTPS协议和SSH协议
注意:前面的操作都是基于HTTPS协议进行的
什么是SSH协议?
SSH为Secure Shell(安全外壳协议)的缩写,是目前较可靠,专为远程登录会话和其他网络服务提供安全的协议,利用SSH协议可以有效防止远程管理过程中的信息泄露问题。
由于本地Git仓库和远程仓库之间的传输是通过SSH加密的,所以必须要让远程仓库服务器认证你的SSH key,在此之前,必须要生成SSH key
使用SSH协议通信时,推荐使用基于密钥的验证方式,你必须为自己创建一对密钥(公钥和私钥),并把公钥放在需要访问的服务器上
注意:使用HTTP协议也需要验证,验证的是码云的账号和密码,第一次推送的时候已经输入过了,会保存在系统的凭证上,第二次再推送时不再需要输入
配置SSH协议:
1.使用命令 ssh-keygen -t rsa 生成公钥和私钥,执行完成后在window本地用户.ssh目录 C:\Users\用户名.ssh下面生成公钥和私钥
2.复制公钥文件内容到码云服务器,添加公钥即可
- 使用SSH协议克隆远程仓库就不会产生问题了
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)