保留本地分支 先拉去远程master代码

要保留你当前分支(B分支)上的编辑内容,并且将远程仓库中 master 分支的最新代码同步到本地,可以按照以下步骤进行操作:

推荐做法:拉取到 master 分支再合并到 B 分支
  1. 查看本地分支B是否有未提交更改
    • 首先确保当前B分支上有无未提交更改.
      git status
  2. 暂存未提交的更改
    • 如果有未提交的更改,可以使用 git stash 命令来暂存这些更改。
      git stash save "备注"
    • 或者简化命令:
      git stash
  3. 切换到master分支
    • 切换到master分支
      git checkout master
  4. 拉去远程master分支的最新代码
    • 确保你的git配置了正确的远程仓库,通常是origin,然后从远程仓库拉去最新的master分支
      git fetch origin master
  5. 切换回B分支
    • 拉取完master分支后,再次切换回你的B分支.
      git checkout B
  6. 合并master分支到B分支
    • 将 master 分支的最新提交合并到 B 分支。
      git merge origin/master
  7. 解决可能的冲突
    • 如果合并后有冲突,需要手动解决这些冲突
      git add.
      git commit -m '备注'
  8. 恢复B分支暂存的更改
    • 使用 git stash apply 或 git stash pop 来恢复暂存的更改。
      git stash apply
    • 或者简化命令
      git stash pop
    • git stash apply 会恢复暂存的内容,并保留暂存的状态,以便多次恢复。git stash pop 则会恢复暂存的内容,并移除暂存条目。
  9. 解决可能的冲突
    • 如果恢复暂存区内容后有冲突,需要手动解决这些冲突.解决冲突后,继续提交合并的结果
      git add.
      git commit -m '备注'
  • 使用这种方法可以保持分支历史更加清晰,避免不必要的合并提交,且可以更容易地追踪变更历史

Git的基本使用

基本的名词和概念

在 Git 版本控制系统中,有一些基本的名词和概念,它们构成了 Git 工作流程的基础。下面是一些核心概念的简要介绍:

仓库(Repository):存放项目文件和版本信息的地方,可以是本地的也可以是远程的。
工作目录(Working Directory):仓库中的文件被检出到一个目录,这个目录就是工作目录,你可以在这里修改文件。
暂存区(Staging Area):也称为索引,是一个准备下次提交的文件列表,你可以在这里选择哪些更改将被包括在提交中。
提交(Commit):将暂存区的更改永久保存到仓库的版本历史中。
分支(Branch):分支是开发线的起点,你可以创建分支来开发新功能或修复错误,而不会影响主分支。
合并(Merge):将一个分支的更改合并到另一个分支中,通常是将特性分支的更改合并回主分支。
远程仓库(Remote Repository):通常是一个服务器上的仓库,用于多人协作,你可以推送(push)和拉取(pull)更改。
克隆(Clone):从远程仓库复制仓库到本地,包括所有分支和标签。
拉取(Pull):从远程仓库获取最新的更改并合并到你的本地分支。
推送(Push):将你的本地分支的更改发送到远程仓库。
标签(Tag):标记特定的提交,通常用于版本发布。
冲突(Conflict):当两个分支中的相同文件的同一行被修改,合并时 Git 无法自动解决,需要手动解决。
HEAD:指向当前分支的最新提交。
索引(Index):有时与暂存区同义,是准备下一次提交的文件列表。
变基(Rebase):将一系列提交从一个分支上重新应用到另一个分支上,以保持线性的提交历史。

Git常用命令

Git 的命令和操作是 Git 版本控制系统中的核心部分,下面是一些基本的 Git 命令和它们通常的操作步骤:

初始化仓库:

git init

创建一个新的本地 Git 仓库。

检出仓库:

git clone [url]

从一个远程仓库克隆到本地。

查看状态:

git status

查看当前工作目录和暂存区的状态。

添加文件到暂存区:

git add [file]

将文件或更改添加到暂存区,准备下一次提交。

查看差异:

git diff

查看工作目录与暂存区或最后一次提交之间的差异。

提交更改:

git commit -m "commit message"

将暂存区的更改提交到仓库。

查看提交历史:

git log

查看项目的提交历史。

创建分支:

git branch [branch-name]

创建一个新的分支。

切换分支:

git checkout [branch-name]

切换到指定的分支。

合并分支:

git merge [branch-name]

将一个分支的更改合并到当前分支。

拉取远程分支:

git pull

从远程仓库拉取最新更改并自动合并到当前分支。

推送到远程仓库:

git push [remote-name] [branch-name]

将本地分支的更改推送到远程仓库。

查看远程仓库:

git remote -v

查看远程仓库的详细信息。

删除分支:

git branch -d [branch-name]

删除本地分支。

解决冲突:

当合并时出现冲突,Git 会停止合并并让你手动解决。解决后,再次提交。

查看文件更改:

git diff [branch-name]

查看当前分支与另一个分支的差异。

重置更改:

git reset [file]

将文件从暂存区撤销到工作目录。

查看分支图:

git branch --all --graph

以图形方式查看所有分支。

变基分支:

git rebase [branch-name]

将当前分支上的提交重新应用到另一个分支上。

标签管理:

git tag [tag-name]

给当前提交打上标签,通常用于版本发布。

这些命令和操作步骤是 Git 使用中的基础,掌握它们可以帮助你更有效地进行版本控制。

Git 拥有一个庞大的命令集,这些命令覆盖了从基础到高级的多种使用场景。在开始使用 Git 之前,建议您先学习一些基础的版本控制概念。通过不断的实践和探索,您将逐步深入了解 Git 的强大功能。Git 的真正魅力在于它的灵活性和丰富功能,它能够适应各种复杂的开发环境和工作流程。

————————————————

原文链接:https://blog.csdn.net/2301_76884890/article/details/141158307

Git放弃当前编辑区的全部编辑

在 Git 中,若你正在对文件进行编辑且希望放弃所有未提交的更改(即撤销对文件的修改),你可以根据文件的当前状态采取不同的操作。以下是一些常见的方法:

若文件已被添加到暂存区(Staging Area):
如果你已经使用 git add 命令将文件添加到暂存区,但之后决定撤销这些更改,你可以使用 git reset HEAD <文件> 命令。这将从暂存区中移除文件,但文件的更改仍保留在工作目录中。接下来,你可以使用 git checkout — <文件> 或 git restore –source=<文件> –staged –worktree(Git 2.23+ 版本)来完全撤销这些更改。
但更简便的方法是直接使用 git restore –staged –worktree <文件>,该命令会同时撤销暂存区和工作目录中的更改(Git 2.23+)。若你使用的是旧版 Git,则可能需要分别执行 git reset HEAD <文件> 和 git checkout — <文件>。

若文件尚未添加到暂存区:
如果文件更改仍停留在工作目录中,未添加到暂存区,你可以直接使用 git checkout — <文件> 或 git restore –source=<文件> –worktree 来撤销这些更改。
撤销整个工作目录的更改:
如果你想要撤销工作目录中所有文件的更改(即放弃当前编辑区的全部编辑),可以使用 git checkout — . 或 git restore –source=. –worktree(Git 2.23+)。但请注意,这样做会丢失所有未提交的更改,因此请确保你不再需要这些更改。
对于 Git 2.23 及更高版本,推荐使用 git restore 命令,因为它提供了更清晰的选项来区分暂存区和工作目录的更改。

使用储藏(Stash)功能:
如果你想要保留这些更改以便稍后应用,但当前需要撤销它们,可以使用 git stash 命令。这将保存你的更改到一个储藏中,你可以随时使用 git stash pop 或 git stash apply 来重新应用这些更改。
清理工作目录:
在撤销更改后,如果你想要确保工作目录完全干净(即没有任何未跟踪的文件或目录),可以使用 git clean 命令。但请谨慎使用此命令,因为它会删除未跟踪的文件和目录,且通常没有撤销操作。
请记住,在撤销更改之前,最好先使用 git status 命令来查看当前的工作目录和暂存区状态,以确保你了解将要撤销哪些更改。

另外,需要注意的是,git checkout 在 Git 2.23 版本后已被 git switch 和 git restore 命令所部分取代,用于更清晰地管理分支和工作树更改。因此,如果你使用的是较新版本的 Git,建议熟悉并使用这些新命令。但在本回答中,为了兼容性,我仍然提到了 git checkout 命令。