创建新分支后,git不会推送到远程分支

时间:2016-04-18 18:36:20

标签: git heroku bitbucket

我的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中进行了一些其他更改(这不是故意的 - 我以为我是在掌握但是在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 - 但是当我知道它们不是时,两者都报告它们是uptodate(更改从未被推送到任何远程)。

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

1 个答案:

答案 0 :(得分:1)

  1. 在您的第一个命令列表中,您从未提交任何分支,因此您在git status输出中看到的是当前提交(HEAD)与工作目录之间的差异。当您使用git checkout切换分支时,git会尝试避免对工作目录中的未完成更改执行任何操作。另外,由于您在perf_test创建后没有向master提交任何内容,perf_test仍然与master相同,所以您看到它并不奇怪perf_testmaster上的结果与touch /path/to/bar.txt上的结果相同。

  2. 我假设您输入了git touch,而不是bar.txt,但确定。您对perf_test进行了更改并将更改提交到master分支,但随后您将bar.txt(未更改且未包含更新的perf_test)推送到起源和heroku。您是否要将本地分支master推送到远程分支git push origin perf_test:master?如果是,则语法为heroku(类似于{{1}})。