Git(代码管理)
下载
官网下载地址:Git-Downloads
环境配置
安装Git Bash客户端
- 打开已经下载好的Git客户端安装包存放路径,双击运行安装包,点next
- 修改安装路径(建议D盘)
- 后续无特殊配置,一路next,直到点击install,等待安装完成
配置Git Bash客户端
- 在桌面任意空白位置单击鼠标右键,点击Git Bash Here打开Git Bash客户端界面
- 在打开的客户端界面中配置用户名和邮箱
在Git Bash中输入以下命令:
💡用户名可以由字母、数字、常用符号组成,为方便管理,建议配置成与代码托管服务相同的用户名。邮箱请按照标准邮箱格式填写,建议使用真实的工作邮箱。git config --global user.name <您的用户名> git config --global user.email <您的邮箱> - 配置好之后可以使用
git config -l命令进行查看配置 - 生成并添加SSH公钥
-
在Git Bash客户端中执行
cat ~/.ssh/id_rsa.pub命令,尝试显示SSH公钥
💡如果提示"No such file or directory",则说明您这台计算机没有生成过SSH公钥,请生成并配置SSH公钥
💡如果至少返回了一组SSH公钥,则说明您这台计算机已经生成过SSH公钥,可使用已经生成的公钥在代码托管平台进行添加,如果想重新生成公钥,可继续执行后续步骤 -
在Git Bash客户端中执行
ssh-keygen -t rsa -C <您的SSH公钥注释(仅英文字母)>命令以生成新的SSH公钥
💡请按照下面提示操作说明1:首先会提示您输入SSH公钥的存储地址,一般直接回车使用默认即可
说明2:接下来会提示您为公钥设置密码和重新输入密码
如果设置密码,则生成的公钥文件是AES-128-CBC加密后存储的(后续提交代码需验证密码)
如果不设置密码,可直接回车,则生成的公钥文件id_rsa是明文存储的(后续提交代码不需验证) -
如果出现
Overwrite (y/n)? y提示,则说明路径下已经存在SSH公钥,询问您是否将其覆盖,填写"n"即选择不覆盖,会退出本次公钥生成操作,填写"y"继续生成公钥 -
在Git Bash客户端中执行
cat ~/.ssh/id_rsa.pub显示公钥以复制到代码托管平台绑定ssh密钥
-
- 解决Bash客户端中文乱码的方法,打开Bash --> 点击鼠标右键 --> 选择Options… --> Text --> Locale 选择 zh_CN --> Character set 选择 UTF-8
使用代码仓托管代码
- 代码托管平台绑定SSH密钥(不同代码托管平台大同小异,需要自己研究研究)
- 克隆/下载仓库到本地(大部分代码托管平台必须先绑定SSH密钥才可以克隆代码)
进入代码仓库,您可使用git clone命令将仓库下载到本地。通过克隆存储库,您可以将其文件的副本下载到本地计算机中,并保留与远程存储库的Git连接- 单击"克隆/下载",单击"用HTTPS克隆"或"用SSH克隆",复制访问方式中的HTTPS链接或SSH链接,建议使用SSH方式(方便后续提交代码)。
- 打开Git Bash客户端进入您的目录下,输入
git clone 您的HTTPS链接或您的SSH链接命令进行仓库克隆。如需输入密码,密码通常是代码仓账号的密码。 - 文件的副本将下载到以项目名称命名的本地文件夹中,输入
cd 项目名称命令进入到该目录可在本地对其进行处理
SSH克隆:只需输入一次凭据即可永久推送,凭据为您的域帐号用户名及密码
HTTPS克隆:每次推送都必须输入凭据。最新版本的 Git bash 能将您的凭据保持在本地
Git忽略与重新追踪
- 根目录下创建.gitignore文件可配置忽略规则
忽略文件夹:folder_name||node_modules||dist
忽略文件夹下得所有文件或目录:folder_name/*||folder_name/
忽略某个后缀的文件:*.log||*.pyc||*.idea||.pem等等 - Git Bash忽略已经被追踪的文件
- 首先打开Git Bash客户端cd到要处理的路径,或者直接在路径下右键菜单点击 Git Bash Here
- 运行命令从Git索引中移除已追踪的文件夹:
git rm -r --cached <path_to_folder> - 提交这些更改到你的仓库:
git commit -m "Remove tracked folder提交内容描述"
- Git Bash重新追踪已经被忽略的文件
- 首先打开Git Bash客户端cd到要处理的路径,或者直接在路径下右键菜单点击 Git Bash Here
- 运行命令添加追踪:
git add <path_to_folder> - 提交更改到仓库:
git commit -m "Add tracked folder"
附加说明:
查看被忽略的文件:git status –ignored
重置被忽略的单个文件(释放):git rm –cached <file_name写文件名>
重置被忽略的文件夹(释放):git rm –cached -r <folder_name写文件夹名>
重置被忽略的所有文件(释放):git rm –cached -r .
添加追踪单个文件:git add <file_name>
添加追踪文件夹:git add <folder_name/sub_folder_name>
添加追踪全部:git add .
提交更改:git commit -m "变更内容描述"
Win10搭建Git本地服务器
开源 Git 仓库管理工具包括GitBlit、GitLab CE、Sourcegraph、GitBucket、Gitea等。简单比较了一下,Gitea更符合需求。
- GitBlit 似乎2022年停止维护,依赖 JDK或JRE,配置系统变量麻烦,且管理界面bug较多,不好用。
- Sourcegraph 专注于代码搜索和导航,似乎比较小众。
- GitBucket 提供类似于 GitHub 的界面和功能,依赖JDK。
- GitLab CE 功能完善,硬件要求也较高,win系统部署要通过Docker,适合大型团队。
- Gitea 具备常用git功能,硬件要求低,支持系统丰富,社区活跃。
部署gitea
- 安装数据库(gitea支持众多数据库,可根据自己喜好选择),如果需要更高性能的话则必须安装,不按照也可以使用集成的SQLite3
- 安装Gitea:
- 下载gitea的Windows版本
- 下载完成后双击安装软件启动,启动成功后,打开localhost:3000进行配置
- 根据提示进行配置,数据库类型选择SQLite3可以免数据库安装、配置等操作(可以搜索Gitea教程)
- 配置完成后点击立即安装,安装完成再访问登录即可(若配置了管理员账号会自动完成登录)
Gitea注册为Windows服务
- 参考本文程序注册为Windows服务,防止gitea服务被意外关闭
Git合并分支
方式一: 使用Git Bash
- 在项目目录下,鼠标右键菜单点击Open Git Bash here打开Git Bash客户端。
项目主分支一般为"master",开发过程中对其他分支的更改不会反映在主分支上。如果想将更改提交到主分支,则需切换回master分支,然后使用合并,具体操作如下。
git checkout master #切换到待合并的分支
git merge <branch_name写你的分支名> #合并你提交的分支
💡强制合并:使用git merge dev/wy --allow-unrelated-histories来强制合并分支,其中dev/wy是你需要合并到主分支的分支名。--allow-unrelated-histories表示允许不相关历史,尽量不用这个指令。
- 如果合并过程中没有冲突,那么合并就会自动完成。如果有冲突,Git会停止合并操作并告诉你哪些文件存在冲突。你需要手动解决这些冲突,然后继续合并过程:
- 解决冲突:编辑有冲突的文件,解决冲突标记(例如<<<<<<<,=======,>>>>>>>),然后保存文件。
- 标记冲突为已解决:
git add <解决后的文件> - 继续合并操作:
git merge –continue - 如果你想要取消合并,可以使用以下命令:
git merge --abort
方式二: 结合VS-code
- 在VS-code开发工具界面,点击左下角分支名–>切换到待合并的master主分支
- 进入VS-code的Git插件操作合并分支
学习笔记
常用命令
-
初始化
- 在当前目录初始化仓库:
git init - 在指定目录初始化仓库:
git init <写你的目录名>
- 在当前目录初始化仓库:
-
添加暂存
- 添加指定名称的文件到暂存区:
git add <filename> - 添加所有更改过的文件到暂存区:
git add .
- 添加指定名称的文件到暂存区:
-
提交
- 提交更改到本地仓库:
git commit -m "commit message写你的提交信息"
- 提交更改到本地仓库:
-
推送(上传)
- 将更改推送到远程仓库:
git push <origin> <branch>origin是远程仓库名,master是分支名 - 将更改推送到远程仓库并进行关联:
git push -u origin master-u选项的作用是将本地分支与远程分支进行关联,这样在以后的推送或拉取操作中,Git就会知道将本地分支推送到哪个远程分支,或者从哪个远程分支拉取更新。这样可以简化后续的推送和拉取操作,不需要每次都指定远程分支的名称。 - 强制推送(谨慎使用):
git push origin master --force如果确定本地的更改是正确的,并且希望覆盖远程分支,可以使用--force选项强制推送。但请注意,这会覆盖远程仓库的历史记录,可能导致其他开发者的工作丢失,因此在团队协作中应谨慎使用。
- 将更改推送到远程仓库:
-
拉取(下载)
- 拉取远程仓库代码到本地但不合并:
git fetch <origin>一般用于拉取远程代码和本地进行比较,查看变动情况 - 拉取远程仓库代码到本地并合并:
git pull <origin> <branch>origin是远程仓库名,master是分支名,git pull同样可以使用-u选项 - 拉取远程仓库代码到本地并合并(允许合并两个独立历史的仓库):
git pull <origin> <branch> --allow-unrelated-histories当本地和远程仓库初始提交不同时需使用–allow-unrelated-histories选项。
- 拉取远程仓库代码到本地但不合并:
-
远程仓库
- 查看当前仓库配置的所有远程仓库信息:
git remote -v - 添加远程仓库:
git remote add <remote_name> <remote_url>remote_name是远程仓库名,remote_url是远程仓库的URL - 删除指定名称的远程仓库:
git remote remove <remote_name> - 修改远程仓库名称:
git remote rename <old_name> <new_name>将远程仓库的名称从old_name修改为new_name - 修改远程仓库的URL:
git remote set-url <remote_name> <new_url>new_url是新远程仓库的URL
- 查看当前仓库配置的所有远程仓库信息:
-
删除
- 将文件从暂存区和工作区中删除:
git rm <file_name> - 删除git仓库:
rm -rf .git彻底删除当前目录下的git仓库
- 将文件从暂存区和工作区中删除:
-
分支
- 创建一个新的分支:
git branch <branch_name>branch_name是创建的分支名 - 切换到某个分支:
git checkout <branch_name>branch_name是要切换到的分支名 - 合并分支:通常情况下主分支一般为master,日常开发中对其他分支的更改不会反映在主分支上。如果想将更改提交到主分支,则需切换回master分支,然后使用合并。
- 切换到待合并的分支:
git checkout master - 合并提交的分支:
git merge <branch_name>branch_name是要合并到主分支的分支名
- 切换到待合并的分支:
- 删除分支:
git branch -d <branch_name>
- 创建一个新的分支:
-
储藏
- 将当前工作目录中的更改储藏起来:
git stash - 查看储藏列表:
git stash list - 弹出储藏:
git stash pop将最新的储藏内容应用到当前工作目录中,并从储藏列表中移除 - 应用特定储藏:
git stash apply {stash@{n}}{stash@{n}}是你想要应用的储藏的索引
- 将当前工作目录中的更改储藏起来:
-
标签
- 打普通标签:
git tag <tagname>tagname一般为版本号,例如v1.0 - 打带注解的标签:
git tag -a <tagname>-a表示添加注解,执行该命令时Git会打开编辑器让写标签注解 - 推送指定标签到远程仓库:
git push origin <tagname> - 推送所有标签到远程仓库:
git push origin --tags - 本地删除标签:
git tag -d <tagname> - 远程删除标签:
git push origin --delete <tagname>
- 打普通标签:
-
公钥
- 生成SSH公钥:
ssh-keygen -t rsa -C <您的SSH公钥注释(英文字母)> - 显示公钥:
cat ~/.ssh/id_rsa.pub
- 生成SSH公钥:
-
版本回滚(安全方法):创建一个新的提交来"撤销"更改
- 使用
git log查看提交历史记录,以便获取需要回滚版本的hash值 - 使用
git revert <commit-hash>..HEADcommit-hash是要回滚版本的hash值,该操作可在不改变提交历史记录的情况下,回滚到指定hash版本
- 使用
Git分支命名规范
在Git中创建分支时,应选择有描述性的名称,以便于理解和维护。以下是常见的分支命名约定:
- 功能分支 (feature branches):以feature/为前缀,后接描述性名称。示例:
feature/3.add-login - 修复分支 (bugfix branches):以fix/或bugfix/为前缀,后接描述性名称。示例:
fix/login-error - 发布分支 (release branches):以release/为前缀,后接发布版本号。示例:
release/1.0.0 - 热修复分支 (hotfix branches):以hotfix/为前缀,后接描述性名称。示例:
hotfix/crash-on-start - 主题分支或重构分支 (topic branches or refactoring branches):可以根据需要命名,但应该是具有描述性的。示例:
refactor/remove-legacy-code - 工作分支 (work branches):临时分支,可以根据需要命名。示例:
dev/add-new-feature
247



被折叠的 条评论
为什么被折叠?



