我开始研究一项新功能,经过编码后,我认为这个功能应该在它自己的分支上。
如何将现有的未提交更改移至新分支并重置当前更改?
我想重置当前分支,同时保留新功能的现有工作。
答案 0 :(得分:3286)
使用以下内容:
git checkout -b <new-branch>
这将使您的当前分支保持原样,创建并签出新分支并保留所有更改。然后,您可以使用以下命令进行提交:
git add <files>
并使用以下命令提交到您的新分支:
git commit -m "<Brief description of this commit>"
工作目录中的更改和索引中更改的更改尚不属于任何分支。这会改变这些更改的结束位置。
您没有重置原始分支,它保持不变。 <old-branch>
上的最后一次提交仍然是相同的。因此,您checkout -b
然后提交。
答案 1 :(得分:290)
可替换地:
将当前更改保存到临时存储:
$ git stash
根据此存储创建一个新分支,并切换到新分支:
$ git stash branch <new-branch> stash@{0}
提示:使用Tab键减少键入存储名称。
答案 2 :(得分:40)
如果您在编码时在主分支上进行了提交,但您现在想将这些提交移到另一个分支:
将您当前的历史记录复制到新分支上,同时带来任何未提交的更改:
git checkout -b <new-feature-branch>
现在强迫原作&#34;凌乱&#34;分支回滚:(没有切换到它)
git branch -f <previous-branch> <earlier-commit-id>
例如:
git branch -f master origin/master
或者如果你做了4次提交:
git branch -f master HEAD~4
警告: git branch -f master origin/master
似乎重置该分支的跟踪信息。因此,如果您已将master
分支配置为推送到origin/master
以外的某个位置,则该配置将丢失。
另一种方法是使用this reset technique。但是这些说明将丢弃您拥有的任何未提交的更改。如果你想保留它们,先将它们藏起来并在最后取出它们。
答案 3 :(得分:17)
如果你提交它,你也可以挑选单个提交ID。当我开始在master中工作时,我经常这样做,然后想要在我推送到我的原点之前创建一个本地分支./。
git cherry-pick <commitID>
如here所述,你可以使用樱桃挑选,但这可能是一个用例。
答案 4 :(得分:14)
常见的情况如下:我忘记了为新功能创建新分支,并且在旧功能分支中进行了所有工作。我已经将所有“旧”工作都提交给master分支,并且我希望我的新分支可以从“ master”中成长。我还没有提交新工作。 这是分支结构: “主人”->“旧功能”
git stash
git checkout master
git checkout -b "New_branch"
git stash apply
答案 5 :(得分:1)
实际上,使用GitHub Desktop确实有一种非常简单的方法,因为我以前不相信这是一个功能。
您需要做的就是在GitHub Desktop中切换到新分支,它会提示您将更改保留在当前分支上(将被隐藏),或者将更改随身带到新分支。只需选择第二个选项,即可将更改带到新分支。然后您可以照常提交。
答案 6 :(得分:1)
假设您已经在GitHub上创建了一个新分支,名称为 feature-branch 。
FETCH
git pull --all Pull all remote branches
git branch -a List all branches now
签出并切换到功能分支目录。您可以简单地从上述branch -a命令的输出中复制分支名称
git checkout -b feature-branch
验证
接下来使用git branch命令查看当前分支。它将显示带有*的功能分支
git branch
提交
git add . add all files
git commit -m "Rafactore code or use your message"
在源服务器上进行更新和推送更改
git pull origin feature-branch
git push origin feature-branch
答案 7 :(得分:0)
我用@Robin回答并列出了我所做的所有事情,
library(tidyverse)
game_data %>%
group_by(player) %>%
summarize(allwins = sum(n_wins)) %>%
add_count(allwins) %>%
complete(allwins = 1:max(allwins),
fill = list(n = 0)) %>%
distinct(allwins, Percentage = round(n / length(na.omit(player)) * 100, 2)) %>%
ggplot(aes(x = allwins, y = Percentage)) +
geom_bar(stat = 'identity')
!如果存储库有多个存储库,请查看将哪个存储库应用于新分支:
git status <-- review/list uncommitted changes
git stash <-- stash uncommitted changes
git stash branch <new-branch> stash@{1} <-- create a branch from stash
git add . <-- add local changes
git status <-- review the status; ready to commit
git commit -m "local changes ..." <-- commit the changes
git branch --list <-- see list of branches incl the one created above
git status <-- nothing to commit, working tree (new-branch) is clean
git checkout <old-branch> <-- switch back
并检查单个藏匿处,
git stash list
stash@{0}: WIP on ...
stash@{1}: WIP on ...
或一次检查所有隐藏物:
git stash show stash@{1}
答案 8 :(得分:0)