Git项目管理

Git项目管理

分区概念:

创建了本地仓库以后,有三个区:

  1. 工作区(workspace)
  2. 暂存区(index)
  3. 本地仓库(repository)
    我们新创建的文件,叫做untracked,
    我们修改了已有的文件,叫做unstaged,
    他们都在工作区里

创建本地仓库

git init

在当前目录中执行git init,你的这个文件夹里就会多出一个.git文件夹,并成为一个本地仓库

查看当前仓库的状态

git status

如果你在一个不是本地仓库的目录里执行这条指令,会报错:

F:\Program Files\Obsidian\Notes>git status

fatal: not a git repository (or any of the parent directories): .git

如果你在一个本地仓库里执行这条指令,那就会显示:

  • 当前仓库的工作区中所有unstaged和untracked
  • 当前仓库的暂存区中所有uncommitted

工作区添加到暂存区

git add

将上述的工作区中的文件,经过add进入到暂存区index,这时候就准备好commit了

git add 后面可以跟文件名,也可以跟目录名

git add filename.subfix

git add . //将当前目录下所有文件都放到暂存区了

暂存区恢复到工作区

git restore

git restore --staged filename.subfix

unstage,将一个文件从暂存区里取出来

工作区提交到本地仓库

git commit

git commit -m "描述"

暂存区的内容,经过commit以后到达本地仓库的当前分支成为一个版本

一次commit,产生一个版本

commit不能提交单个文件,一提交就是将整个暂存区里的东西全部提交了

查看提交日志

log

查看commit记录,对于每一个记录,可以查看其:

  • 提交标识号:每次提交都会有一个极长的字符串作为其标识号
  • Author:提交者
  • Date:提交日期
  • 提交描述:每次commit都必须附带一个对本次提交的decription

options:

--all 显示所有分支

--pretty-oneline 将提交信息显示为一行

--abbrev-commit 使得输出的commitID更简短

--graph 以图的形式显示

当前还没有过任何提交记录

版本回滚

git reset

git reset --hard ID

版本回滚

如果你回滚到以前的某个版本,那么它之后的版本,你再通过git log去查的话就没有了

查看版本变更的所有记录

git reflog

记录了所有的版本变化的记录

git里面只要你提交过就丢不了

分支

每个人的开发互不影响,或者支线与主线互不影响

查看分支

git branch

创建分支

git branch branch_name

创建这个分支是根据当前分支的当前状态来拷贝一个副本

删除分支

git branch -d branch_name

git branch -D branch_name # 强制删除

切换分支

git checkout branch_name

切换这个分支以后,你的所有commit都会作用于当前分支,对另一个分支毫无影响

git checkout -b branch_name

创建并切换

合并分支

git merge branch_name

将branch_name合并到当前分支

冲突解决

当两个分支,他们对同一个文件的同一行有不同修改时,就会confict

这时git会让你来决定这一行的内容到底是什么

HEAD指针

头指针,指向当前的分支

分支使用的一般规范

master

线上分支,发行分支,一般不直接对这个分支进行任何修改

develop

开发分支

feature

每当项目要添加一个新功能时,就从develop创建一个新分支feature_x,然后对这个分支开发,开发好了以后merge到develop

当一个功能开发完了以后,这个功能对应的分支就可以删除了

hotfix

当线上项目发生bug时,就从master创建一个hotfix分支,修改bug,修改好了以后再merge回master,同时也要merge到develop上面

其他常见的分支还有pre,test等

其余分支不同公司有不同要求,不同团队有不同规范

远程仓库

创建SSH公钥(public key)

Gitee和Github上都会让我们给账户设置一个SSH公钥

ssh keygen -t rsa

克隆远程仓库到本地

git clone 远程项目地址 项目在本地的别名

添加远程仓库

首先要把远程仓库和本地仓库建立一个对应关系

git romote add 远程仓库别名 远程仓库地址(SSH或HTTPS)

git remote add origin git@github.com:ztsrxh/RoadBEV.git

99%情况下,一个本地仓库对应一个远程仓库,极少数情况下,一个本地仓库会对应到多个远程仓库

查看远程仓库

查看本地仓库所对应到的所有远程仓库

git remote

之前你git remote add 过的所有远程仓库都会被显示

推送到远程仓库

git push -f --set-upstream 远程仓库别名 本地分支名 :远端分支名

git push origin master

push其实是个merge操作,就是把本地的分支merge到远端分支,那么同样可能产生conflict

--options:

-f:

如果产生conflict,无脑强制用本地覆盖远端

一般公司里会把-f禁用,以免小白把仓库里的代码全覆盖了

--set-upstream:

推送到远端的同时还建立与远端分支的联系,一次执行,永远绑定

git push --set-upstream origin master: master

远端分支名如果跟本地分支一样,那么就可以省略本地分支

查看本地分支和远程分支的对应关系

git branch -vv

抓取

抓取就是将仓库里的更新都抓取到本地,不会进行合并

如果不指定远端名称和分支名,那就抓取全部分支

git fetch remote name branch name

git merge origin/master

拉取

拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge

如果不指定远端名称和分支名,则抓取更新所有分支

git pull

.gitignore

当前项目下有一些文件我们希望git忽视掉,

创建一个叫.gitignore的文件,里面保存你希望忽视的文件格式:

*.a

.gitignore文件一般是项目组统一给一个,不需要自己写

references:

教程视频

https://www.bilibili.com/video/BV1MU4y1Y7h5?spm_id_from=333.788.player.switch\&vd_source=aa5c28fd779dafffc339fb1f6d26c788\&p=7

Git官方文档

https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control

相关推荐
愿天垂怜2 小时前
【C++脚手架】gtest 单元测试库的介绍与使用
linux·服务器·c++·gitee·前端框架·gtest
zhang_adrian3 小时前
【使用Github Copilot自动按规范文档生成全部代码】
人工智能·github·copilot
代钦塔拉5 小时前
Git & GitHub 从入门到精通:全流程实战教程
git·github
阿里嘎多学长5 小时前
2026-05-30 GitHub 热点项目精选
开发语言·程序员·github·代码托管
lauo19 小时前
从FunloomAI到ibbot:当你的手机不再是“手机”,而是你的AI副脑和生产节点
人工智能·智能手机·架构·开源·github
Hommy881 天前
【剪映小助手】贴纸处理接口
网络·开源·github·aigc·剪映小助手·视频剪辑自动化
AIMath~1 天前
向github中上传文件过大超过50M怎么办
网络·git·github
麷飞花1 天前
Github开源协议
github·开源协议
用户887665426631 天前
Git 和 GitHub 入门:从版本控制到团队协作,一篇文章讲清楚
面试·github
pipo1 天前
从“开机全靠猜”到任意位置重定位:我做了一个 ROS 2 3D LiDAR 导航系统
github