简单来说Git就是一个控制开发项目版本的工具,并且可以协同并行开发,可以多个人开发一个系统,每个人做不同的方向。没学过Git之前,你做项目时完成了一些功能,你想修改或者拓展,但是你怕修改错误,还不如以前,你可能就会复制一份这个代码,在复制的代码中修改,即便你修改错了也不怕,你备份了一份,这就有点版本控制的意思了,但是Git版本控制工具不仅仅有这一功能。

版本控制工具分为集中式,和分布式,Git为分布式,集中式没分布式好,出现服务器的单点问题,现在多是用分布式管理

在学习git之前要有几个基本的概念,工作区,缓存区,本地仓库

工作区就是你电脑存放项目的地方,文件夹

git下载

官网直接无脑安装,next,next,没啥大影响

git常用命令

在项目中要使用Git用于版本控制管理,你首先要进入到你项目目录,右键然后点击Open Git Bash Here

在学习前可以用IDE打开一个在写项目实时观看里面的内容是否跟随版本切换发送变化

git init

这个命令用于初始化项目git,相当于这是开始用Git的管理

这是页面效果,显示初始化了一个空的Git仓库

git status

使用git status命令查看当Git仓库的状态

master表示主分支,no branch master,表示主分支上没有其他的分支,No commits yet 表示重来没有提交过代码,红色目录结构文件就是未提交的所有文件。此时就要用到`git add .`来提交所有代码到git仓库的缓存区

git add .

将代码提交到缓存区,在工作区和缓存区的代码都是可以删除的,只有提交到了本地仓库之后才无法删除的

这是提交到缓存区的结果,这些警告不用管,程序员从不管警告,只管错误。这样你的项目就提交到了缓存区。至于为什么要设置缓存区,不直接提交到本地仓库是因为给开发者提供一个中间过渡层,在将修改提交到本地仓库之前,可以对代码进行更灵活的控制。让你有机会检查哪些修改要提交,哪些不需要提交。不通过缓存区,直接提交所有更改,可能会提交不完整或错误的代码,增加风险。

再用git status查看状态

现在文件目录变成绿色表示已经放入缓存区。

git commit -m ” “

用于提交到了本地库,这才实现git的版本管理了

就像这样,红色框相当于这个版本的唯一ID。现在使用git log查看提交日志。-m ” 你提交的信息”:用来描述这次提交的内容,比如 “初始化项目” 或 “更新了配置文件”。

git log与git reflog

查看日志,包括项目的所有版本,以及提交信息

git log与git reflog的区别就是git log输出的信息更加详细

git reset –hard version-ID

用于在多个版本中间切换,很好理解吧。格式就是git reset –hard +版本ID例如这样git reset –hard 6ca63e,这里我改改项目代码,然后git status就会显示你改了哪些文件

第一个use表示提交更新的内容,第二个use表示放弃更改。

我们使用git add .将新的文件先提交到缓存区,然后再使用git commit -m ”自己命名“提交到本地仓库,使用git status查看状态就没有显示没有提交的文件了,现在使用git log 查看所有版本信息,就是显示了两个版本的信息,id和名字,如图所示。

注意提交了第二个版本,默认当前就是第二版本了。

使用git reset –hard version-ID切换到第一个版本。

现在就就是第一个版本了,如果你在IDE中打开了项目,你就可以看到文件的变化,你改的不见了,回到了第一个版本。

Git分支

master/main作为主线分支

为什么要分支?

对比项不用分支使用分支
开发冲突高,代码混乱,冲突难以解决低,每个分支独立开发
代码稳定性主分支容易不稳定主分支保持稳定
功能隔离功能与修复混杂,难以独立测试和调试每个分支独立,便于测试与调试
并行开发只能串行开发,效率低可以并行开发,团队效率高
代码回滚回滚困难,影响整个分支回滚简单,删除或重置分支即可
版本管理难以管理不同版本的代码不同分支代表不同版本,管理清晰

如果不使用分支无法并行开发,同一个分支只能逐个完成任务,无法并行进行不同功能的开发。开发者需要排队等候,效率极低。使用了分支就可以实现张三开发A功能,李四开发B功能最后合并起来就有了AB 功能。创建分支和新增版本是有区别的哈。分支是版本的分支。

git branch -v 查看分支

使用git branch -v 查看目前在哪个分支,有几个分支

* master表示当前在主分支

git branch hot-fix

表示创建一个名为hot-fix的分支,再次使用git branch -v 查看分支情况

git checkout hot-fix

git checkout hot-fix切换到名为hot-fix的分支上面,然后可以使用git branch -v查看信息

* hot-fix表示当前在hot-fix分支上面 ,这个时候如果你在这个分支上修改代码后,再去切换为master分支你代码是没有变化的,需要将hot-fix分支的代码合并到master上面才会引起变化。

在IDE中修改hot-fix分支的代码,使用git status查看状态会发现

此时和之前一样,使用git add. 提交到缓存区, git commit -m “”提交到本地库。

切换回到主分支下再创建一个bugfix分支,并修改同一个文件

git merge hot-fix合并分支

先用git checkout master切换回到主分支,然后将刚才张三写的hot-fix合并到主分支当中。

再将李四写的bugfix合并到主分支中

使用git status查看状态

合并失败,发生了合并冲突,因为两个分支修改了同一个文件里面得代码,所以不知道听谁的,所以就会发生合并冲突,怎么解决

手动解决所有冲突,使用以下命令标记文件为已解决:git add pages/my/my.vue或者git add .

提交合并代码

解决所有冲突后,提交代码:git commit -m “解决合并冲突”

减小冲突:

如果主分支发生了变化(比如其他人合并了代码),你应该及时拉取主分支的最新代码,并合并到自己的开发分支中。比如先前的案例,就可以将hot-fix合并到主分支后,在bugfix中拉取新主分支代码,再写自己的代码,再合并就不会发生冲突。

合并冲突是不可避免的。如果团队中所有人都在同一时间完成开发,并同时尝试合并代码,冲突是难以完全避免的。

推送到远程仓库GitHub

在远程仓库创建一个和你本地仓库同名的仓库

后复制其HTTPS


使用Git先取一个别名

git remote -v先查看是否有别名

添加远程仓库,git remote add xxxxxx http://github.com/xxxxxx.git创建别名:

git push xxxxxxx master推送master分支代码

git pull xxxxxx master拉取远程库master分支的代码

拉取操作是将远程仓库中更新的代码同步到本地已有的仓库,并尝试合并到当前分支。

使用场景:

  • 当你的本地仓库已经存在,但你需要获取远程的最新代码时。
  • 适用于团队合作时定期同步代码。

git pull 等价于 git fetch + git merge

  1. git fetch:获取远程分支上的最新代码,但不会自动合并。
  2. git merge:将获取的远程分支代码合并到当前本地分支。

git clone https://github.com/xxxxxxxxxxxxxxx.git克隆代码

克隆操作是将整个远程仓库(包括代码、历史记录、分支等)完整复制到本地

使用场景:

  • 当你第一次获取远程仓库的代码时。
  • 在本地没有仓库时,需要从远程仓库创建一个完整的副本。

git clone <仓库地址>

克隆后自动会取别名origin

origin 是 Git 中的 远程仓库默认名称

当你将远程仓库克隆到本地时,Git 会自动将该远程仓库的 URL 设置为一个名为 origin 的别名。这是一个默认命名习惯,你可以将 origin 理解为远程仓库的“快捷名称”。其他时候要自己取别名。

当你想运行别人的项目代码时,需要克隆而不是拉取经常听到帮你人说拉取别人代码运行,这是不准确的,应该是克隆

如果你已经克隆过项目,但想获取最新的代码,就使用 拉取,或者自己获取团队的最新代码就使用拉取

Categories:

Tags:

暂时没有回复

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注