Git看这篇文章就够了

基本介绍

image.png

  • 工作区:注意工作区不是IDEA,IDEA只是我们开发代码的工具,我们本地代码的存放目录才是我们的工作区。
  • 暂存区:在本地写了代码之后,得让git知道你的代码文件,因此你需要将工作区的代码添加到暂存区。暂存区是临时存储的,也就就是说暂存区的代码是可以删掉的。
  • 本地库:暂存区的代码提交到本地库之后,才会产生历史版本,也就谁说此时的代码删不掉了,因为这个历史版本会一直存在。

Git安装

基本使用

常用命令

命令名称 作用
git config –global user.name 用户名 设置用户签名
git config –global user.email 邮箱 设置用户邮箱
git init 初始化本地库
git status 查看本地库状态
git add 文件名 添加到暂存区
git commit -m “日志信息” 文件名 提交到本地库
git reflog 查看历史记录
git reset –hard 版本号 版本穿梭

设置用户签名

##设置用户名
git config --global user.name 用户名
##设置邮箱
git config --global user.email 邮箱

image.png

设置好用户名和邮箱之后,可以在git全局配置文件中看到设置的信息
image.png

签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git 首次安装必须设置一下用户签名,否则无法提交代码

注意:这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系

初始化本地库

你要想使用git管理目录(项目代码所在目录)的话,就需要将目录的权限交给git,即初始化本地库。

git init

image.png
初始化本地库之后,会在目录中生成.git目录

image.png

image.png

查看本地库状态

git status

image.png

接着我们在项目目录中新增一个文件,此时再查看本地库状态,发现新增的文件还是红色的,代表该文件还未被追踪。

image.png

添加暂存区

git add 文件名

添加到暂存区后,此文件就会被开始追踪了(文件是绿色的)。

image.png

注意:上面的命令也提示我们,如果想要从暂存区中删除文件(只是暂存区中删除,工作区不会被删除),使用如下命令

git rm --cached 文件名

image.png

提交本地库

git commit -m "日志信息" 文件名

image.png

接着继续修改文件

image.png

查看历史版本

# 查看简要的历史版本日志
git reflog
# 查看详细的历史版本日志
git log

image.png

image.png

版本穿梭

如果对于想要退回到以前的版本,即修改HEAD指向的版本,则可以通过版本穿梭进行回退

git reset --hard 想要回退到的版本号

首先查看当前HEAD指向的版本,最新的版本

image.png
也可以打开.git目录中查看

image.png

image.png

image.png

image.png

image.png

发现最新的版本号就是上面通过git log命令查看的d55be83fa4595bed566ba33a599cf2da22007433

此时的版本号图如下图所示

image.png

此时我们想要版本穿梭到0b7a3b1703bf1130acfb53740e8d50af08ffde7f,即first commit

image.png

image.png

此时hello.txt中文件内容会发生改变,变成first commit中的内容,当然F:\pro_demo\.git\refs\heads\master中的当前版本号也会变成0b7a3b1703bf1130acfb53740e8d50af08ffde7f

image.png

此时的版本号图如下图所示

image.png

git分支操作

image.png

什么是分支

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)

image.png

分支的好处

同时并行推进多个功能开发,提高开发效率。各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

分支操作

命令名称 作用
git branch 分支名 创建分支
git branch -v 查看分支
git checkout 分支名 切换分支
git merge 分支名 把指定的分支合并到当前分支上

查看分支

git branch -v

image.png

创建分支

#创建新的分支,并将当前所在分支的内容复制一份
git branch 分支名

image.png

切换分支

git checkout 分支名

image.png

查看.git目录中的内容

image.png

发现当前HEAD指向了hot-fix分支了
image.png

分支目录中也多了一个hot-fix分支
image.png

分支之间是相互独立,互不影响的,即我在hot-fix分支上修改内容,提交的话,不会影响到主分支master

合并分支

#把指定的分支合并到当前分支上
git merge 分支名
正常的合并

在刚刚创建的hot-fix分支中,修改hello.txt文件

image.png

image.png

image.png

接着切换回master分支,查看此时的hello.txt文件,发现还是原来的内容

image.png

然后合并hot-fix分支,合并成功

image.png

冲突合并

冲突产生的原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替。我们决定使用哪一个。必须人为决定新代码内容。

首先我们在master分支,修改hello.txt文件

image.png

image.png

接着切换到hot-fix分支,修改hello.txt文件

image.png

image.png

然后切换回master分支,合并hot-fix分支

image.png

冲突产生的表现:后面状态为 MERGING,此时查看hello.txt文件

image.png

特殊符号:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix

最后vim hello.txt修改文件,合并hot-fix修改的内容

image.png

接着,想要提交的话,注意:此时使用 git commit 命令时不能带文件名

image.png

发现后面 MERGING 消失,变为正常

切换分支图示如下:

image.png

master、hot-fix 其实都是指向具体版本记录的指针。当前所在的分支,其实是由 HEAD决定的。所以创建分支的本质就是多创建一个指针。

  • HEAD 如果指向 master,那么我们现在就在 master 分支上。

  • HEAD 如果执行 hotfix,那么我们现在就在 hotfix 分支上。

所以切换分支的本质就是移动 HEAD 指针。

git团队协作机制

团队内协作

image.png注意:令狐冲clone代码之后,修改代码之后,想要push到远程库的话,提前是得先把令狐冲加入到团队成员中,才有权限push

跨团队协作

image.png

GitHub操作

GitHub 网址:github.com/

Ps:全球最大同性交友网站,技术宅男的天堂,新世界的大门,你还在等什么?

创建远程库

image.png

image.png

image.png

远程库操作

命令 作用
git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址 起别名
git push 别名 分支 推送本地分支上的内容到远程仓库
git clone 远程地址 将远程仓库的内容克隆到本地
git pull 远程库地址别名 远程分支名 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并
创建远程仓库别名
git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址

image.png

推送本地分支到远程仓库
git push 别名 分支

上面我们创建了远程库,但是此时远程库还没有代码,所以我们想把本地库代码推送到远程库

image.png
出现连接超时的话,重试几次。

image.png

此时发现已将我们 master 分支上的内容推送到 GitHub 创建的远程仓库。

image.png

克隆远程仓库到本地

克隆代码是不需要登录github

git clone 远程地址

image.png

image.png

小结:clone 会做如下操作。1、拉取代码。2、初始化本地仓库。3、创建别名

邀请加入团队

我们知道想要其他人也拥有push代码到远程库的权限,需要邀请他加入团队。选择想要邀请的作者
我们来模拟一下这个过程,首先在github再创建一个令狐冲账号。

image.png

接着邀请令狐冲加入项目合作者

image.png

image.png

image.png

复制地址 并通过微信,钉钉等方式发给令狐冲 , 复制内容如下 :
github.com/yellowhs/pr…

接着登录令狐冲账号到github,打开复制的邀请链接,点击同意

image.png
同意之后,就可以看到pro_demo远程仓库了

image.png

然后令狐冲修改本地库代码。

image.png

image.png

现在这种弹出框github不支持密码登录,需要通过token登录,可以参考文章:blog.csdn.net/qq_41646249…

跨团队协作

image.png

首先将远程仓库的地址复制发给邀请跨团队协作的人,比如东方不败。项目可以通过搜索的方式

image.png

也可以在东方不败的 GitHub 账号里的地址栏复制收到的链接,然后点击 Fork 将项目叉到自己的远程仓库。

image.png

image.png

image.png

image.png

接着我们为了简单演示,直接修改刚刚fork的远程库代码,当然正常的开发步骤是先clone到自己的本地库,修改代码,然后commit到自己本地库,然后再push到刚刚fork的远程库

image.png

接下来点击上方的 Pull Request 请求,并创建一个新的请求。

image.png

image.png

image.png

image.png

接着换账号登录,审核pull request代码

image.png

image.png

image.png

如果代码有问题的话,可以在添加评论,这样东方不败也能看到的

image.png

代码没有的话,可以点击直接合并

image.png

image.png

SSH 免密登录

之前使用HTTPS地址操作的时候,每次都需要登录,比较繁琐,我们可以看到远程仓库中还有一个 SSH 的地址,因此我们也可以使用 SSH 进行访问

image.png

我们先把本地的.ssh目录删了

image.png

然后在这个目录中打开git bash,执行命令

ssh-keygen -t rsa -C 自己的邮箱

image.png

然后查看发现当前目录重新生成了.ssh目录了

image.png

接着打开settings

image.png

复制公钥文件id_rsa.pub的内容,打开

image.png

image.png

接着我们来测试一下,之前我们合并过东方不败的pull request代码,我们本地库拉取一下

image.png

image.png

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MY8psrdG' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片