git工作流程
1、克隆仓库
bash
git clone http://xxxxxxxxxxxx
2、创建新分支
java
git checkout -b new-feature
3、暂存文件
java
git add fileName
git add .
将修改过的文件添加到暂存区
4、提交修改
将暂存区的更改提交到本地仓库
java
git commit -m "add new feature"
5、拉取最新更改
java
git pull origin main
6、推送至远程仓库
java
git push origin new-feature
7、创建PR(pull requrest)
在github或其他平台上创建一个PR,邀请团队成员进行review,将更改合并到主分支
8、合并更改
将主分支的内容合并到本地分支
java
git checkout main
git pull origin main
git merge new-feature
9、删除分支
java
git branch -d new-feature 删除本地分支
git push origin --delete new-feature 删除远程分支
git工作区、暂存区和版本库的概念
- 工作区:在电脑上能看到的目录
- 暂存区:一般在.git目录下的index文件中
- 版本库:.git目录是git版本库
git add: 工作区 --> 暂存区
git commit: 暂存区 --> 版本库,同时master分支做出对应的更新
git reset head: 暂存区的目录树替换为master分支指向的目录树
git checkout: 用暂存区的文件替换工作区的文件,会导致工作区未add的内容丢弃
工作区修改的文件还未被添加到版本控制中
暂存区是一个临时存储区域,包含即将被提交到版本库中的文件快照,在提交之前,可以选择性的将工作区的修改添加到暂存区
java
git add .
git status 查看在暂存区的文件
版本库包含项目的所有版本历史记录
每次提交都会在版本库中创建一个新的快照,这些快照不可变动,确保项目的完整历史记录
版本库分为本地版本库和远程版本库,本地版本库存储在.git目录中,包含所有提交的对象和引用
java
git commit -m "【feat】xxxx" 将暂存区的更改提交到本地版本库
git log 查看提交历史
git diff 查看工作区和暂存区的差异
git diff --cached 查看暂存区和工作区最后一次提交之间的差异
远程仓库 ==> 本地版本库
java
git pull origin branch-name
或
git fetch origin branch-name
git merge origin/branch-name
如何创建git仓库
使用任何一个目录作为git仓库
java
git init
从远程仓库中拷贝项目
java
git clone <repo> <directory>
配置
java
git config --list 显示当前配置
git config -e 编辑配置
git config -e --global 编辑全局配置
git基本操作
提交与修改
- git add : 添加文件到暂存区
- git status: 查看仓库当前状态,显示有变更的文件
- git diff: 比较文件的不同
- git commit: 提交暂存区到本地仓库
- git reset: 回退版本
- git rm:将文件从暂存区和工作区删除
- git mv: 移动或冲命名工作区文件
- git notes: 添加注释
- git checkout: 切换分支
- git switch:更清晰的切换分支
- git restore: 恢复或撤销文件的更改
- git show: 显示git对象的详细信息
提交日志
- git log 查看历史提交记录
- git blame 以列表形式查看指定文件的历史修改记录
- git shortlog:简洁的提交日志
- git describe: 生成一个可读的字符串来描述当前的提交
远程操作
- git remote:远程仓库操作
- git fetch:从远程获取代码库
- git pull:下载远程代码并合并
- git push:上传远程代码并合并
- git submodule:管理包含其他Git仓库的项目
git文件状态
工作区:
- 未跟踪 untracked:新创建的文件,未被git记录
- 已修改 modified:发生了更改,但未被提交到Git记录中
暂存区:
暂存区,也称为索引(index),是一个临时存储区域
java
git add <fileName>
git add .
本地仓库 local repository
在.git目录中的数据库,存储项目的所有提交历史记录,每次提交更改时,会将暂存区的内容保存到本地仓库中
java
git commit -m "commit message"
文件转换流程:
未跟踪 ==> 已跟踪 ==> 已修改 ==> 已暂存 ⇒ 已提交