git的使用
##过程 过程修改文件 → 查看状态 → 暂存 → 提交 → 推送到远程仓库
1.创建或则获取项目
- 创建本地git仓库 cd 项目目录 初始化: git init 这个会创建一个隐藏的.git 文件夹,用来保存版本信息。
- 克隆远程仓库 git clone https://github.com/用户名/仓库名.git 进入项目: cd 仓库名
2.查看当前状态
git status它可以告诉你:
- 哪些文件被修改了
- 哪些文件还没有被 Git 跟踪
- 哪些文件已经进入暂存区
- 当前所在分支
3.提交文件
- 查看修改内容:
git diff- 添加到暂存区 添加到暂存区 单个文件:git add 文件名 全部修改: git add .
- 提交 git commit -m “提交内容”
4.查看提交记录
git log简洁查看:
git log --online查看最近n次提交:
git log --online -n5.分支操作
- 查看分支:
git branch- 创建新分支:
git branch dec- 切换分支:
git switch dev- 创建并切换到新分支:
git switch -c feature-login- 切回主分支:
git switch main- 合并分支:
git switch maingit merge feature-login- 删除本地分支:
git branch -d feature-login6.远程仓库操作
1. 查看远程仓库:git remote -v2. 添加远程仓库:git remote add origin https://github.com/用户名/仓库名.git3. 第一次推送:git push -u origin main4. 之后推送:git push5. 拉取远程更新:git pullgit pull == git fetch ;git merge6. 只下载远程更新,不立即合并:git fetch7.撤销操作
1. 撤销工作区文件修改未执行git add 前:git restore 文件名撤销所有git restore .2. 从暂存区移除文件文件内容不变,只是不再暂存:git restore --staged 文件名3. 修改最近一次提交信息git commit --amend -m "新的提交内容"4. 回退到某一次提交擦看提交编号:git log --online保留修改,只撤销提交记录:git reset --soft 提交编号撤销提交并保留文件修改,但取消暂存git reset --mixed 提交编号彻底删除之后的修改:git reset --hard 提交编号--hard 可能导致数据丢失,使用前要谨慎8..gitignore 文件
创建.gitignore 用来告诉 Git 哪些文件不要提交。
9. 使用流程
创建项目、提交代码、推送到远程仓库、分支开发、合并代码
- 添加远程仓库 ···bash git remote add origin https://github.com/用户名/my-project.git 检查是否添加成功: git remote -v
- 远程仓库的第一次推送
git push -u origin mainorigin:远程仓库的名称。main: 本地分支名称。-u :建立本地分支与远程分支的关联之后再推送时直接执行git push10.使用分支开发功能
因为不建议直接在main分支上开发新功能,通常为每个功能创建单独分支
- 从最新主分支创建功能分支
git switch maingit pull --rebase //这里可能出现1本地 main 没有额外提交2 本地 main 有未推送的提交(改写本地历史。)3本地的提交已经推送,并且别人基于它开发(就可能导致其他人的历史和远程历史冲突。)这是需要小心的情况。(git pull --rebase如果本地和远程都各自有提交,会把你的本地提交重新放到远程最新提交之后)git switch -c feature-loginfeature-xxx 新功能fix-xxx 一般问题修复bugfix-xxx Bug 修复hotfix-xxx 紧急修复refactor-xxx 重构docs-xxx 文档修改11.1 -rebase会导致的历史冲突
分类:1. 分支历史分叉(两个分支各自有提交,Git 不知道应该怎么拼接。) 2. 代码内容冲突(两个提交修改了同一个文件的同一部分,Git 无法自动决定保留哪边。)
- 查看与解决:
git statusgit diff- 打开文件并解决冲突:保留一方或者把两边内容合并
- 标记冲突已经解决
git add 文件1 文件2git status- 继续rebase
git rebase --continue或者直接不想继续,直接取消
git rebase --abort11.2 普通git pull冲突
查看问题git status修复好后git add 文件git commit如果想取消git merge --abort