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