首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个文件上的更改推入不同的分支。

将多个文件上的更改推入不同的分支。
EN

Stack Overflow用户
提问于 2016-08-12 08:39:46
回答 3查看 169关注 0票数 1

我们的初级在5-6个任务上工作,在开始工作之前没有为每个任务创建一个分支,而是刚刚开始在Master上进行更改。现在,我们已经更改了几十个文件(修改、删除和新文件),甚至还有十几个还没有在Git中的文件。幸运的是,没有提交或推到远程

我现在是否可以通过创建多个分支(例如feature-1feature-2、.)来纠正问题?把正确的文件塞进里面?因此,我会将10个文件推送到feature-1,将25个文件推送到feature-2等等。

我试图从当前状态创建一个新分支,但是(预期的)我刚刚创建的分支包含了所有已更改的文件。

还有一件事。我们保持Git在远程回购,但没有同步与本地回购(初级从来没有提交或推动到这个遥控器)。我尝试在远程上创建一个分支,因为它不包括本地更改,但是当我尝试签出它时,Git抱怨它无法签出,因为它会覆盖在几个文件中所做的更改。

我现在该怎么办?

藏起来能帮上忙吗?我从来没有工作过它,我也从来没有储存文件时,切换到另一个回购。我总是以一种干净的方式工作--首先提交,然后再检查另一个回购。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-12 08:47:11

在这里使用git stash将是一个解决方案。

首先,把你的工作都藏起来:

代码语言:javascript
复制
git stash

第二步:

接下来,创建一个包含一组文件的新分支。但是首先,从master分支中提取最新的更改:

代码语言:javascript
复制
git checkout master
git pull origin master
git checkout -b feature1

现在应用藏物:

代码语言:javascript
复制
git stash apply

这将带回所有更改的文件,包括那些您不希望在feature1分支中的文件。通过以下方式添加您想要的所有文件:

代码语言:javascript
复制
git add <path/to/file1>
git add <path/to/file2>
# etc.

现在提交一个feature1并将其推到存储库中:

代码语言:javascript
复制
git commit -m 'Junior commit with first set of files'
git push origin feature1

现在,第一组文件更改在自己的远程分支中是安全的。但是工作目录仍然应该包含其他修改过的文件。再一次,通过以下方式把它们藏起来:

代码语言:javascript
复制
git stash

现在,您可以返回到上面的步骤二,创建一个新分支,并继续这组步骤,直到将所有文件更改提交到它们各自的分支。

当没有什么东西可以存放的时候,你已经完成了你的所有初级工作。

票数 2
EN

Stack Overflow用户

发布于 2016-08-12 08:51:04

示例

让我们将一些文件添加到暂存区域

代码语言:javascript
复制
git add <file1> <file2>

代码语言:javascript
复制
git stash save "<stash message>"

上述指示将把所有东西存放在你的集结区。

运行git隐藏列表以获取存储日志的列表。

代码语言:javascript
复制
git stash list

最后,将藏物应用于一个分支。

代码语言:javascript
复制
git stash branch <branch> stash@{id}

注: id是一个数字

另外,如果您希望对存储的内容有更多的控制--以下是一些可以传递给stash命令的选项。

代码语言:javascript
复制
git stash save --keep-index

以上选项--keep-index将导致暂存区域为而不是存储。

你也能做的是

代码语言:javascript
复制
git stash save --include-untracked

上面的选项--include-untracked也会导致未跟踪的文件被存储。

参考文献

藏匿物

票数 2
EN

Stack Overflow用户

发布于 2016-08-12 09:12:57

别害怕,这是简单而直接的。

您甚至不需要使用git stash,基本的git add . git commit就可以了。诀窍是使用git gui来无痛地添加特定的行/块,而不是整个文件。

如果您从master开始使用各种未提交和未添加的文件,那么:

代码语言:javascript
复制
git checkout -b branch1
git gui
# add all the individual parts you want to have in branch1
git commit

git checkout master
git checkout -b branch2
git gui
# add all the individual parts you want to have in branch2
git commit

诸若此类。(当然,您可以使用git add直接完成行文,但是我发现git gui对此非常好,而且它应该在任何地方都可以使用。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38913577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档