2016-12-14 11 views
1

私はまあ、GITの方法を忘れていました。私のブランチからすべての未追跡のファイルを削除した唯一の方法は、再度リポジトリをクローンすることでした。マスターブランチで完全にきれいなレポをした後、私は新しいブランチを作成し始めました...GIT:マスターから見えるブランチからの変更

...しかし、おそらく私はGITの方法を忘れていました。

私はそのブランチ上のスクリプトでいくつかの変更を行った後、次に

git checkout HEAD~1 -b personal/$USER/featureX2 

git pull origin master 

でブランチを作成し、日食でそれらを保存しています(そして、uが赤いフォントでGitの状況で何を参照してくださいコミットするために追加する必要があります)、私はコミットせずにマスターに戻ってチェックアウトすることはできません。しかし...

私は問題なしでチェックアウトします。さらに、保存されていない変更もmasterブランチ上にあります。

私は間違っていますか?あるいは、私の変更を犯すことなく別の支店にチェックアウトすることができないようにすべきですか?

+0

「ブランチに保存する」とはどういう意味ですか? – choroba

+0

私はそれを編集しました – Elcardia

+0

マスターが持っていないコミットでブランチのファイルを変更した場合、マスターは新しいバージョンのファイルが競合するため、切り替えが許可されません。あなたの変更されたファイルがマスタの最新バージョンよりも先にある場合、あなたは切り替えることができます。これはおそらくhttp://stackoverflow.com/questions/8526279/git-allows-for-branch-change-with-unstaged-changesの複製です。 – afxentios

答えて

0

ここで期待どおりの動作をしています。 GitはUntrackedファイル(赤いフォント...)を追跡しません。だから、masterをチェックアウトしようとすると、同じファイル/行(競合)が変更された可能性があるので、これを防ぎます。

そしてをone branch to anotherから実行すると、未追跡のファイルも一緒になります。

commit変更するか、save一時停止したファイル(stash)です。変更はほとんどの時間をコミットしていないときに実際に別のブランチからチェックアウトする

$ git checkout branch-1 
# do some changes here 

$ git add . 
$ git stash save 'my-temporary-change' # stash -> save the changes in temporary box 
# now untracked files are gone and save to stash stack 

$ git checkout master 

# if you need to take the temporary changes, just by 'stash pop' you can get them back in any branch 
$ git stash list  # see all stash stack list 
$ git stash pop  # pop the last one from stash stack, pop = apply + drop 
0

は、競合が存在してもよいことを除いて、許可されています。
これを実行した場合、作業ディレクトリが正常ではないため、すべてのブランチでその変更が確認できます。
ブランチにコミットすると、そのブランチの変更が表示されます〜

関連する問題