将许多文件的更改推送到单独的分支

时间:2016-08-12 08:39:47

标签: git

我们的大三学生开始处理5-6个任务,并且在开始处理之前没有为每个任务创建分支,但刚开始在Master上进行更改。现在,我们已经更改了许多文件(已修改,已删除和新文件),甚至还有十几个文件仍未在Git中。好事他没有做任何提交或推送到远程

有没有办法让我现在可以通过创建多个分支(例如feature-1feature-2,...)并将正确的文件推入其中来使事情正确?所以我会将10个文件推送到feature-1,将25个推送到feature-2,依此类推。

我尝试从当前状态创建一个新分支,但(预计)我刚刚创建的分支包括所有已更改的文件。

另一件事。我们将Git保留在远程仓库中,该仓库尚未与本地仓库同步(初级从未提交或推送到此远程)。我尝试在遥控器上创建一个分支,因为它不包括本地更改,但是当我尝试检查它时,Git抱怨它无法检出,因为它会覆盖几个文件中的更改。

我现在该怎么办?

可以在这里藏匿帮助吗?我从来没有使用它,也没有在切换到另一个回购时隐藏文件。我总是以干净的方式工作 - 先提交,然后结帐另一个回购。

3 个答案:

答案 0 :(得分:2)

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

首先,隐藏你大三的所有工作:

git stash

第二步:

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

git checkout master
git pull origin master
git checkout -b feature1

现在应用藏匿处:

git stash apply

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

git add <path/to/file1>
git add <path/to/file2>
# etc.

现在在feature1上进行提交并将其推送到存储库:

git commit -m 'Junior commit with first set of files'
git push origin feature1

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

git stash

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

如果没有任何东西可以藏匿,那么你已经完成了所有初级学生的工作。

答案 1 :(得分:2)

实施例

我们将一些文件添加到临时区域

.product-container>img:hover

运行

EXCEPTION: Error: Uncaught (in promise): Error: Cannot match any routes: ''

以上说明将隐藏临时区域

中的所有内容

运行git stash list以获取存储日志列表

git add <file1> <file2>

最后,将存储应用于分支

git stash save "<stash message>"

注意: id是一个数字

另外,如果你想对被隐藏的东西有更多的控制权 - 这里有一些你可以传递给stash命令的选项。

git stash list

上述选项git stash branch <branch> stash@{id} 会导致暂存区 藏匿

你还可以做的是

git stash save --keep-index

以上选项--keep-index也会导致未跟踪的文件被隐藏

参考

git-stash

答案 2 :(得分:1)

不要害怕,这很简单直接。

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

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

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对此非常有用,它应该随处可用。)