2016-04-18 17 views
1

私のgitはどうにかうんざりしてしまいました。問題には2つの段階があります。gitが新しいブランチを作成した後にリモートに移動しない

1)perf_testというブランチを作成して変更を加えました。私は新しいブランチに変更を残したかったのですが、どのようになっているかを確認するためにマスターに戻しました。マスターでは、masterのgit statusでperf_testの変更が表示されていました。

> 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 

マスターに切り替えた後にこれらの変更がマスターに表示される理由はわかりません。

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への変更を起点と英雄にプッシュする必要があると思いますが、どちらも、変更されていないことがわかっていれば、彼らは増強されていると報告しています。

bar.txtの変更を自分のリモコンにプッシュしたいのですが、どうすればいいですか?コマンドの最初のリストで

答えて

1
  1. は、あなたが現在との違いは、(HEAD)をコミットgit status出力にして見て、作業ディレクトリたので、何を、どのブランチにコミットすることはありません。 git checkoutでブランチを切り替えると、gitは作業ディレクトリの未処理の変更に対して何もしないように試みます。さらにmasterからperf_testを作成した後は、perf_testに何もコミットしていなかったので、perf_testはまだmasterと同じですので、perf_testの場合はmasterと同じ結果が表示されることは驚くことではありません。

  2. touch /path/to/bar.txtと入力したとします.git touchではなくOKです。 bar.txtに変更し、その変更をperf_testブランチにコミットしましたが、master(変更されておらず、更新されたbar.txtが含まれていません)を起点とherokuにプッシュしました。ローカルブランチperf_testをリモートブランチmasterにプッシュしますか?その場合、構文はgit push origin perf_test:master(同様にheroku)です。

+0

これは1で表示されます。はい、それは触っていましたが、git touchではなく修正されます。そしてそれは役に立ちます - 私がしたいのは、perf_testのbar.txtへの変更をマスターにマージし、マスターをコミットし、マスターからプッシュすることです。私はそれが説明されているように仕事をshdすると思います。ありがとう! – Anand

+0

その場合、 'git checkout master'行の後ろに' git merge perf_test'があります。 'git merge'コマンドはマージ競合がない限り、あなたのためにマージコミットを作成するので、それ以降はマスターにコミットする必要はありません。 – kini

+0

ありがとう、それは非常に便利でした! – Anand

関連する問題