项目中Git远程提交指南:

  1. 先本地commit

  2. 切换到master分支,pull远程代码

  3. 切换到本地分支,合并master分支到本地分支

  4. 切换到master分支,合并本地分支到master

  5. push

在那个分支上创建新分支的影响与意义

在 Git 中创建新分支时,当前所在的分支会影响新分支的起点。具体来说,新分支会基于当前分支的最新提交(即当前 HEAD)创建。因此,选择在哪个分支上创建新分支会影响新分支包含的历史提交和代码状态。

创建新分支的常见场景

  1. 从主分支创建功能分支

    1. 通常,开发人员会从主分支(如 mainmaster)创建新的功能分支。这确保新分支基于项目的最新稳定代码。

    2. git checkout main git pull origin main git checkout -b feature/new-feature

  1. 从开发分支创建功能分支

    1. 在一些团队中,会有一个开发分支(如 develop),用于集成所有新的功能分支。在这种情况下,新的功能分支通常从 develop 分支创建。

    2. git checkout develop git pull origin develop git checkout -b feature/new-feature

  1. 从其他功能分支创建子功能分支

    1. 有时,为了实现特定的子功能或修复一个特定的问题,开发人员可能需要从当前的功能分支创建新的子功能分支。

    2. git checkout feature/existing-feature git checkout -b feature/sub-feature

总结

  • 起点:新分支的起点是当前分支的最新提交。

  • 目的:选择在哪个分支上创建新的分支取决于新分支的开发目的。一般来说,从主分支创建功能分支是为了确保新分支基于稳定代码;从开发分支创建功能分支是为了快速集成和测试;从现有功能分支创建子功能分支是为了专注于特定的子任务或修复。

无论选择从哪个分支创建新分支,确保目标分支是最新的,避免在过时的分支上创建新分支,确保新分支包含最新的更改和修复。

git入门讲解

参考链接:

Git状态

  Git在执行提交的时候,不是直接将工作区的修改保存到仓库,而是将暂存区域的修改保存到仓库。要提交文件,首先需要把文件加入到暂存区域中。因此,Git管理的文件有三(+2)种状态:

  • 未跟踪(untracked):新添加的文件,或被移除跟踪的文件,未建立跟踪,通过git add添加暂存并建立跟踪。

  • 未修改:从仓库签出的文件默认状态,修改后就是“已修改”状态了。

  • 已修改(modified):文件被修改后的状态。

  • 已暂存(staged):修改、新增的文件添加到暂存区后的状态。

  • 已提交(committed):从暂存区提交到版本库。

  • 工作区:写代码的地方

  • 暂存区:git跟踪的文件,使用git add就可以将一个文件从工作区添加到暂存区

  • 版本库:git commit操作会吧代码暂存到版本库

Git-EUmRb5JOto8QwMxpVVwcC0ugnje.png

Git流程图解

  图:

Git-Vx03big8aofGalxt1u2cYQ8knVb.png

git status:查看分支合并冲突

第一种情况

使用git status后,命令行展示发生冲突的文件,点进去发生冲突的文件查看,git会把发生冲突的部分标出来:

<<<<<<< HEAD

当前分支的代码部分

=======

合并分支的代码部分

>>>>>>> branch-name

而后选择保留自己的版本或者别人分支的版本,也可以选择“Merge”,对发生冲突的部分逐个进行处理选择(IDEA弹窗), 此处可以参考:参考链接

Git-image.png

第二种情况:

在idea左下角点击git,然后选择冲突的文件,点击进行处理。可以进入到上面相同的界面。

意外状况:

突发修复推送

git stash (紧急修bug常用)

git stash命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,把当前工作区、暂存区 未提交的内容“隐藏”起来,就像什么都没发生一样,后续可以在某个分支上恢复出堆栈中的内容。

这也就是说,stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。

git stash作用的范围包括工作区和暂存区,也就是说没有提交的内容(没有commit的部分)都会保存至堆栈中。

常用的相关命令:

  1. git stash save "message":将当前的工作目录和暂存区的修改保存到一个新的 stash 中,并添加一条描述信息。

  2. git stash list:列出当前所有的 stash 列表,显示每个 stash 的索引号、描述信息和修改的文件数量等详细信息。

  3. git stash apply stash@{n}:将最新的 stash 中的修改应用到当前工作目录,但不删除 stash。

  4. git stash pop:将最新的 stash 中的修改应用到当前工作目录,并删除 stash。

  5. git stash drop stash@{n}:删除指定索引号为 n 的 stash。

  6. git stash clear:删除所有的 stash。

问题描述:

我正在product分支开发一个功能时,突然要做一个别的功能的修改并尽快推送到远程git,但是product分支上的新功能还没有开发完,我该怎么做?

在这种情况下,你需要在不影响当前 product 分支开发的前提下,快速进行另一个功能的修改并推送到远程仓库。你可以通过创建一个新的分支来实现这一点。以下是具体步骤:

处理步骤:

1. 保存当前工作状态

首先,确保你在 product 分支上的工作不会丢失。如果你有未提交的更改,可以使用 git stash 保存当前的工作状态。

注意:使用git stashgit commit要好:

  • 避免提交历史混乱

  • 避免紧急修复分支与product分支的合并冲突

git stash

2. 创建并切换到新的分支

从你要基于的分支(例如 mainmaster)创建一个新的分支,用于开发并推送紧急的修改。

git checkout main  # 切换到主分支
git pull origin main  # 拉取最新的远程主分支
git checkout -b hotfix-branch  # 创建并切换到新分支

3. 进行修改并提交

在新的分支上进行所需的修改,然后提交这些修改。

# 进行你的修改
git add .
git commit -m "Quick fix for urgent issue"

4. 推送修改到远程仓库

将新分支推送到远程仓库。

git push origin hotfix-branch

5. 合并到主分支并推送

如果修改需要合并到主分支(例如 mainmaster),你可以创建一个 Pull Request (PR) 或直接在本地合并并推送(如果你有权限的话)。

git checkout main
git pull origin main  # 确保本地的 main 分支是最新的
git merge hotfix-branch  # 合并紧急修改分支
git push origin main  # 推送到远程主分支

6. 返回 product 分支并恢复工作

完成紧急修改后,切换回 product 分支并恢复你之前的工作。

git checkout product
git pull origin product  # 确保本地的 product 分支是最新的
git stash pop  # 恢复之前的工作状态