Git 概述

一、GitHub
1、基本概念:
(1)仓库(Repository)
仓库是用来存放项目代码的,每个项目对应一个仓库,多个开源项目,则有多个仓库。
(2)收藏(Star)
仓库主页的Star按钮,用来收藏项目,方便下次查看。
(3)复制克隆项目(Fork)
注意:该Fork的项目是独立存在的,对于Fork的项目进行修改,不会改变原始仓库的项目。
(4)发起请求(Pull Request)
基于Fork,就是把自己改进后的项目,合并到原始项目上。先发出Pull Request请求,等待原始项目的创建人的审核。
(他会Review改进后的代码且测试后,会接受PR)
(5)关注(Watch)
就是若你watch了某个项目后,以后只要该项目有任何更新,你都会第一时间收到通知提醒。
(6)事务卡片(Issue)
发现代码Bug,但是目前没有成型的代码,需要进行讨论时使用。
(即:你开源了一个项目,别人发现了该项目中有Bug,他就可以给你提个Issue,然后你看到这些问题,可以去逐个修复,修复ok
的可以close掉。)

二、Git —> 目的:通过Git,来管理GitHub托管的项目代码。
1、Git的安装和使用:
下载安装:https://www.git-scm.com/download --> 安装 --> 可以选择命令行模式或图形界面模式 --> 选择使用命令行的环境

2、Git的区域划分:
(1)工作区(Workspace / Working Directory):用于添加、编辑、修改文件等操作。日常开发就是拷贝远程仓库的一个分支,然后基于该分支进行开发。
(2)暂存区(Index / Stage):用于暂存已经修改的文件。是在.git目录下的index文件。
(暂存区会记录工作区修改的文件信息,不会保存文件实体,通过id指向每个文件实体,可以使用:git status,查看暂存区的状态,暂存区中标记了当前工作区中,哪些内容是被Git管理的。)
(3)本地仓库(Repository):保存了对象被提交过的各个版本,它的内容比工作区和暂存区的旧一些。
(将暂存区修改后的内容git commit到本地仓库,方便下一步通过git push同步到远程仓库。)
(4)远程仓库(Remote):保存最终确定的文件,成为一个新的版本,并且对他人可见。
在这里插入图片描述
总结:
<1> 任何对象都是在工作区中诞生和修改的。
<2> 任何修改都是从工作区中进入暂存区中,才开始被Git版本控制的。
<3> 只有把修改 commit 到本地仓库中,该修改才能在仓库中留下痕迹。
<4> 若需要与协作者共享自己本地的修改,则需要把修改内容 push 到远程仓库。

3、Git的常用命令:
(1)git pull :从远程仓库中下载代码到本地仓库,并快速合并。
(2)git status:查询当前文件的状态,即它所处哪个区域。
(3)git add <文件名或目录名>:将从工作区修改的内容提交到暂存区,交由Git管理。
(4)git commit -m “添加提交描述”:将修改的内容从暂存区提交到本地仓库,使得当前分支的HEAD,向后移动一个提交点。
(5)git push :从本地仓库中上传代码到远程仓库,并快速合并。
在这里插入图片描述
说明:
<1> HEAD
HEAD始终指向当前所处分支的最新提交点。若你所处的分支变化了,或产生了新的提交点,HEAD就会跟着改变。
在这里插入图片描述
<2> branch:分支
1.展示分支:
git branch:列出所有本地分支
git branch -r:列出所有远程分支
git branch -a:列出所有本地和远程分支
2.切换分支:
git checkout :切换到指定分支,并更新工作区
3.创建分支:
git branch :新建一个分支,但依然停留在当前分支
git checkout -b :新建一个分支,并切换到该分支
git branch --track :新建一个分支,并与指定的远程分支建立追踪关系
4.删除分支:
git branch -d :删除分支
git push origin --delete :删除远程分支
在这里插入图片描述
<3> merge:合并
该命令用于把不同的分支合并起来。
在这里插入图片描述
在实际开发中,我们可能从 master分支中切出一个分支,然后进行开发完成需求,中间经过R3、R4、R5的 commit 记录,最后开发完成后,需要将这些修改记录合并入 master分支中,这便用到了 merge 命令。
git fetch :merge之前先拉一下远程仓库的最新代码。
git merge :合并指定分支到当前分支。
注意:一般在 merge之后,会出现 conflict,需要针对这些冲突,手动解除冲突(这些冲突主要是因为两个用户修改了同一个文件的统一块区域):
在这里插入图片描述
<4> rebase:衍合
在开始阶段,我们处于new分支上,执行:git rebase dev,那么 new分支上新的 commit 都在 master分支上重演一遍,最后 checkout 切换回到 new分支。这一点与merge是一样的,合并前后所处的分支并没有改变。
在这里插入图片描述
git rebase dev命令通俗的解释就是:new分支想站在 dev 的肩膀上继续下去。(rebase也需要手动解决冲突)

[ rebase 与 merge 的区别:]
现在我们有这样的两个分支:test、master
D—E test
/
A—B---C—F master
1.在master执行:git merge test,会得到如下结果:
D--------E
/
A—B---C—F------------------G test, master
2.在master执行:git rebase test,会得到如下结果:
A—B---C—F---D’—E’ test, master

由上可以看出:merge操作会生成一个新的节点,之前的提交分开显示。而 rebase操作不会生成新的节点,是将两个分支融合成一个线性的提交。总结:
1.若你想要一个干净的,没有 merge commit 的线性历史树,那么你应该选择:git rebase。
2.若你想保留完整的历史记录,并且想要避免重写 commit history 的风险,你应该选择使用:git merge。

<5> reset
该命令是把当前分支指向另一个位置,并相应地变动工作区和暂存区。
在这里插入图片描述
git reset --soft :只改变提交点,暂存区和工作目录的内容都不改变
git reset --mixed :改变提交点、暂存区的内容
git reset --hard :暂存区、工作区的内容,都会被修改到与提交点完全一致的状态
git reset --hard HEAD:让工作区回到上次提交时的状态

<6> revert
该命令是用一个新的提交,来消除一个历史提交所做的任何修改。例如:
在这里插入图片描述
[ reset 和 revert 的区别:]
在这里插入图片描述
总结:
1.git revert 是用一次新的 commit,来回滚之前的 commit;而 git reset 是直接删除指定之前的 commit。
在回滚这一操作上看,效果差不多。但是在日后继续 merge 以前的老版本时有区别。因为 git revert 是用一次逆向的 commit “中和” 之前的提交,因此日后合并老的 branch 时,导致这部分改变不会再次出现,减少冲突。但是 git reset 是之间把某些 commit 在某个 branch 上删除,因而和老的 branch 再次 merge 时,这些被回滚的 commit 应该还会被引入,产生很多冲突。
2.git reset 是把 HEAD 向后移动了一下,而 git revert 是 HEAD 继续前进,只是新的 commit 的内容和要 revert 的内容正好相反,能够抵消要被 revert 的内容。

<7> push
该命令用于上传本地仓库到远程仓库分支,实现同步。
git push :上传本地指定分支到远程仓库。
git push --force:强行推送当前分支到远程仓库,即使有冲突。
git push --all:推送所有分支到远程仓库。

<8> 其它常用命令
git log:显示当前分支的版本历史。
git diff:显示暂存区和工作区的差异。
git diff HEAD:显示工作区与当前分支最新 commit 之间的差异。
git cherry-pick :命令选择一个commit,合并到当前分支

4、Git的初始化及本地仓库创建和操作
(1)设置用户名:git config --global user.name’你的用户名’
(2)设置用户名邮箱:git config --global user.email’你的邮箱@qq.com’
查看信息:git config --list (查看用户信息是否初始化成功)
(3)初始化一个新的Git仓库:创建文件夹 -> 在该文件夹内打开Git终端 -> 执行命令:git init -> 会生成一个.git文件夹(用于存储仓库所有信息的)
(4) 向仓库中添加文件:touch 文件名(创建文件)-> git add 文件名(将文件添加到暂存区)-> git commit -m “描述”(将文件从暂存区提交到Git仓库)
(5)修改仓库文件:gedit 文件名(修改文件)-> git add 文件名(将文件添加到暂存区)-> git commit -m “描述”(将文件从暂存区提交到Git仓库)
(6) 从仓库中删除文件:git rm 文件名(删除文件)-> git add 文件名(将文件添加到暂存区)-> git commit -m “描述”(将文件从暂存区提交到Git仓库)

5、Git远程仓库
(1)作用:备份,实现代码共享,集中化管理。
(2)Git克隆操作:将远程仓库(GitHub对应的项目)复制到本地:git clone 远程仓库地址
(3)将本地仓库同步到Git远程仓库中:git add 文件名 -> git commit -m “描述” -> git push(将本地仓库提交到远程仓库)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值