将未提交的更改传输到新的 Git 分支

将未提交的更改传输到新的 Git 分支
将未提交的更改传输到新的 Git 分支

为你未完成的工作设立一个新分支

在开发新功能时,通常会意识到更改应该隔离在自己的分支中。这可以实现更好的组织和并行开发。如果您已经开始开发一项新功能并中途决定将其驻留在单独的分支中,Git 提供了一种简单的方法来传输这些未提交的更改。

在本文中,我们将指导您完成将现有的、未提交的工作转移到新分支的过程。此外,您将学习如何重置当前分支而不丢失任何进度。这可确保您的工作流程保持干净和高效。

命令 描述
git checkout -b <branch-name> 创建一个新分支并切换到它。
git add . 将所有未提交的更改暂存在工作目录中。
git commit -m "message" 使用描述性消息提交分阶段更改。
git checkout - 切换回之前签出的分支。
git reset --hard HEAD~1 将当前分支重置为上一个提交,放弃更改。
#!/bin/bash 指定脚本应在 bash shell 中运行。

了解管理未提交工作的 Git 工作流程

在第一个脚本示例中,我们使用一系列 Git 命令手动将未提交的更改移动到新分支。该过程开始于 git checkout -b new-feature-branch,它创建一个名为“new-feature-branch”的新分支并切换到它。这对于将新功能的工作与主分支隔离至关重要。接下来,我们暂存所有未提交的更改 git add .。此命令确保所有修改的文件和新文件都已准备好提交。在此之后, git commit -m "Move uncommitted work to new feature branch" 命令将这些更改提交到新分支,并带有一条解释操作的消息。

确保新分支中的更改安全后,我们返回到原始分支 git checkout original-branch。要将原始分支重置为之前的状态,我们使用 git reset --hard HEAD~1。此命令强制将分支重置为之前的提交,并放弃此后所做的任何更改。这一系列命令确保新功能的工作保留在其自己的分支中,同时原始分支重置为干净状态。

使用 Shell 脚本自动化该过程

第二个脚本示例使用 shell 脚本自动执行此过程。该脚本首先检查是否已提供新的分支名称 if [ -z "$1" ]; then,如果未给出名称,则退出脚本。变量 NEW_BRANCH=$1 将提供的分支名称分配给变量。然后该脚本创建并切换到这个新分支 git checkout -b $NEW_BRANCH。所有未提交的更改均使用 git add .,并承诺 git commit -m "Move uncommitted work to $NEW_BRANCH"

提交更改后,脚本使用以下命令切换回上一个分支 git checkout -。最终命令 git reset --hard HEAD~1 将原始分支重置为之前的提交,确保它是干净的并且没有移动到新分支的更改。此 shell 脚本提供了一种便捷的方法来自动执行将未提交的工作移动到新分支并重置当前分支的过程,从而更轻松地在 Git 中管理工作流程。

将未提交的更改移至 Git 中的新分支

使用 Git 命令行

# Step 1: Create a new branch and switch to it
git checkout -b new-feature-branch

# Step 2: Stage all uncommitted changes
git add .

# Step 3: Commit the staged changes
git commit -m "Move uncommitted work to new feature branch"

# Step 4: Switch back to the original branch
git checkout original-branch

# Step 5: Reset the original branch to the previous commit
git reset --hard HEAD~1

将工作转移到新分支,同时保持进度

使用 Shell 脚本实现自动化

#!/bin/bash

# Check if the user provided a branch name
if [ -z "$1" ]; then
  echo "Usage: $0 <new-branch-name>"
  exit 1
fi

NEW_BRANCH=$1

# Create and switch to the new branch
git checkout -b $NEW_BRANCH

# Stage all uncommitted changes
git add .

# Commit the changes
git commit -m "Move uncommitted work to $NEW_BRANCH"

# Switch back to the original branch
git checkout -

# Reset the original branch
git reset --hard HEAD~1

在 Git 中创建和管理功能分支

使用 Git 时,保持工作流程井然有序非常重要,尤其是在开发新功能时。一种最佳实践是使用功能分支。功能分支允许您独立于主代码库来处理新功能。这种隔离有助于防止未完成或不稳定的代码影响主分支。要创建功能分支,请使用命令 git checkout -b feature-branch。这不仅会创建分支,还会将您切换到该分支,确保任何新工作都在正确的上下文中完成。

创建功能分支后,您可以在不影响主分支的情况下处理新功能。这在多个开发人员同时处理不同功能的协作环境中特别有用。当您的功能完成并经过彻底测试后,您可以使用以下命令将其合并回主分支 git merge feature-branch。这样,主分支只包含稳定且完整的代码。如果您需要使用主分支的最新更改来更新功能分支,您可以使用 git rebase main 在您的功能分支上,确保它是最新的。

有关 Git 分支管理的常见问题

  1. 什么是功能分支?
  2. 功能分支是为独立于主代码库开发新功能而创建的单独分支。
  3. 如何在 Git 中创建新分支?
  4. 您可以使用创建一个新分支 git checkout -b branch-name
  5. 如何在 Git 中的分支之间切换?
  6. 使用 git checkout branch-name 切换到现有分支。
  7. 如何将功能分支合并回主分支?
  8. 要合并功能分支,请切换到主分支并使用 git merge feature-branch
  9. 如何使用主分支的最新更改来更新我的功能分支?
  10. 在功能分支上时,使用 git rebase main 以纳入最新的更改。
  11. 合并后如果想删除分支怎么办?
  12. 您可以使用删除分支 19 号
  13. 如何列出存储库中的所有分支?
  14. 使用 git branch 列出所有分支。
  15. 我可以重命名 Git 中的分支吗?
  16. 是的,使用 git branch -m old-name new-name 重命名分支。
  17. 如何查看我当前所在的分支?
  18. 使用 22 号 或者 git branch 查看当前分支。
  19. 如果我尝试合并有冲突的分支会发生什么?
  20. Git 会在完成合并之前提示您解决冲突。使用 git status 查看有冲突的文件并进行相应的编辑。

最后的想法:

将未提交的工作转移到 Git 中的新分支是维护有组织且干净的开发工作流程的宝贵技术。通过使用提供的命令和脚本,您可以轻松地为您的功能创建新分支、提交更改并重置当前分支。这种方法不仅可以保留您的进度,还可以使您的主分支保持稳定并且没有不完整的功能。采用这些实践将提高您的工作效率并促进团队成员之间更好的协作。