目录
0.快捷键
(1) 在vscode中ctrl+~键可以打开集成终端 在集成终端中tab键可以补全命令,alt加b可以直接打开浏览器。
(2)git commit忘记输入-m 提交信息怎么办?
输入i (即insert) 输入备注信息,输入完成之后 点击esc ,然后输入:wq或者两次大写Z 就退出回到命令界面了
1.版本控制
(1)什么是版本控制?简单来说,版本控制在软件开发中,可以帮助程序员进行代码的追踪、维护、控制等等一系列的操作
(2)集中式版本控制和分布式版本控制的区别
集中式全存在一个服务器上,这个服务器出问题就全完了。
2. Git的安装
1.安装Git
Git的官网:https://git-scm.com/downloads
-
Git安装的几个工具:
-
Git bash 基本都用这个,它包括常用的cmd,增加了linux的命令
-
git cmd
-
git gui
-
3. Git的配置
第一次都要设置用户名和邮箱
-
git config --global user.name ""
-
git config --global user.email ""
4. 初始化仓库
-
本地 git init :该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的核心; 但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪;
-
远程 git clone
-
5. 本地文件的状态
- 已跟踪的文件又可以进行细分状态划分:
-
staged:暂缓区中的文件状态; Unmodified:commit命令,可以将staged中文件提交到Git仓库 Modified:修改了某个文件后,会处于Modified状态;
-
-
查看文档状态
-
git status
-
6. 常见的操作
通过git add . 将所有的文件添加到暂存区中 .
-
git commit -m ""
-
git commit -a -m ""
git忽视文件:
7. 历史记录
-
git log
不传入任何参数的默认情况下,git log 会按时间先后顺序列出所有的提交,最近的更新排在最上面; 这个命令会列出每个提交的 SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交说明; -
git log --oneline 一行显示
-
git log --oneline --graph 英文状态下按q ,即可退出
8. 版本回退

-
git reset --hard HEAD^
-
git reset --hard HEAD~100
-
git reset --hard commitid
9. 远程仓库
-
GitHub
-
Gitee
-
gitlab: 自己搭建
10. 身份认证
-
https的账号密码凭证
-
ssh的公钥和私钥
11. 添加远程的服务器
git remote
git remote –v
-v是—verbose的缩写(冗长的)
12. 问题的处理
设置上游分支(跟踪分支)
git fetch git branch --set-upstream-to=origin/main
合并没有共同base分支
git merge --allow-unrelated-histories
Github
GitHub创建远程仓库
# 初始化本地仓库 git init # 添加远程仓库 git remote add origin xxxx # 从远程仓库获取内容 git fetch git branch --set-upstream-to=origin/main //设置上游分支 git merge --allow-unrelated-histories # git push git config push.default upstream //默认是master # 换一种做法 git checkout main
常见开源协议:
13. git tag
git tag v1.0.0 git tag git tag -d v1.0.0 # 将本地tag push远程仓库 git push origin v1.0.0 git push origin --tags # 删除远程的tag git push origin -d v1.0.0
14. git的原理(git如何保存内容)
git add . # .git/objects/00 40 git commit -m "aaa" # .git/object/eb -> 提交信息/作者/tree # .git/object/aa # aaa.js -> 00 # bbb.js -> 40
15. 分支结构
本地分支的使用
创建分支
git branch testing
切换分支
git checkout testing
# 创建并切换
git checkout -b testing
合并分支
git checkout master git merge testing
查看所有的分支
git branch # 删除本地分支 git branch -d testing
远程分支的操作
# 初始化本地仓库 git init # 添加远程仓库 git remote add origin xxxx # 从远程仓库获取内容 git fetch git branch --set-upstream-to=origin/main git merge --allow-unrelated-histories # git push git config push.default upstream # 换一种做法 git checkout main
推送一个远程分支:
git push origin develop # 李四操作 git checkout develop
删除远程分支
git push origin -d develop
git flow工作流
第一图:
-
master: 记录主要的版本
-
develop: 开发版本
-
topic: 新主题
第二图:
-
master: 记录主要的版本
-
tag
-
-
hotfix: 热修复
-
merge master
-
merge develop
-
-
develop: 开发分支
-
release: 上线的分支
-
merge master
-
merge develop
-
-
feature: 新特性
git rebase
-
改变某一个分支base, 目的让log的历史记录更加的简洁
-
黄金原则: 不要在主分支中使用rebase
16. Git中常见的命令总结
基础的命令: (必须掌握)
git clone xxxxxxxx git add . git commit -m "xxxx" git pull ->(git fetch + git merge) git push
进阶的命令:
-
main
-
develop
-
feature
git checkout develop # 1.检查服务器是否有origin/develop这个分支 # 2.创建一个本地的develop分支 # 3.让本地的develop分支自动跟踪origin/develop # 4.切换到develop分支 git add . git commit -m "" git pull git push
高级的命令:
git tag git checkout -b develop git push origin develop git merge develop git rebase
17.常见问题
(1)在master分支开发到444,这个333是一个打了tag为v1.0.0的版本,这个版本出现了bug,怎么开启另一个分支去解决?
1.要回退版本,git reset --hard <commitId> 用git show v1.0.0找到这个版本的id 进行回退
2.这个时候master指针也到了这个版本,为了后面合并他得回去,git reflog展示所有操作,找到id进行回退
3.创建分支git branch testing ,切换分支 git checkout testing 修复bug
4.合并分支,先回到master 再git merge testing ,最后再提交
(2)不是克隆的代码如何与远程仓库连接,相当于从无到有
1.先创建本地仓库 git init
2.添加远程仓库,并且命名origin
git remote add origin https://gitee.com/ggbond33/remote_branch.git 相当于建立了通道,但本地不知道远程到底有什么分支
3.执行git fetch origin master,让本地去远程取你要的分支,在本地有了origin/master分支
4.git branch --set-upstream-to=origin/master 设置上游分支,本地的master和origin/master产生了联系,即branch 'master' set up to track 'origin/master'.
5.把main和origin/master合并,但是它们没有共同祖先,所以执行git merge --allow-unrelated-histories ,也不用指明merge谁 因为master已经追踪origin/master了
6.然后再git push
如果本地仓库是master而远程仓库是main是比较复杂的,看codewhy的视频,创建成名字相同比较好点。