我想我错过了一些关于GIT分支的基本想法。
假设我已经在我的机器上克隆了一个存储库,并开始工作(在本地“master”上)。
现在有人告诉我生产中的错误。
我想停止我正在做的一切(修改过的提交和未推送的提交),创建一个基于服务器的功能分支,而不是我在本地做的更改,修复bug,提交和推送,然后回到主人,改变并继续工作。
我认为以下内容可行:
$ git clone <some repo>
$ vim text.txt
$ git checkout -b bugFix
问题是分支“bugFix”包括我在master中对其状态所做的更改。
如何创建一个干净的分支?
答案 0 :(得分:3)
最干净的方法是将您当前的工作提交到本地功能分支(保持master处于可释放状态),然后切换到master并在那里制作bugfix(或在基于master的分支上)。
git checkout -b my-feature
git commit -m "add my feature"
git checkout master
git pull --rebase
git checkout -b bugFix
... do some work ...
git checkout my-feature
如果您还没准备好(本地)提交您的工作,您可以使用存储来存储您的更改:
git stash
git fetch
git checkout origin/master
git checkout -b bugFix
... do some work ...
git checkout master
git stash pop
答案 1 :(得分:0)
首先,藏匿你在做什么。
git stash
您的存储库有一个远程跟踪分支,与您最近从原点获得的分支相匹配;切换到那个分支。
git checkout remotes/origin/master
您将处于分离头状态,因为您不希望直接提交到远程跟踪分支。因此,请根据远程跟踪分支创建一个错误修复分支。
git checkout -b bugFix
黑客攻击
答案 2 :(得分:0)
假设遥控器名为'origin',则远程分支称为'production',您当前正在使用master - 您将执行以下操作:
$ git stash # move your current uncommitted stuff out of the way
$ git checkout -b bugFix remotes/origin/production
# now fix the bug, and commit (to your bugFix branch)
$ git push origin production # back to production
$ git checkout master
$ git stash pop
此时,您可以删除本地bugFix分支,如果您愿意,可以使用:
$ git branch -d bugFix
然后你又回到了你开始的地方(以及公司的英雄!)