我们的初级在5-6个任务上工作,在开始工作之前没有为每个任务创建一个分支,而是刚刚开始在Master上进行更改。现在,我们已经更改了几十个文件(修改、删除和新文件),甚至还有十几个还没有在Git中的文件。幸运的是,没有提交或推到远程。
我现在是否可以通过创建多个分支(例如feature-1、feature-2、.)来纠正问题?把正确的文件塞进里面?因此,我会将10个文件推送到feature-1,将25个文件推送到feature-2等等。
我试图从当前状态创建一个新分支,但是(预期的)我刚刚创建的分支包含了所有已更改的文件。
还有一件事。我们保持Git在远程回购,但没有同步与本地回购(初级从来没有提交或推动到这个遥控器)。我尝试在远程上创建一个分支,因为它不包括本地更改,但是当我尝试签出它时,Git抱怨它无法签出,因为它会覆盖在几个文件中所做的更改。
我现在该怎么办?
藏起来能帮上忙吗?我从来没有工作过它,我也从来没有储存文件时,切换到另一个回购。我总是以一种干净的方式工作--首先提交,然后再检查另一个回购。
发布于 2016-08-12 08:47:11
在这里使用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现在,您可以返回到上面的步骤二,创建一个新分支,并继续这组步骤,直到将所有文件更改提交到它们各自的分支。
当没有什么东西可以存放的时候,你已经完成了你的所有初级工作。
发布于 2016-08-12 08:51:04
示例
让我们将一些文件添加到暂存区域
git add <file1> <file2>跑
git stash save "<stash message>"上述指示将把所有东西存放在你的集结区。
运行git隐藏列表以获取存储日志的列表。
git stash list最后,将藏物应用于一个分支。
git stash branch <branch> stash@{id}注: id是一个数字
另外,如果您希望对存储的内容有更多的控制--以下是一些可以传递给stash命令的选项。
git stash save --keep-index以上选项--keep-index将导致暂存区域为而不是存储。
你也能做的是
git stash save --include-untracked上面的选项--include-untracked也会导致未跟踪的文件被存储。
参考文献
发布于 2016-08-12 09:12:57
别害怕,这是简单而直接的。
您甚至不需要使用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对此非常好,而且它应该在任何地方都可以使用。)
https://stackoverflow.com/questions/38913577
复制相似问题