试图理解高级git分支

试图理解高级git分支,git,git-branch,git-merge,Git,Git Branch,Git Merge,我尝试使用Git分支来创建主功能,但我经常会弄乱我的Git存储库:/ 我在Stack Overflow上搜索了我试图实现的目标,通常我可以找到如何合并/分支/恢复等,但在我面临的工作流中却找不到,对我来说,这是经常发生的事情 以下是我作为工作流应该做的: 有一个基于master的基础项目 创建一个新分支,并在其上工作(创建/修改、提交、推送) 返回master(或其他分支)并应用一些修改(紧急错误修复) 将这些更改从master合并到我当前的工作分支(以减少冲突问题) 完成后,将我的分支合并到

我尝试使用Git分支来创建主功能,但我经常会弄乱我的Git存储库:/

我在Stack Overflow上搜索了我试图实现的目标,通常我可以找到如何合并/分支/恢复等,但在我面临的工作流中却找不到,对我来说,这是经常发生的事情

以下是我作为工作流应该做的:

  • 有一个基于master的基础项目
  • 创建一个新分支,并在其上工作(创建/修改、提交、推送)
  • 返回master(或其他分支)并应用一些修改(紧急错误修复)
  • 将这些更改从master合并到我当前的工作分支(以减少冲突问题)
  • 完成后,将我的分支合并到master,准备部署
其中一些操作似乎很简单,但中间部分(切换回、掌握、应用更改,然后再转到分支)对我来说似乎不可能:/

我现在的处境是:

(假设项目已经在git上,一些工作已经推给master)

这是我当前假定的工作流程,但我不确定
还原头
是否是一个好的解决方案,当我返回时,Git会更确认这一点,它要求我还原到我必须推动的前一个状态(?!)

有人能帮我澄清我的情况和/或指导我做一个很好(但请非常简单)的解释吗


非常感谢,我真的很感激

git checkout master
应该已经“让您的文件处于master状态”。最常见的失败情况是您有未提交的更改。但是你可以用
git-stash
来处理这个问题。或者只需提交到您的功能分支,您随时可以在以后取消该分支


git revert
旨在取消无法消除的提交(例如,已发布的历史记录),其工作原理是创建额外的提交以撤消其效果。它与Subversion和/或Mercurial命名非常不同,而且不太常用。

git checkout master
应该已经“让您的文件处于master状态”。最常见的失败情况是您有未提交的更改。但是你可以用
git-stash
来处理这个问题。或者只需提交到您的功能分支,您随时可以在以后取消该分支


git revert
旨在取消无法消除的提交(例如,已发布的历史记录),其工作原理是创建额外的提交以撤消其效果。它与Subversion和/或Mercurial命名非常不同,需要的频率要低得多。

这很奇怪,因为它没有更新我的文件(这就是我当时尝试还原的原因)。我需要多检查一下。还有什么遗漏吗?也许签出还不够,我需要一个pull/fetch/something来将文件更新到主状态?这很奇怪,因为它没有更新我的文件(这就是我当时尝试还原的原因)。我需要多检查一下。还有什么遗漏吗?也许签出还不够,我需要一个pull/fetch/something来将文件更新到主状态?
git branch feature
git checkout feature

# do some add/edit, commit, push on that branch

# Now I need to fix a bug in master :
git checkout master
# how can I get my files in the master state ?
# My best guest so far :
git revert HEAD

# do some add/edit, commit, push on master

# Finished to fix the bug, going back to continue my feature :
git checkout feature
# Again, how can I get my files to match the current state of the branch feature ?
git revert HEAD # And git asks me about a revert ? what ? I'm lost :/

# getting the recent changes from master into feature, in order to avoid later conflicts
# This can also be made often if you work with others
git fetch origin
git rebase origin/feature
git rebase origin/master

# do some add/edit, commit, push on master

# And when you have finish, merge feature into master :
git checkout master
git pull origin master
git merge feature
git branch -d feature # if you want to remove it.