6

.gitignoreファイルにこれがあります:

/nbproject/
/app/runtime/
/app/runtime/application.log*
/app/runtime/error.log*
/app/config/localdev.php*
.DS_Store

1)マスターブランチにチェックアウトしてから、もう一度チェックアウトして、開発ブランチに戻ります。

2) devブランチに戻ると、すべての/nbproject/ファイルとすべての/app/config/localdev.phpも失われました!!! そしておそらく他のものですが、それらはphpフレームワークupponランタイムによって自動生成されるので、私は本当にわかりません!

3)次に、マスターブランチに戻り、それらのファイルを取得しました。

4)それらのファイルを別の場所にコピーし、再びdevブランチに切り替えました。

5)不足しているファイルを/nbproject/フォルダー内に戻しました。

ここで、マスターブランチに切り替えようとすると、次のようになります。

Error: The following untracked working tree files would be overwritten by checkout:     
    nbproject/private/config.properties      
    nbproject/private/private.properties     
    nbproject/private/private.xml    
    nbproject/project.properties     
    nbproject/project.xml 

    Please move or remove them before you can switch branches.  

    Aborting

私はおそらく、git add .これらのファイルをリポジトリに移動するために実行する必要があることを認識しています。私が理解していないのは、次のとおりです。

gitcheckoutコマンドが発行されるかなり前にnbproject/を無視した場合、gitがこのメッセージをスローするのはなぜですか?

質問:

重要なのは、それらのファイルを無視することです。マスターと開発者の両方。私の質問は次のとおりです。次の目的でこれを修正するにはどうすればよいですか。

a)最初 に:それらのファイル(gitignore上のファイル)をdevに戻しますか?

b)2番目: この競合を再度回避するための手順を実行します。

4

3 に答える 3

8

他のブランチでそれらを追跡できます。または、checkoutコマンドに追加--forceして、マスターが持っているものでファイルをザッピングすることもできます。または、git clean -xdfマスターをチェックアウトする前に、作業ディレクトリからファイルをザップすることができます。

于 2012-08-31T20:24:42.353 に答える
3

問題を解決するための手順。クレジットはjzakmeisterに送られます

1)プロジェクトを別の場所に複製しました。

2)そのクローンのマスターをチェックアウトしました。

3) gitignore を最初からマスターに配置する必要がありました: git show dev:.gitignore > .gitignore

4) git rm "gitignore のすべてのファイルを 1 つずつ" 実行して、ツリーからファイルを削除しました。

5) .gitignore ファイルをリポジトリに追加しました。

6)コミットする

7)元のレポに戻って、次のことを行いました:

8) git fetch /path/to/fix-project master:master

9) git checkout master を取得しました: ブランチ 'master' に切り替えました あなたのブランチは 1 コミット分 'hub/master' より進んでいます。これは私のリモート マスター ブランチです。

10)リモートマスターにプッシュ。

11) dev をもう一度チェックアウトする

于 2012-09-03T11:53:23.993 に答える