【Git】初始Git及入门命令行
目录
为什么学习 Git 这么重要?
1. 安装 Git
2. 配置 Git
3. 创建本地 Git 仓库
1. git初始化远程仓库: git init
2. 就是要新增两个必须要配置的选项: name 和 email
3. 查看当前本地仓库的配置情况: git config -l
4. 删除(重置)name 或 email:
5. 全局范围内进行配置name email
6. 不允许手动在 .git文件下进行文件修改
7. 用git进行文件管理:
8. 显示工作区跟暂存区的区别:git diff “文件名”
9. 版本回退:git reset
10. 撤销修改 回到上一次add状态
11. rm file4 只是删除工作区的file4文件
12. git分支
13. git checkout -b “分支名” 一步完成创建分支 并 切换分支
14. 合并冲突:
15. 分支管理策略
16. 分支策略
17. bug分支
18. 强制删除分支
19. 远程操作 理解分布式远程版本控制系统
总结不易~ 本章节对我有很大的收获, 希望对你也是!!!
为什么学习 Git 这么重要?
-
版本控制:想象一下,如果你做的代码一直没有记录,每次修改都不小心覆盖掉之前的内容,那可怎么办?Git 就是帮你解决这个问题的工具。它能记录每次代码的改动,万一出问题了,你可以随时回到以前的版本。
-
多人协作:现在很多项目都不是一个人做的,通常是好几个开发者一起做。Git 让大家可以在不同的地方同时工作,而不会互相影响。每个人可以在自己电脑上修改代码,然后再合并起来,避免冲突。
-
开源和贡献代码:现在很多开源项目都托管在 GitHub 上。如果你想为这些项目做贡献,你必须会 Git。你可以轻松地提 Pull Request,把自己的代码贡献给别人。
-
解决问题更方便:Git 允许你随时回溯到之前的版本,看到是哪个修改导致了问题。遇到 bug 时,你可以更轻松地找出原因,避免浪费时间。
-
提升工作效率:Git 支持你在本地做很多修改和实验,然后再决定什么时候上传到服务器,避免了频繁上传的麻烦。你可以在一个独立的“分支”上工作,等完成后再合并回主代码库。
1. 安装 Git
首先需要安装 Git,可以访问 Git 官网https://git-scm.com/ 下载安装包并根据提示安装。
2. 配置 Git
安装完成后,打开终端(命令行),执行以下命令来配置 Git 用户信息(这将被记录在 Git 的提交历史中):
git config --global user.name "你的名字" git config --global user.email "你的邮箱"
3. 创建本地 Git 仓库
在本地创建一个项目目录,并进入该目录:
mkdir my_project cd my_project
然后通过以下命令初始化一个 Git 仓库:
git init
这会在当前目录下创建一个 .git
文件夹,表示该目录已成为一个 Git 仓库。
1. git初始化远程仓库: git init
2. 就是要新增两个必须要配置的选项: name 和 email
- 2.1 git config user.name "lyh"
- 2.2 git config user.email "liuyihao50@163.com"
3. 查看当前本地仓库的配置情况: git config -l
4. 删除(重置)name 或 email:
- 4.1 git config --unset user.name
- 4.2 git config --unset user.email
5. 全局范围内进行配置name email
- 5.1 git config --global user.name "lyh"
- 5.2 git config --global user.email "liuyihao50@163.com"
- 5.3 全局删除 要加上--global :git config --global --unset user.name
6. 不允许手动在 .git文件下进行文件修改
7. 用git进行文件管理:
- 7.1 将文件的修改添加到暂存区内: git add . (. 将当文件下的所有内容都进行提交)
- 7.2 将暂存区的内容提交到本地仓库里: git commit -m “描述你的细节”
- 7.3 查看提交信息时间和用户信息: git log 或者 git log --pretty=oneline
8. 显示工作区跟暂存区的区别:git diff “文件名”
9. 版本回退:git reset
如果回退后悔了怎么办? 那么就要重新获得上面的最新版本的commit id进行回退即可:
Git reset –hard + “最新版commit id”
如果之前的commit id 不见了 怎么办呢?
后悔药: git reflog 用来记录每一次提交的命令
这里仍然是成功的回退到了第一次提交记录
版本回退的速度是非常快的 就是由于 git记录了每次的版本 然后用一个master指针进行指向,我们只需要修改指针的指向就能够快速的修改当前版本
10. 撤销修改 回到上一次add状态
- 10.1 就好比如 我们以及开发了3天了但是一直没有执行add操作 那么我们不可能将我们的狗屎代码进行一行行删除操作 这个时候就要用上撤销了
回到最近一次add状态(就是最近一次的暂存区的内容) Git checkout – “文件名”- 10.2 当工作区和暂存区都有代码的时候要进行回退 就用git reset 默认选项 回退到当前版本 HEAD 表示当前版本 HEAD^ 表上上一个版本 HEAD^^表示上两个版本
10.3 git status查看当前工作区和暂存区的状态
11. rm file4 只是删除工作区的file4文件
修改暂存区的文件 git add file4
注意这里千万不是add添加的意思 是修改暂存区的意思 !!! file4 在工作区被删除 那么重新add file4 就是将暂存区跟工作区进行同步file4文件
暂存区同步完后进行commit操作 才将一个文件真正的删除
删除文件操作也可以简化到两步:
- 11.1 使用git提供的rm操作:git rm “文件名”
- 11.2 进行commit
12. git分支
- 12.1 查看本地分支有哪些: git branch
- 12.2 创建本地分支: git branch “分支名称”
创建分支 就是在当前最新的状态下进行创建分支 所以创建后的分支跟当前指向是同一个位置
- 12.3 将HEAD切换到我们创建的分支上:git checkout “分支名”
可以看的出来就是* 就是代指HEAD 指向当前所在的工作分支
对于不同分支的提交 结果的确不同的!回到原来的master分支后 就不存在 在dev分支进行修改的操作
- 12.4 合并分支
1. 切换到master分支上
2. 合并dev分支: git merge “分支名”
- 12.5 删除本地分支
合并后,自己创建的本地分支就可以删除了 不会占用本地资源
注意,在master分支上删除别的分支:git branch -d “分支名”
13. git checkout -b “分支名” 一步完成创建分支 并 切换分支
- 13.1 git branch dev 创建分支
- 13.2 git checkout dev 切换分支
14. 合并冲突:
当我们对同一个文件创建分支后 对其分支和master分支都进行修改 然后进行合并,果不其然 会产生合并冲突:
那么这个时候 我们只需呀手动对代码进行删除操作 保留我们想要的结果就可以,删除完成后 我们还需要在进行一次提交操作
15. 分支管理策略
15.1 通常合并的时候git会采用fats forward模式:删除分支后 产看分支历史的时候, 会丢掉分支信息,看不出来最新提交的到底是merge进来的还是正常提交的
15.2 查看分支历史:git log --graph --abbrev-commit
这一段就看不出来最新提交的到底是merge进来的还是正常提交的,因为没有分支显示,那么怎么提交才能一直保持具有分支显示呢???
no-ff 模式这样就能一直看的出来是否为提交分支了
16. 分支策略
17. bug分支
如果在dev分支中开发到一半 不进行提交,转而发现master分支内有bug 那么就会发现master工作区会变得跟dev工作区一样
可以看到只在工作区中进行了修改,但是我们还是要避免这种情况的发生
为了不影响master:
- 先切回dev分支
- Git提供了:git stash 将工作区的内容进行储存
此时就能看到没有上面追加的“aaaa“字符串
能够看到master分支上也没有改字符串
假如此时我们发现了master有一个bug 新建一个分支 fix_bug我们要对其进行修复,修复好的bug为字符串abcccchhhha
进行提交后,切换到master分支进行合并fix_bug 来进行修复bug
- 查看当前stash里面存储了哪些东西:git stash list
- 将stash里面的东西放出来: git stash pop
可以发现我们在当前的dev分支上并没有修复bug, 就是因为我们master修复bug只是在fix_bug分支上进行修复的 然后合并到master 分支上 当我们完成开发后 将当前的新功能进行提交~这时候我们就会发现一个问题!!!
有可能会发生合并冲突! 因为此时的dev 和 master 都同时对该新功能进行了修改但是如果我们人工去修改代码就极大可能会修改出新的bug。
那么唯一的解决办法就是 在dev下来合并master 然后等在dev上修改好合并冲突后 在让master 重新合并dev就不会存在合并冲突了;
合并后 就算有冲突 也可以在本地分支就行修改 这样就不会影响master代码
Dev合并好后产生冲突 然后解决冲突
注意dev解决好冲突后一定要进行提交 在切换master进行合并
在dev上解决好冲突后 在让master进行对dev合并!!!
18. 强制删除分支
倘如产品经理开始要求新增一个功能,但是随后又说要求删除改功能,用不上了, 那么这个给时候就会要求强制删除该分支: git branch -D “分支名” 强制删除
19. 远程操作 理解分布式远程版本控制系统
有一台“中央服务器”24小时开机 就可以使不同的人不停的进行推送和拉去代码,那么世界上总有一堆很神奇的人来做这个远程仓库 然后让你用git这个分布式版本控制系统来进行推送和拉去到github等一系列平台上的代码 来进行托管
大白话就是:
- Git 就像是你写作业用的笔记本 + 修改记录工具,在你自己电脑上。
- GitHub 就像是网上的作业分享网站,你把笔记本上传上去,别人可以看、评论、甚至一起改。