2020年末頃から GitHub のデフォルトブランチが「master」から「main」に変更になりました。GitHub をはじめた人がこの変更を知らない人が手順を間違えて「master」に push して放置していることがあります。
これは GitHub でリポジトリ作成すると「main」ブランチがデフォルトになったにもかからわず、手動コマンドで「master」に push してしまうことが多いようです。
「main」と「master」の食い違いは最終的に、ブランチを移動する作業が必要ですが、ここでは割愛します。
今回はデフォルトが「main」ブランチで、「master」ブランチで管理されたソースを pull/checkout してみます。
まずリポジトリをクローンして、プロジェクトフォルダに移動します。
リモートブランチは「master」になっているので、ローカルブランチも「master」にあわせて checkout します。 -b は新しくブランチを作成してくれるオプションです。
これでリモートブランチ「master」からソースもダウンロードされます。
ローカルブランチが「master」ブランチに変わったことを確認します。
また origin を確認するとメインが main でその他 master ブランチも追跡していることがわかります。
あらかじめ Git 管理にあるファイルやディレクトリを .gitignore に追加するには、キャッシュをクリアが必要です。
vi や エディタソフトなどで .gitignore にファイルを追加し、あとはコミットするだけです。
通常 Git でブランチの変更を行うような管理の場合、リモートとブランチ名を指定します。
ただ、一人で開発する場合、大規模でない限りブランチを利用することはあまりないと思うので、
のようにブランチ指定せずに実行もよいかも知れません。
これは、現在のブランチ名がリモートと同じという条件でなりたちます。
現在の状態をデフォルトとする設定をします。
config を確認すると、 push.default が current に設定されます。
これで、ブランチ指定せずに現在の状態で pull、 push できるようになりました。
ただしグループ開発するような時は、省略はしない方がよいでしょう。
git pull や git push できなくなったとき、ブランチの間違いやファイルがコンフリクトしている可能性があります。
git pull は fetch と merge を両方実行しているので、コンフリクトが発生するとエラーになります。
マージを実行するとコンフリクトしています
コンフリクトファイルを修正して、 commit & push します。
-u は --set-upstream の短縮形です。
・git clone が重い
・秘密のファイルを Commit してしまった
など、過去にファイルを Commit & Pull してしまった場合、問題ファイルをなかったことにしたい場合があります。
履歴の削除は「git filter-branch」を利用してできますが、破壊的に履歴変更するため事前バックアップするなど作業は自己責任で行ってください。
git_find_big.sh で大きなオブジェクトを抽出
「git_find_big.sh」は、gitコマンドを用いて「.git/objects/pack/pack」内の容量の多いオブジェクト順で抽出します。
抽出したファイルやディレクトリを削除 (refs/heads/master と refs/remotes/origin/master を書き換え)
※ディレクトリの場合は「git rm -r」
ガベージコレクションを利用して、不要なオブジェクトやログを削除します。
git オブジェクトのリパックします。
共同作業している場合は、clone してもらった方が安全かもしれません。
Gitignore にファイルを記述しても反映されない場合、キャッシュをクリアして commit & push してみる。
ファイル名に「.」を指定して、全ファイルをターゲットにする事もできるが、ちょっと怖いので1ファイルずつ実行した。
会社で、SVN から Git に移行する流れになってきたので、今更ながら Git の基本をメモ。 手当たり次第なので、ところどころ間違いがあるかと思います。
$ mkdir プロジェクト名 $ cd プロジェクト名 $ git init --bare --shared=true $ git --bare update-server-info
これで空のリポジトリが作成と、WebDav経由での公開設定
Titanium Studio の Team で AptanaGit を利用しようとしたが、どうにもこうにも作業コピーできない(?)ので、手動でコマンドすることに。
$ git clone http://サーバ/git/プロジェクト名
TitaniumStudio に戻り Team > Commit を選択
コメントを入れて、Commit したいファイルを、Unstaged Changes から staged Changes に移動して【Commit】
リモート(origin) を選択すると push、SVN で言うリポジトリへの Commit となります。
TitaniumStudio ではコンソール上で赤文字(デフォルト色)で表示されるので、エラーが出たかと勘違いしますが、問題なく push できました。
コマンドだと大体こういう流れになるでしょうか?
$ git add 追加ファイル $ git add . $ git commit -m 'コメント' $ git remote add origin http://リモートサーバ/git/プロジェクト名 $ git push origin master