我的 git 笔记
# 报错:error: remote origin already exists.
先删除远程 Git 仓库
git remote rm origin
再添加远程 Git 仓库
git remote add origin [email protected]:your-github-name/your-repository.git
# Git 版本控制
概念:一个免费开源、分布式的代码版本控制系统,帮助开发团队维护代码
作用:记录代码内容,切换代码版本,多人开发时高效合并代码内容
安装:百度。装好后在vscode中可以使用,git -v 查看版本
# Git 配置用户信息
配置用户名和邮箱,应用在每次提交代码版本时表明自己身份
git config --global user.name "your-username"
git config --global user.email "[email protected]"
git config --list
2
3
4
# Git 本地仓库
Git仓库(repository):记录文件状态内容的地方,存储着修改的历史记录。是一个.git的隐藏文件夹
创建:
- 把本地文件夹转换成Git仓库:
git init - 从其他服务器上克隆Git仓库:
git clone xxx
创建仓库后,打开文件资源管理器->查看->隐藏的项目,然后就可以在项目根目录下看到.git文件夹了
# Git的三个区域
工作区:实际开发时操作的文件夹
暂存区:保存之前的准备区域(暂存改动过的文件)
版本库:提交并保存暂存区中的内容,产生一个版本快照
git add 文件名 - 暂存指定文件
git add . - 暂存所有改动过的文件
git commit -m "注释说明" - 提交并保存,产生版本快照
2
3
查看暂存区记录的文件:git ls-files
# Git 文件状态
Git 文件 2种状态:
- 未跟踪:新文件,从未被Git管理过
- 已跟踪:Git 已经知道和管理的文件
文件状态 概念 场景
未跟踪(U) 从未被 Git 管理过 新文件
新添加(A) 第一次被 Git 暂存 之前版本记录无此文件
未修改('') 三个区域统一 提交保存后
已修改(M) 工作区内容变化 修改了内容产生
2
3
4
5
查看改动过的文件状态:git status -s
# Git 暂存区使用
暂存区:暂时存储,可以临时恢复代码内容,与版本库解耦
从暂存区恢复文件到工作区:git restore 目标文件 (注意:会被完全覆盖)
从暂存区移除文件:git rm --cached 目标文件
# 回退版本
把版本库某个版本对应的内容快照,恢复到工作区/暂存区
查看 git 提交历史(当前分支):git log --oneline
查看所有记录(包括分支、重置、回退、丢弃等):git relog --oneline
Git 回退命令
git reset --soft <版本号>版本库回退到指定版本,保留工作区和暂存区原本内容git reset --hard <版本号>彻底回退到指定版本,丢弃工作区和暂存区的所有内容,会重置到指定的提交状态。如果有新的提交就无法恢复!git reset --mixed <版本号>回退到指定版本,保留工作区的改动,丢弃暂存区的改动。默认方式,它与git reset没有参数时的效果是一样的。
# 删除文件
例如,要删除editor.js文件并产生一次版本记录
步骤:
- 先手动删除工作区中的
editor.js - 更新暂存区
git add .或者 指定从暂存区移除git rm --cached editor.js - 提交保存
# 忽略文件
.gitignore 文件可以让 git 彻底忽略跟踪指定文件
目的:让 git 仓库更小更快,避免重复无意义的文件管理。
例如:软件或者系统自动生成的文件 node_modules 等、运行时生成的日志文件 缓存文件 临时文件等、涉密文件
创建:
- 项目根目录新建
.gitignore文件 - 填入相应配置来忽略指定文件
如果要忽略的文件已经被暂存区跟踪过,把它从暂存区移除即可
// .gitignore 举例
node_modules
dist
.vscode
*.pem
*.cer
*.log
password.txt
2
3
4
5
6
7
8
# 分支操作
基本概念
- HEAD:指针,指向当前所在的提交版本(一般指向当前分支的最新提交)。
- master(旧称)/main(新称):默认的主分支,用于存放稳定的发布版本。
- 分支(Branch):从主分支或其他分支分出来的代码路径,用于隔离不同功能或修复任务。
- 例如:功能分支 (
feature/xxx):用于新功能开发。修复分支 (hotfix/xxx):用于紧急修复Bug。
- 例如:功能分支 (
常用命令
查看分支
git branch # 查看本地分支
git branch -r # 查看远程分支
git branch -a # 查看所有分支(本地 + 远程)
git branch feature-login # 创建分支
2
3
4
创建并切换到新分支
git switch -c feature-login
git checkout -b feature-login # 创建并切换到新分支
2
切换分支
git switch main
git checkout main # 旧指令
2
删除分支
git branch -d feature-login # 删除已合并分支
git branch -D feature-login # 强制删除未合并分支
2
推送分支到远程
git push origin feature-login
拉取远程分支
git fetch origin
合并分支 feature-login->main
git switch main
git merge feature-login
2
查看分支图
git log --oneline --graph --decorate --all
简单的分支流程:
# 1. 创建并切换到新分支
git switch -c feature-auth
# 2. 修改代码并提交
git add .
git commit -m "完成登录功能"
# 3. 推送到远程仓库
git push origin feature-auth
# 4. 切回主分支并合并(当分支代码测试无问题后)
git switch main
git merge feature-auth
# 5. 删除本地分支
git branch -d feature-auth
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
分支合并到主线时,主线已经有了新的提交记录,这时候Git 会自动比对两个分支的共同基础提交点和最新改动,通过三路合并生成新的合并提交记录。但是一般合并时会发生冲突,需要手动处理
不同分支中,对同一个文件的同一部分进行了修改,Git 无法干净的合并,产生合并冲突。需要打开 VsCode 手动解决冲突,合并后再进行提交
# Git 远程仓库
托管在网络上的某个项目的版本库,保存版本库的历史记录,用于多人协作
推送到远程步骤:
- 注册第三方托管平台网站账号
- 新建仓库得到远程仓库 Git 地址
- 本地 Git 仓库添加远程仓库原点地址
git remote add 远程仓库别名 远程仓库地址- 例如:
git remote add origin xxx.git
- 查看一下:
git remote -v - 如果想更改远程仓库,需要先移除:
git remote remove origin,然后重新添加即可 - 本地 Git 仓库推送版本记录到远程记录
git push -u 远程仓库别名 本地和远程分支名- 例如:
git push -u origin master - 完整写法:
git push --set-upstream origin master:master
克隆到本地步骤:
- 执行指令:
git clone 远程仓库地址,就会在运行命令的文件夹生成仓库名文件夹(包含版本库,并映射到暂存区和工作区) - 并且此时生成的 Git 本地仓库已经建立好和远程仓库的链接,但是要加入仓库成员才能推送。 或者修改推送远程仓库为自己的仓库
拉取到本地步骤:
- 如果本地已有仓库,需要从远程仓库获取最新的更改内容,需要拉取到本地:
git pull origin master - 等价于 获取+合并:
git fetch origin master:master+git merge origin/master
补充:拉取合并 指令 git pull -rebase 远程仓库别名 分支名
# VSCode 中使用 Git
在VSCode左侧第三个图标中,可以使用源代码管理,可视化的对项目进行暂存、撤销、对比差异、提交等操作