我的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更改为我的遥控器 - 怎么做?
答案 0 :(得分:1)
在您的第一个命令列表中,您从未提交任何分支,因此您在git status
输出中看到的是当前提交(HEAD
)与工作目录之间的差异。当您使用git checkout
切换分支时,git会尝试避免对工作目录中的未完成更改执行任何操作。另外,由于您在perf_test
创建后没有向master
提交任何内容,perf_test
仍然与master
相同,所以您看到它并不奇怪perf_test
上master
上的结果与touch /path/to/bar.txt
上的结果相同。
我假设您输入了git touch
,而不是bar.txt
,但确定。您对perf_test
进行了更改并将更改提交到master
分支,但随后您将bar.txt
(未更改且未包含更新的perf_test
)推送到起源和heroku。您是否要将本地分支master
推送到远程分支git push origin perf_test:master
?如果是,则语法为heroku
(类似于{{1}})。