git 创建新分支后没有推送到远程

git not pushing to remote after creating a new branch

我的 git 不知何故搞砸了。问题有两个阶段:

1) 我创建了一个名为 perf_test 的分支,做了一些修改。我想保留新分支中的更改,但恢复到 master 以检查情况如何。在 master 上,我发现 perf_test 上的更改显示在 master 的 git 状态中。

> git checkout -b perf_test
> touch /path/to/foo.txt
> git status
Uncommitted changes
modified /path/to/foo.txt
> git checkout master
> git status
Uncommitted changes
modified /path/to/foo.txt

我不明白为什么切换到 master 后这些更改会出现在 master 中。

2) 然后我撤消了 perf_test 中的所有更改,并继续在 perf_test 中进行了一些其他更改(这不是故意的 - 我以为我在 master 但在 perf_test - 但这并不重要)

> git checkout perf_test
> git rm /path/to/foo.txt
> git status
...clean...
> touch /path/to/bar.txt
> git commit -am "changed bar.txt"
...committed...
> git branch
...
*perf_test
...
> git checkout master
> git push origin master
Everything up-to-date
> git push heroku master
Everything up-to-date

我希望对 bar.txt 的更改必须推送到 origin 和 heroku - 但当我知道它们不是时,它们都报告说它们是最新的(更改从未推送到任何一个远程) .

我想将 bar.txt 更改推送到我的遥控器 - 怎么做?

  1. 在您的第一个命令列表中,您从未提交过任何分支,因此您在 git status 输出中看到的是当前提交 (HEAD) 之间的差异和工作目录。当您使用 git checkout 切换分支时,git 试图避免对工作目录中的未完成更改做任何事情。另外,由于您在从 master 创建 perf_test 后没有向 perf_test 提交任何内容,因此 perf_test 仍然与 master 相同,因此您会看到在 perf_test 上的结果与在 master 上的结果相同。

  2. 我假设您输入的是 touch /path/to/bar.txt,而不是 git touch,但没问题。您对 bar.txt 进行了更改并将该更改提交到 perf_test 分支,但随后您将 master(未更改且不包含更新后的 bar.txt)推送到起源和英雄。您想将本地分支 perf_test 推送到远程分支 master 吗?如果是,则语法为 git push origin perf_test:masterheroku 也类似)。