😚一个不甘平凡的普通人,致力于为Golang社区和算法学习做出贡献,期待您的关注和认可,陪您一起学习打卡!!!😘😘😘
🤗专栏:算法学习
🤗专栏:Go实战
💬个人主页:个人主页
参考学习资料:黑马程序员Git教程
文章目录
- 版本控制器方式说明
- Git安装和配置
- 安装
- 配置
- Git工作流程图
- 名词解释
- 常用命令
- Git实例练习
- Git分支
- 分支练习
- 解决冲突
- Git远程仓库
- 添加远程仓库
- 克隆仓库,抓取和拉取
- 解决合并冲突
版本控制器方式说明
SVN 和 Git
SVN:集中式版本控制,版本库是放在中央服务器中,从中央服务器进行相关代码下载,必须联网才行,个人修改后提交到中央服务器
GIt:分布式版本控制,不需要中心服务器,有一个共享版本库,同时每一个开发人员自己的电脑也是一个完整的版本库
Git特点:速度,简单的设计,允许千万个并行开发的分支,完全分布式,高效管理类似Linux内核一样的超大规模项目
Git安装和配置
安装
git官方下载地址:链接 无脑安装即可
安装成功后:当我们在桌面或者文件夹点击鼠标右键的时候,出现
Git GUI : GIt提供图形界面工具
Git Bash: Git提供命令行工具
配置
打开Git Bash,首先是需要配置相关用户名和用户的邮箱(这两个是必须要配置的),如下图所示,输入下图命令进行查看是否配置成功:
配置命令:没有太严格,简单点输入也行
git config --global user.name “xxx”
git config --global user.password “xxx”
有时候常用的指令参数很多,我们可以通过使用别名,使用自定义命令:
注:为什么用到这一个步骤呢?因为后续我们会用到git log查看历史命令,原命令会输出非常多的信息,看起来很冗余,所以我们通过自定义命令,将命令简化为git-log,方便我们查看历史信息,看起来更可观一些
- 进入到自己的电脑用户目录,创建 .bashrc 文件,可以通过在该目录下打开git bash:
输入命令,即表示在该目录下创建bashrc文件
touch ~/.bashrc
- 进入bashrc文件,进行编译,输入:
#用于输出git提交日志 相当于进行优化操作了,输出的时候会比较简洁
alias git-log=‘git log --pretty=oneline --all --graph --abbrev-commit’
#用于输出当前目录所有文件及基本信息
alias ll=‘ls -al’
- 解决中文乱码问题:
首先打开Git bash 输入命令:
然后进入到你的git存放地址:你的存放地址/etc/bash.bashrc 文件最后两行添加命令;
#解决中文乱码
export LANG=“zh_CN.UTF-8”
export LC_ALL=“zh_CN.UTF-8”
Git工作流程图
名词解释
.git : 版本库 当我们使用git管理文件时,把这个文件称为版本库,另一个作用是 它在创建的时候,会自动创建master分支,并将head指针指向master分支
工作区: 本地项目存放的位置
暂存区: 暂时存放文件的地方,通过add命令将工作区的文件添加到缓冲区
本地仓库: 使用commit命令将暂存区文件添加到本地仓库,head指针指向的就是master分支
远程仓库: 使用github托管我们的项目,它就是一个远程仓库,通过使用clone命令将远程仓库代码拷贝下来,本地代码更新后,通过push拖送给远程仓库。
常用命令
git add . // 将该目录下除了.git文件的其他所有文件 从工作区添加到暂存区
git status //查看文件的状态
git commit -m “xxx” //将暂存区文件添加到本地仓库,并且备好注释
git log //查看历史
git-log //因为我们上面在配置的时候自定义了命令,所有会有这个git-log,输出更简短的历史信息,方便我们去查看
git reset --hard commitID //回溯版本号,commitID 版本号 可以通过git log查看
git reflog //可以查看到已经删除的记录
Git实例练习
如下图所示,创建一个文件夹,进行练习,可以跟着图片中的代码进行相关练习
第一步:创建一个文件夹,并且在内部创建一个txt文本提交到本地仓库
第二步:我们可以通过git-log 查看历史记录
第三步:对文本进行修改,再次进行提交到本地仓库
第四步:查看历史版本,并且回到修改前的状态
第五步:git add . 表示添加该目录下的所有文件,当我们不想添加所有文件的时候我们可以进行设置,这个时候可以看到,状态下没有显示two.a文件,我们把.gitignore文件删除可以对比一下
第六步:删除.gitignore 形成对比查看,可以形成鲜明的对比
重要:第七步:也就是.gitignore文件失效或者没起对应的作用。需要注意的一点:当你的two.a文件已经提交了,你再创建.gitignore文件,去添加的时候,查看git status时会发现two.a文件仍然存在在暂存区内,这时候我们需要去先清理对应文件的缓存,使用git rm -r --cached two.a 去放弃对应文件的追踪,再次添加的时候,可以实现对我们想要忽略文件的忽略
Git分支
分支:可以把工作从开发主线上分离开来进行重大的bug修改,开发新功能,以免影响开发主线
同时git也提供了一个HEAD指针,表示当前在哪一个分支上,从而避免了错乱
相关命令:
git branch //查看分支
git branch xxx //创建分支
git checkout -b xxx //切换分支 不存在的话就创建
git merge xxx //合并分支
git branch -d xxx //删除分支,需要做各种检查
git branch -D xxx // 删除分支,强制删除
分支练习
题目:创建一个名为dev的分支,切换到dev分支,然后在该分支中创建一个文件hello.txt,之后查看git-log会发现dev分支内已经有了,然后添加并且提交到本地仓库;切换回主分支,你们发现主分支内没有hello.txt文件,查看git-log 可以看到所有分支情况,之后使用git合并分支命令,(一般都是把分支合并到主分支上面),查看git-log命令查看分支情况
操作如下:
在dev分支上查看情况:可以看到head指针指向当前分区,也就是dev分区,可以在文件中看到hello文件的存在
切换到主分区,会发现没有hello文件,因为我们是在dev分区上创建的hello文件,然后将dev分区合并到主分区
合并分支,会发现master主分区可以看到hello文件
解决冲突
就着上面的例子,当分支和主分支同时修改同一个数据时候,再一次合并时候就会发生冲突,此时计算机会把问题抛给我们去解决。具体情况看下面的代码和图片实例:
在master主分支中,修改hello文件中count=1并提交到仓库中
切换分支,同样修改hello文件中内容count=2提交到仓库中
切换到主分支并进行合并分支,会发现发生冲突报错,此时hello文件内部会有两个值,需要我们去解决
我们可以自己选择去留下一个或者重新定值都可以
修改完之后,这个时候,我们需要重新去添加和提交到本地仓库,一定不忘记,然后重新进行合并就可以了
最终合并完的结果如下图所示:
注意:如果创建的分支上面有未合并到主分支的信息,使用git branch -d xxx 删除不掉,因为git害怕你是误删除,所以使用git branch -D xxx 强制删除可以去掉
特殊点:快进模式
当分支和主分支同时对一个文件进行修改时,会出现桥状;当只有分支修改了文件,主分支没有进行修改,当向主分支合并时就会出现快进模式,`这一块用图来理解很容易
合并之后:
Git远程仓库
配置秘钥:在git bash中进入 这里以链接码云为例子
ssh-keygen -t rsa //之后不断回车就可以 会自己覆盖之前的秘钥,之前秘钥如果绑定有很多东西,可以先复制一份备份
cat ~/.ssh/id_rsa.pub //获取公钥
ssh -T git@gitee.com //验证是否成功 第一次登录的话 输入yes
添加远程仓库
相关命令:
git remote add origin(这个是别名) xxx(你仓库地址) // 本地连接远程仓库
git remote // 查看远程仓库
git push origin master(本地分支):master(远端分支) //将本地仓库推到远程仓库origin分支去,名字一样可以省略
git push --set-upstream origin master //推送到远端的同时并且建立起和远端分支的关联关系
git branch -vv //查看本地分支和远程仓库分支关系
你创建码云之后,复制ssh仓库地址,在本地连上远程仓库
本地连接远程仓库,如果报错的话,先输入git init 进行初始化
git remote add origin xxx(仓库ssh地址)
将本地仓库推到远程仓库:
克隆仓库,抓取和拉取
当仓库文件克隆到本地之后,后续命令操作
git clone xxx地址 命名 (命名可有可无) // 拉取到本地
当本地仓库进行修改时,使用git push 传到远程仓库,本地克隆下来的只需要git poll就可以同步了
git fetch 只抓到本地 git pull [抓取到本地并且合并等同于fetch+merge]
解决合并冲突
当一段时间内,a,b两个用户同时修改了同一个文件的同一个位置,此时合并时就会发生冲突,a,
b同时在本地仓库提交了,a优于b推到了远程仓库,b要推到远程仓库,需要先拉取远程仓库的提交,然后合并后才可以推送到远端分支
本地仓库一个,另外从远程仓库再拉下来一个,他们相同,现在对共同文件hello文件进行修改
此时A优于B提交,B提交出错,所以应该使用git pull先拉下来,合并之后,再进行提交,就可以解决
B修改完后,进行添加提交推到远程仓库
最后A在git pull下来,最后实现A与B同步
码字不易,感谢您的关注和支持!!!如果感觉对您有所帮助,给个一键三连吧!