git概述
Git是一个开源的分布式版本控制系统,由Linux之父(Linus Torvalds)创建
what?-- 什么是Git
Git是一种软件工具,用于跟踪和管理代码或任何其他文件类型的更改。它是一个分布式系统
,这意味着每个开发者的本地计算机上都有一个完整的项目历史记录副本,而不仅仅是最新版本的文件。
why?-- 干啥用的
- 版本控制:它允许用户回溯到项目的任意历史版本,查看和理解代码在不同时间点的变化。
- 协同工作:多个开发者可以同时在同一个项目上工作,并通过Git合并各自的修改,解决可能出现的冲突。
- 备份和恢复:由于每个本地仓库都包含完整的历史记录,所以即使某个开发者的数据丢失,也可以从其他人的仓库中恢复。
- 分支与合并:Git支持轻松创建和管理项目分支,使得并行开发新功能、修复bug以及实验性改动变得简单且可控。
how?-- 解决了什么问题?
- 追踪变化:在软件开发过程中,代码会频繁变更。Git能够记录每一次修改,使得开发者可以了解何时、何人做出了哪些改变。
- 协同工作中的冲突:在多人协作的环境中,可能会出现同时修改同一部分代码的情况。Git提供了一套机制来识别和解决这些冲突。
- 代码版本管理:开发者可以随时切换到项目的任意历史版本,这对于调试问题、回滚错误更改或者恢复丢失的数据非常有用。
- 备份和恢复:通过分布式存储,Git降低了因单点故障导致数据丢失的风险。
- 通过Git,在开发的时候会更加便捷,代码也更安全,前面提到Git是一个分布式的系统,也就是说我们可以将本地的代码仓库同步到云端服务器,开发者可以更高效、安全地进行软件开发和版本控制,无论是个人项目还是大型团队协作项目。
git全局配置方面
-
用户名和电子邮件:
-
用户名:通过以下命令设置全局的用户名:
bashgit config --global user.name "your_username"
-
电子邮件:通过以下命令设置全局的电子邮件地址:
bashgit config --global user.email "your_email@example.com"
这些信息会在每次提交时作为提交者的身份信息包含在提交记录中。
-
-
凭证助手:
-
Git可以存储你的GitHub或其他Git服务的凭据,以避免频繁输入用户名和密码。以下命令使用存储助手(如
store
)来记住你的凭证:luabash git config --global credential.helper store
-
项目中初始化git
当我们创建好一个项目后,比如一个vue3
的项目,我们就可以在当前文件夹初始化git 我们可以先准备好一个git的配置文件,用于忽略一些不需要提交的文件,比如node_modules
code
# 忽略日志和缓存文件
logs/
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# 忽略编译输出和映射文件
dist/
node_modules/
coverage/
# Vue-specific files
.vuepress/dist
public/dist
# webpack bundle分析文件
webpack-stats.*
# 配置文件的备份
*.bak
*.swp
*~
# IDE 相关的临时文件
.idea/
.vscode/
*.sublime-project
*.sublime-workspace
# Docker 文件
.dockerignore
docker-compose.override.yml
docker-compose.yml
# 区域性设置文件
.env.*
.env.local
.env.development.local
.env.test.local
.env.production.local
# husky 的暂存文件
.husky/
# Git 相关的忽略
.git/
.DS_Store
.gitattributes
.gitmodules
.gitignore
# Eslint 和 Prettier 的忽略
.eslintcache
.prettierrc.js
# TypeScript 编译时生成的文件
*.js
*.d.ts
# Cypress 测试相关的忽略
.cypress/
# Firebase 相关忽略
.firebaserc
firebase.json
# Yarn 工作区的忽略
.yarn/
.yarn/releases/
.yarn/plugins/
.yarn/sdks/
.yarn/versions/
.yarnrc.yml
# 如果使用 Vue CLI,可以忽略这些文件
vue.config.js
vite.config.js
*.env.*
# 如果使用 Electron,可以忽略这些文件
electron-vue/
node_modules/electron/
node_modules/vue-cli-plugin-electron-builder/
dist_electron/
# 如果使用 ESLint 或其他 Linter,在此处添加相应的忽略规则
- 在当前目录打开终端,然后初始化仓库:
bash
git init
-
检查状态:
确保Git已经正确地跟踪你的项目文件,可以运行以下命令:
bashgit status
这将显示项目的当前状态,包括未被跟踪的文件和任何改动。
-
查看当前的分支:
bashgit branch
-
添加文件到暂存区: 要将项目中的所有文件添加到Git的暂存区(准备进行首次提交),可以使用以下命令:
bashgit add .
这里的
.
表示当前目录及其所有子目录下的所有文件。 -
提交更改:
现在,你可以提交你的初始版本的代码,通过以下命令:
bashgit commit -m "提交的描述信息"
这里的
-m
参数后面是你的提交消息,用来描述这次提交的内容。 -
添加远程仓库:
假设你已经在远程服务上创建了一个新的空仓库,并得到了它的URL(通常以
https://
或git@
开头)。你可以使用以下命令将远程仓库添加到你的本地项目:bashgit remote add origin remote_repository_url
- 将
remote_repository_url
替换为你实际的远程仓库URL。 origin
表示远程仓库的仓库名
- 将
-
推送到远程仓库:
最后,你可以将你的本地主分支(默认为
master
或main
)与远程仓库的对应分支关联,并推送你的代码:bashgit push -u origin main
-
origin
表示远程仓库的仓库名 -
main
表示分支的名称
-
git基本命令的使用 -- 在日常项目开发中
分支相关
- 查看当前仓库:
git remote -v
- 查看当前分支:
git branch
- 切换到某个分支:
git checkout branch_name
- 创建并切换到某个分支:
git switch -c new_branch_name
- 合并分支:
git merge <branch_name>
- 删除分支:
git branch -d <branch_name>
远程服务器相关
- 拉取远程仓库的更改:
git pull origin <branch_name>
- 推送到远程仓库:
git push origin <branch_name>
文件相关
- 添加文件到暂存区:
git add <file>
-- 添加某个指定文件git add .
-- 添加所有改动
- 提交更改:
git commit -m "提交的描述信息"
- 查看提交历史:
git log
- 查看未跟踪的文件和改动:
git status
- 撤销工作目录中未暂存的更改:
git restore <file>
- 撤销暂存区的更改:
git reset <file>
- 回退到特定的提交,可以先使用
git log
得到对应的hash值:git reset --hard <commit_hash>
- 查看文件差异:
git diff <file>
- 重命名或移动文件:
git mv <old_file_path> <new_file_path>
使用时的一些注意事项
-
填写清晰的提交信息:
- 使用动词开头的短语描述你的更改,例如 "添加了某个功能", "修复了某个bug"等。
- 如果可能,提供更改的具体上下文和影响,例如 "Update authentication logic to support OAuth 2.0"。
- 避免使用过于笼统或模糊的描述,如 "修改", "删除", 除非它们后面跟随了具体的描述。
-
可以频繁提交:
- 在完成一个功能点、修复一个bug或实现一个小改进后,立即提交你的更改。
- 对于大型任务,可以考虑将工作分解成多个小步骤,并为每个步骤创建一个提交。
-
灵活使用分支:
- 创建新的分支来开发新功能、修复bug或进行实验性工作。
- 在分支上完成工作后,通过合并请求(Pull Request)将更改合并回主分支。
- 遵循团队的分支命名约定,使分支名称具有描述性和一致性。
-
解决冲突:
- 当合并分支时,如果出现冲突,Git会标记出发生冲突的文件和行。
- 打开冲突文件,查看并理解冲突的内容,然后手动编辑文件以解决冲突。
- 解决冲突后,务必运行测试并检查代码是否按预期工作。
-
保持.gitignore文件更新:
- 在项目开始时就创建
.gitignore
文件,并列出需要忽略的文件和目录。 - 随着项目的进展,定期更新
.gitignore
文件,添加新的忽略规则。
- 在项目开始时就创建
-
保护重要的分支:
- 在团队协作中,通常会对主分支设置权限限制,只允许通过合并请求进行更改。
- 可以配置Git服务器(如Gitee)的设置,防止意外删除重要分支。
-
熟练的进行备份和恢复:
- 定期将本地Git仓库备份到另一个安全的位置,如外部硬盘或云存储服务。
- 学习如何从Git历史中恢复文件或整个项目,使用命令如
git checkout
或git reflog
。
-
充分理解Git的工作流程:
- 熟悉Git的基本工作流程,包括添加(
git add
)、提交(git commit
)、推送(git push
)和拉取(git pull
)等操作。 - 理解暂存区的概念,它是Git在提交之前临时保存改动的地方。
- 熟悉Git的基本工作流程,包括添加(
-
使用Pull Request进行代码审查:
- 在团队协作中,使用Pull Request(合并请求)来提交你的更改,并邀请其他成员进行审查和讨论。
- 在审查过程中,遵循团队的代码审查指南和最佳实践。
-
保持本地和远程仓库同步:
- 定期使用
git fetch
和git merge
或git rebase
命令从远程仓库获取最新的更改。 - 在推送你的更改到远程仓库之前,先确保你的本地仓库是最新的,以减少合并冲突的可能性。
- 定期使用
-
注意安全性和隐私部分:
- 不要在公开的仓库中包含敏感信息,如密码、API密钥、数据库凭据等。
- 如果在本地使用SSH密钥进行身份验证,确保私钥的安全,不要将其泄露给他人。
- 考虑使用环境变量或配置管理工具来管理敏感信息。