我们的大三学生开始处理5-6个任务,并且在开始处理之前没有为每个任务创建分支,但刚开始在Master
上进行更改。现在,我们已经更改了许多文件(已修改,已删除和新文件),甚至还有十几个文件仍未在Git中。好事他没有做任何提交或推送到远程。
有没有办法让我现在可以通过创建多个分支(例如feature-1
,feature-2
,...)并将正确的文件推入其中来使事情正确?所以我会将10个文件推送到feature-1
,将25个推送到feature-2
,依此类推。
我尝试从当前状态创建一个新分支,但(预计)我刚刚创建的分支包括所有已更改的文件。
另一件事。我们将Git保留在远程仓库中,该仓库尚未与本地仓库同步(初级从未提交或推送到此远程)。我尝试在遥控器上创建一个分支,因为它不包括本地更改,但是当我尝试检查它时,Git抱怨它无法检出,因为它会覆盖几个文件中的更改。
我现在该怎么办?
可以在这里藏匿帮助吗?我从来没有使用它,也没有在切换到另一个回购时隐藏文件。我总是以干净的方式工作 - 先提交,然后结帐另一个回购。
答案 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
也会导致未跟踪的文件被隐藏
答案 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
对此非常有用,它应该随处可用。)