2011-01-06 22 views
4

gitを使用する際の正確な手順は何ですか?私は私の手順を与える(これは、何らかの形で、非常にスムーズに動作していない)になります。GITと無視されたファイルをプッシュ

- cloned a repository: (works fine) 
- added settings files to .gitignore to prevent overwriting the originial 
    settingfiles on the remote (= test environment) 
- made changes to my local repository and committed it locally (works fine) 
- pushed it from local to remote (did not work properly) 

私のテストenvirnmentが死ぬことを引き起こしリモコンのsettingfilesが削除され、リモートにプッシュします。プッシュして削除しないと、設定ファイルが無視されるだけです。

私は何が間違っていたか/忘れましたか?何か案は?

答えて

3

私が理解しているところから、設定ファイルはクローン作成したgit repoで既に追跡されていました。つまり、それを.gitignoreに追加しても、それは引き続き追跡されます。

履歴からファイルを削除し、それが将来的に無視されますことを確認するために、あなたは

  • (既に行ったように).gitignoreに追加する必要があり、実行git filter-branch --index-filter 'git rm --cached --ignore-unmatch settingsfile' HEAD

ファイルが存在する各ブランチに対して上記のコマンドを実行する必要があることに注意してください。追加情報についてはthis guideを参照することができます

masterは、支店名、およびoriginリモートの名前である場合)

あなたはgit push -f origin masterする必要があります。

また、Rafid K. Abdullahによると、あなたは何も削除していない(あなたの記事で説明したワークフローに従えば)。簡単に元に戻すことができる変更を追加しました。結局のところgitはそうです:)

0

.gitignoreファイルに設定ファイルを追加せず、代わりにgit stashという設定ファイルに変更を保存しますか?&プルを通常どおりプッシュします。設定が完了したら、git stash applyで設定ファイルを復元します。

2

あなたが話している設定ファイルは、.gitフォルダーではなく設定です。私が正しく理解していれば、それらを.gitignoreに追加するのは必ずしも機能しません.gitignoreが行うことは、 'git commit -a'、 'git diff'などですが、ローカルリポジトリに既に持っている場合は、とにかくリモートサーバにプッシュされます。

あなたがしたのはコミットを増やしているので、リモートサーバー上の設定ファイルが失われたとは思わないので、履歴に設定ファイルを見つける必要があります。

とにかく、残念ながら、SVNとは異なり、GITを使用するためのいくつかの手順を覚えていれば、間違いが発生します。私は初めに多くの間違いを犯し、それについての本を読まなければならないことを認めました。しかし、まず、その概念を理解したかったのは、時には「元のマスター」と「起源/マスター」の違いなど、時にはトラブルを起こすためです。この非常に有用なページが見つかりました。

http://www.eecs.harvard.edu/~cduan/technical/git/

をそして私はまた、この非常に興味深い本を見つけました:それを読む

http://progit.org/book/

あなただけの基本を読んで、分岐importantly- - ほとんど、それをすべて読む必要はありません。 。

希望に役立ちます。

関連する問題