- 投稿日:2021-01-22T23:24:31+09:00
Gitのコミットメッセージに迷った時にみるチート
シンプルにこのチートから選ぶといい
https://www.tam-tam.co.jp/tipsnote/program/post16686.html基本は、Railsチュートリアルのこの箇所
https://railstutorial.jp/chapters/beginning?version=6.0#code-default_root_routeRailsチュートリアルコミットメッセージは現在形かつ命令形で書くようにしましょう29 。 Gitのモデルは、(単一のパッチではなく)一連のパッチとしてコミットされます。 そのため、コミットメッセージを書くときには、そのコミットが「何をしたのか」と過去形の履歴スタイルで書くよりも「何をする」ためのものなのかを現在形かつ命令形で書く方が、後から見返したときにわかりやすくなります。 さらに、現在形かつ命令形で書いておけば、Gitコマンド自身によって生成されるコミットメッセージとも時制が整合します。詳しくは『開発基礎編 Git』の 「Gitにコミットするとは」をご覧ください。
- 投稿日:2021-01-22T22:25:14+09:00
fatal: ambiguous argument 'HEAD^': unknown revision or path not in the working tree.
事象 : 2つめのコミットをリセットしようとしたら失敗した
# 1. プシュっていないコミットが2つあって、2つともコミットを取り消したい $ git log origin/master..master Merge: 45... 89... Author: macOS <ponsuke@example.com> Date: Fri Jan 22 21:26:17 2021 +0900 Merge branch 'master' of https://github.com/{ユーザ}/{リポジトリ} into master commit 45... Author: macOS <ponsuke@example.com> Date: Fri Jan 22 20:35:04 2021 +0900 こみっとこめんと # 2. 1つ取り消して・・・ $ git reset --soft HEAD^ # 3. もう1つも取り消そうとしたら $ git log origin/master..master commit 45... (HEAD -> master) Author: macOS <ponsuke@example.com> Date: Fri Jan 22 20:35:04 2021 +0900 こみっとこめんと # 4. 怒られた $ git reset --soft HEAD^ fatal: ambiguous argument 'HEAD^': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]'原因 : HEAD^のってどれのことやねん!という状態
「えっ?一個前のコミット・・・」
# HEADを確認したら・・・ $ git reflog 45ea498 (HEAD -> master) HEAD@{0}: reset: moving to HEAD^ d5f1e7f HEAD@{1}: pull --allow-unrelated-histories: Merge made by the 'recursive' strategy. 45ea498 (HEAD -> master) HEAD@{2}: commit (initial): こみっとこめんと対応 : HEADを使わないでどこまでリセットしたいかちゃんと伝える
# 1. originまで戻してね $ git reset --soft origin/master # 2. プシュしてないコミットは無くなりました。 $ git log origin/master..master $複数のコミットはいっきに取り消しましょう、面倒です。
コミットを指定するときに、~(チルダ)と^(キャレット)を使ってあるコミットからの相対位置で指定することもできます。この時に、よく使われるのがHEADです。~(チルダ)を後ろに付け加えることで何世代前の親かを指定することができます。^(キャレット)は、ブランチのマージで親が複数ある場合に、何番目の親かを指定することができます。
ブランチの切り替え|サル先生のGit入門【プロジェクト管理ツールBacklog】
- 投稿日:2021-01-22T21:32:16+09:00
fatal: refusing to merge unrelated histories
事象 : マージコミットの発生するプルで怒られた
- プルを忘れて
- ローカルを変更してコミットして
- プッシュして怒られたから
- プルったらエラー
# プルったらエラー $ git pull fatal: refusing to merge unrelated histories # プルの挙動はマージする $ git config pull.rebase false原因 : オプションなしに無関係なブランチはマージできないから
「--allow-unrelated-histories」について
ちゃんと調べてみたところ
Git 2.9から mergeコマンドとpullコマンドでは,--allow-unrelated-historiesを指定しない限り,無関係なヒストリを持つ2つのブランチをマージすることはできなくなった。
とありました。
初めてGitHubリポジトリにpushしたらrejectedエラーになったときの対応メモ - Qiita対応 : --allow-unrelated-historiesオプションをつけてプルる
# めでたくマージコミットつきプル $ git pull --allow-unrelated-histories Merge made by the 'recursive' strategy. eclipse/MyPreferences.epf | 605 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 605 insertions(+) create mode 100644 eclipse/MyPreferences.epf
- 投稿日:2021-01-22T21:08:45+09:00
warning: Pulling without specifying how to reconcile divergent branches is discouraged.
事象 : プルったらなんか警告された
- 環境
- macOS Big Sur バージョン11.1
- git version 2.28.0
$ git pull warning: Pulling without specifying how to reconcile divergent branches is discouraged. You can squelch this message by running one of the following commands sometime before your next pull: git config pull.rebase false # merge (the default strategy) git config pull.rebase true # rebase git config pull.ff only # fast-forward only You can replace "git config" with "git config --global" to set a default preference for all repositories. You can also pass --rebase, --no-rebase, or --ff-only on the command line to override the configured default per invocation.原因 : リモートに変更があってプルったときにどうするか決めていないから
git pull
を実行したとき、Git はまずgit fetch
を実行し、そのあとに current branch に対して 事前にgit fetch
で取得したヘッドをマージするようにgit merge
を実行します。このとき、Git の設定ファイルの中で
pull.rebase
がtrue
もしくはfalse
と明示的に設定されているか、 実行時に--rebase
などのオプションが指定されていれば、リモートブランチとの差があったときにはそれらに従って差分が解決されます。
Git 2.27.0 から git pull をすると表示されるようになった "Pulling without specifying how to reconcile divergent branches is discouraged." について - esm アジャイル事業部 開発者ブログ対応 : 提示された選択肢から好きなのを選ぶ
選択肢 意味 git config pull.rebase false
fast-forwardする。できなかったらマージしてコミットを作る(プッシュは自分でする)。 git config pull.rebase true
rebaseする git config pull.ff only
fast-forwardする。できなかったらエラーにする。 fast-forwardって何?って時はBacklogさるがわかりやすいです。
このbugfixブランチをmasterブランチにマージする時、masterブランチの状態が以前から変更されていなければ、非常に簡単にマージを行うことができます。 bugfixブランチの履歴はmasterブランチの履歴をすべて含んでいるため、masterブランチは単純に移動するだけでbugfixブランチの内容を取り込むことができます。なお、このようなマージをfast-forward(早送り)マージと呼びます 。
ブランチの統合|サル先生のGit入門【プロジェクト管理ツールBacklog】# リポジトリごとにやるのは面倒くさいのでGlobalで好みを設定した $ git config --global pull.rebase false
- 投稿日:2021-01-22T19:44:45+09:00
【git初心者】gitでやらかした時の対応まとめ
初心者なのでgitでやらかすことが多いです。
やらかした時の対応をよくやるレベル・ケース別にまとめました。よくやるレベル1:けっこう頻繁にやるやつ
頻繁にやらかすので割と慣れてきた感のある対応です。
ケース1:間違えてgit addしてしまった
git reset HEAD .複数ファイルあるうち特定ファイルのステージング(add)のみ取り消したい場合は、カレントのところをパスにする
ちなみにHEADは最新のコミットハッシュのエイリアス
git push origin HEAD とかするけど最新のHEADをプッシュすることだったんですねケース2:間違えてgit commitしてしまった
大体addと共に歴史から抹消したいので下記を使う
git reset HEAD .あれ、ケース1と同じじゃん、と思いますが、同じです
コミットしたもののうち特定のファイルのaddだけ取り消す、等の場合はオプション指定で場合分けをするみたいです(やったことない)ケース3:git commitする内容を間違えた
git commit --amend現在のワーキングツリーの内容を上書きします
ケース4:間違えてgit pushしてしまった
まずはローカルのインデックスの状態をHEADに戻し、その状態をプッシュする
プッシュする際はエラー回避のためオプションをつけるgit reset --hard HEAD git push -f origin HEADよくやる、と言いつつ、ケース4についてはまだ1度も対処を実践できていない、、
よくやるレベル2:たまにやらかして少しひるむやつ
これを乗り越えて少しずつgitに慣れてきました。
(乗り越えられなくて数時間分の作業が消えたこともあった)ケース1:ブランチを間違えてプッシュしてしまった
正しいブランチに作業した内容を反映したい、ローカルブランチでのコミットまでは正しいブランチで作業している想定
間違えてプッシュした先の修正は不要なパターン//push先を指定 git branch --set-upstream-to=origin/feature/fix_deprecation git pushケース2:プッシュしたらファイルのサイズが大きくエラーになってしまった、さらにそれに気付かないままローカルで作業を行っていた
もう一度コミットからやり直す必要があるけど、ローカルで行っていた作業が含まれない状態でのコミットが必要、プッシュまで終わったらローカルで行っていた作業を元に戻してそれもプッシュしたい、と言う状況です
作業の流れとしては下記で最初考えていたけど
1.今のワーキングツリーを退避:git stash 2.リポジトリの巻き戻し:git reset --soft HEAD^ 3.git reset HEAD サイズが大きいファイルのパス 4.該当ファイルを.gitignoreに記載 <-記載するとファイルがコミット対象ではなくなるが実は不要な手順 5.再びコミット 6.再びプッシュ 7.退避したスタッシュを適用:git stash apply 8.再びコミット 9.再びプッシュ4.は不要、理由は3.でそもそもステージングから外しているから
もし4.を実施した場合、6.までは上手くいくけど、7.でスタッシュを元に戻すときに.gitignoreの状態が違うことで競合してしまいエラーになります。
また、8.を行う前にaddが必要か悩んだけど、git stash applyを行うとadd済みの状態になるため不要なのがポイントよくやるレベル3:滅多に起こらない災害レベル(人災)
ケース1:gitの挙動が何もかもおかしい
何しても、何もしなくても、git関連の挙動が全て通常では考えられない状態になったことがありました
謂わゆる「リポジトリが壊れた」状態だと思うのですが、壊れるのには理由がある、、
ということで起こった事象の整理から原因の調査、その結果行った対応までまとめたのが下記になりますhttps://qiita.com/mby/items/80a79b3a65e28d1c782c
本当にこの時はgit扱うの無理だと思った(原因gitじゃなかった)
- 投稿日:2021-01-22T17:27:59+09:00
gitもろもろめも
イントロダクション
メモしておきたいことを適当に羅列しております、、、
大変自己中かつ素人の記事ですので、暖かくみていただきたい!
何か間違いがありましたらぜひコメントください!git init
ローカルリポジトリ作成
リモートブランチ取得!!
vscodeの左下をクリック!今回はターミナル上ではなく、vscodeの機能からの変更を載せる!
のようにリモートのブランチ集が出てくるので、希望するブランチを選択し、ローカルへと上書き!!そこからいつも通り、
git checkout -b 'ブランチ名'
で完成!!
あとターミナル(CLI)でgit branch -r
でリモートのブランチ集が出てくるよ!コマンドですると
git checkout -b ローカルブランチ名/リモートブランチ名
でいけるよついでに-bは新しいブランチを作り、チェックアウトしてくれる!
リモートリポジトリ設定
git remote add origin リモートリポジトリ名
git remote set-url origin リモートリポジトリ名
add
は新しくリモートリポジトリを設定
set-url
の方は既存のリモートリポジトリからの変更リモートリポジトリ確認方法
git remote -v
ファイル編集リセット
git checkout -- ファイル名orディレクトリ名
・・・特定のファイル、ディレクトリの変更をリセット
git checkout --
・・・全てのファイルの変更をリセットコミットやり直し
git commit amend
・・・直前のコミットのやり直し.gitignoreファイル
直接パス指定すると指定したファイル、ディレクトリがgit管理下になくなる
- 投稿日:2021-01-22T17:15:38+09:00
gitmojiが最高に良かった件
gitmojiが最高に良かった件
いつもgithubにcommitする際こちら( https://qiita.com/itosho/items/9565c6ad2ffc24c09364 )を参考にしておりましたが、最近gitmojiというものがあるとの情報を入手しました。
公式サイト→https://gitmoji.dev/
gitmojiのGitHub→https://github.com/carloscuesta/gitmoji-cliさて、正直上記のサイトを見て頂ければ終わりなのですが実際に使っていきましょう。
gitmojiインストール
yarn add gitmoji-cli使い方
git commit
の代わりにgitmoji -c
コマンドを打つのみ。かなり簡単ですね。
実際にgitmoji -c
コマンドを打つと、? - Improve structure / format of the code. ⚡️ - Improve performance. ? - Remove code or files. ? - Fix a bug. ? - Critical hotfix. ✨ - Introduce new features. ? - Add or update documentation. ? - Deploy stuff. ? - Add or update the UI and style files. ? - Begin a project. ✅ - Add or update tests. ? - Fix security issues. ? - Release / Version tags. ? - Fix compiler / linter warnings. ? - Work in progress. ? - Fix CI Build. ⬇️ - Downgrade dependencies. ⬆️ - Upgrade dependencies. ? - Pin dependencies to specific versions. ? - Add or update CI build system. ? - Add or update analytics or track code. ♻️ - Refactor code. + - Add a dependency. - - Remove a dependency. ? - Add or update configuration files. ? - Add or update development scripts. ? - Internationalization and localization. ✏️ - Fix typos. ? - Write bad code that needs to be improved. ⏪ - Revert changes. ? - Merge branches. ? - Add or update compiled files or packages. ? - Update code due to external API changes. ? - Move or rename resources (e.g.: files,paths, routes). ? - Add or update license. ? - Introduce breaking changes. ? - Add or update assets. ♿️ - Improve accessibility. ? - Add or update comments in source code. ? - Write code drunkenly. ? - Add or update text and literals. ? - Perform database related changes. ? - Add or update logs. ? - Remove logs. ? - Add or update contributor(s). ? - Improve user experience / usability. ? - Make architectural changes. ? - Work on responsive design. ? - Mock things. ? - Add or update an easter egg. ? - Add or update a .gitignore file. ? - Add or update snapshots. ⚗ - Perform experiments. ? - Improve SEO. ?️ - Add or update types. ? - Add or update seed files. ? - Add, update, or remove feature flags. ? - Catch errors. ? - Add or update animations and transitions. ? - Deprecate code that needs to be cleanedup. ? - Work on code related to authorization,roles and permissions. ? - Simple fix for a non-critical issue. ? - Data exploration/inspection.これだけ出てきます 笑(実際はスクロールなので非常に見づらいです。)
ただ、文字が入るだけでだいぶリポジトリが見やすくなりそうですね!
また、
gitmoji add -s
とコマンドを打てば「add」に関するものを検索してくれます。
('-s'はsearchのsです。また、ここで注意なのは「add」という単語でなく一つ一つ'a','d','d'として文字として検索する為、この3文字が含まれているものも検索されてしまいます。)コマンド検索がいちいち面倒
gitmojiとコマンドを打つと、
Usage $ gitmoji Options --commit, -c Interactively commit using the prompts --config, -g Setup gitmoji-cli preferences. --init, -i Initialize gitmoji as a commit hook --list, -l List all the available gitmojis --remove, -r Remove a previously initialized commit hook --search, -s Search gitmojis --update, -u Sync emoji list with the repo --version, -v Print gitmoji-cli installed version Examples $ gitmoji -l $ gitmoji bug linter -sとこんな感じですぐにコマンド一覧を確認することができます。
ざっとgitmojiについての紹介でした!
最後までご覧頂き有難うございます!
- 投稿日:2021-01-22T16:47:06+09:00
リポジトリにCRLFを混入するな小学校
Mac-Windows間で開発環境をころころ変える。
Nuxtのdev時、Prettier に CRLFを使うなと怒られたけどeslint --fixする前にgitの設定を見直す
git config --global core.autocrlf input改行lfのまま読み込んで、commit時に改行lfにしてくれる。
- 投稿日:2021-01-22T16:45:54+09:00
Gitコマンドについて
Gitについての、流れをまとめてみました。
リポジトリとは
Gitでファイルを管理する場所
- ローカルリポジトリ
- リモートリポジトリ(publicリポジトリとprivateリポジトリ)Gitコマンドと流れ
①リモートリポジトリ→ローカルリポジトリへダウンロード
- git clone (新規)
- git pull origin (上書き)
②gitの管理
git status(状態の確認)
・赤文字:gitで管理していないファイル
・緑文字:gitの管理化にあるファイル(ステージング)git add ファイル名
gitでファイルを管理させる際に使用(ステージングする際に使用)
※git add . と最後にファイル名ではなくドットをつける事により全てのファイルをステージングgit commit -m "コミットメッセージ"
gitに保存するgit log
コミット履歴の確認③ローカルリポジトリ→リモートリポジトリへアップロード
- git push origin
- git push origin develop(developブランチへアップロード) ※originはリモートサーバーのこと
ブランチ
ブランチを切る
- git checkout -b develop master(マスターからdevelopブランチを切るという意味)
ブランチの切替
- git checkout master(マスターブランチへ切替)
- git checkout ブランチ名(作業するブランチへ切替)
ブランチの確認
- git branch
- git branch -a(-aがつくとリモートも含めた全てのブランチを表示)
マージ
- git merge develop(developブランチをマスターへマージ) ※マージしたいブランチ(マスター)で行う
プルリクエスト(GitHubを使ったマージ前の確認)
作成したブランチをマスターにマージしてもらいたいという依頼のこと
1. AさんがGitHubでプルリクエストを作成(Create Pull Request)
2. Bさんが内容を確認しレビューを行う(Files changed箇所で変更画面の確認・コメントを記述ができる)
3. 最終的に問題なければ、マージボタンを押す事によりマージができる同じブランチで作業する場合(共同開発)
AさんとBさんのローカルリポジトリで別々のコミット履歴が出来上がる。
Aさんが先にプッシュ
次にBさんがプッシュするとエラーが発生するプッシュの前にリモートの状態をローカルにマージしておく必要がある(下の①もしくは②の内容)
① git fetch origin/develop
※このコマンドが実行されるとVIエディタが開かれるので、「:wq」と入力しEnterキーを押すことで、マージが行われる② git pull develop
※「pull」は「fetch+merge」を一つのコマンドにまとめたものコンフリクト
編集している箇所が同じで競合状態にある事
1. Aさんが編集しプッシュ
2. Bさんが同じ箇所を編集していてPullするとコンフリクトが発生
3. コンフリクトを解消してからコミットしてプッシュするgit rebase(mergeとの違い)
- merge
コミット履歴が時系列のまま- rebase
Aさんのコミット履歴の後にBさんのコミット履歴を持ってくる(一直線のコミットツリーになる) git fetch origin git rebase origin/develop develop git push origin -f ※rebaseの場合、-fが必要で強制的にプッシュする事になるgit reset と git stash
git reset --hard HEAD
今編集中の内容を全てリセットして、最終コミットのところまで戻すgit stash
コミットしていない内容をいったん全て削除git stash pop
内容を元に戻す
※違うブランチで作業していて、ブランチを切り替える必要がある際に使える
- 投稿日:2021-01-22T15:33:17+09:00
GitHub【プルリクエスト】
はじめに
これは学習用のメモになります。
プルリクエストとは?
自分が変更したコードをリポジトリに取り込んでもらえるよう依頼する機能。(チーム開発で使用)
プルリクエストの手順(開発フロー:GitHub Flow)
ローカル
①masterブランチを最新に更新
②ブランチを作成
③ファイルを変更
④変更をコミット
⑤GitHubへプッシュ
GitHub(リモートリポジトリ)
⑥プルリクエストを送る
⑦コードレビュー
⑧プルリクエストをマージ
⑥ブランチを削除GitHub Flowを実践する際のポイント(チーム開発)
- masterブランチは常にデプロイできる状態に保つ
- 新開発はmasterブランチから新しいブランチを作成してスタートする
- 作成した新しいブランチ上で作業しコミットする
- 定期的にPushする
- masterにマージするためにプルリクエストを使う
- 必ずレビューを受ける
- masterブランチにマージしたらすぐにデプロイする←テストとデプロイ作業は自動化
- 投稿日:2021-01-22T09:54:45+09:00
Git $ git log コマンドで各コミットで修正したソースを表示する
- 投稿日:2021-01-22T00:30:02+09:00
「なんじゃこれ!?」を撲滅するためのGit基礎
この記事を読んで理解できること
・GitとGitHubの違い
・Gitのファイル保存領域と役割
・Gitコマンドとその意味
・リモートリポジトリを作成し、GitHubにpushするまでの流れ
・【おまけ】Gitのショートカット(エイリアス)の設定方法Gitの全てを網羅している訳ではありませんが、Git白帯の方には多くの学びがある内容で構成しています。
あまり深く踏み込まず、とりあえず抑えて起きたい要点をまとめましたので、ぜひ最後までお読み下さい。初心者からすれば「なんじゃこれ!?」の連続
はじめてGitに触れたのは半年程前。
リモートやらワーキングツリーやらコミットやらプッシュやら全てのGit用語に対して「なんじゃこれ!」と総ツッコミを入れていた当時を思い出しながら、当時の自分の「なんじゃこれ!?」を少しでも減らすことができるような自分想いな記事をここに書き記します。(因みにGitのインストール等は既に出来ていると想定して話は進んでいきます。QiitaにGit関連の良質な記事が沢山ありますので、そちらを参照してください!)それでは「GitとGitHubの違い」の解説から始めます。
GitとGitHubの違い
Gitとは?
既にご存知かも知れませんが、Gitはプログラムのソースコードなどの変更履歴を記録・追跡するためのバージョン管理システムのことです。バージョン管理システムには分散型と中央集中型がありますが、Gitは分散型です。(中央集中型についてはここでは触れません。)
難しい話は抜きにして、書いたコード(ファイル)を変更・管理するためのシステムを「バージョン管理システム」と理解してください。分散型の大切な概念として「ブランチ」というものがあります。後ほど出てきますので、先程と同様に現時点では言葉だけ覚えておいてください。
GitHubとは?
Gitを使っている人たち(開発者)が、さらにGitを便利に使うためのWebサービスのこと。GitのHub(中心)となってGitが集まってくるのでGitHub!この辺は分かりやすいですね。GitHub上でソースコードを管理することで、その他大勢の開発者と一緒にコードのレビューを行ったり、プロジェクトの管理をしながらソフトウェアの開発が進められることができるので、世界中で使われています。
Gitは4つの領域で構成されている
ワークツリー
ステージング
ローカルリポジトリ
リモートリポジトリ
※リポジトリ=ファイルや変更履歴などを置いておく場所。レポジトリとも呼ばれる。初めはとてつもなくややこしいですが、後々「良くできたシステムやで!」と便利さに感動する日が必ず来るはずです。
以前勉強して上記の言葉を知って理解しているなら、次の説明を飛ばして次の段落にスキップしていただいた方が良いです。
仮に全然わからなくても何も問題ありません。はじめから知っている人なんていませんし、現段階では頭の片隅に置いておけばとりあえずは大丈夫です!!Gitの流れと4つの領域を簡単に解説
ワークツリー→ステージングエリア→ローカルリポジトリ→リモートリポジトリ
この流れで自分のPC内のファイルを移動しつつ、終点のリモートリポジトリ(自分のPC外。Web上)にデータを共有する。
(リモートリポジトリ以外は自分のPC内なので、最悪ミスってもなんとかなる範囲です。笑)ワークツリー(自分のPC内):
自分のPC内にあるGit管理下置かれた作業領域。
「add」コマンドを実行することでステージングエリアに移動する。ステージングエリア(まだ自分のPC内):
ローカルリポジトリに「コミット」するファイルを一時的に置いておくための領域。ワークツリーとローカルリポジトリの中間に位置する。
この領域があることで、保存するor修正のためワークツリーへ戻すなど選択することができます。いきなり保存されないので安心できる領域です。
「commit」することでローカルリポジトリに移動する。ローカルリポジトリ(まだ自分のPC内。あと一歩でGitHubへ):
ローカル環境でバージョン管理するために配置する。
「push」することでリモートリポジトリに移動(共有)できる。リモートリポジトリ(自分のPC外。GitHubに到着):
複数人が各自配置したローカルリポジトリをまとめている領域。
リモートリポジトリはWeb上にあるので、複数人でコードを共有・管理できる。Gitコマンドとその意味
Gitコマンドをいきなり網羅する必要はないので、初期段階でとりあえずは覚えておきたい!コマンドを抜粋、併せてコマンドの意味を解説します。
add(アッド):ワークツリー→ステージングへ
# 特定のファイルを指定ファイルを保存 $ git add <ファイル名> # 全てのファイルを保存 $ git add .commit(コミット):ステージング→ローカルリポジトリへ
# 変更内容を確認しながらコミットメッセージを追記。 $ git commit -v # ファイルの変更内容を追記 $ git commit -m "コミットメッセージ"push(プッシュ):ローカルリポジトリ→リモートリポジトリへ
# リモートリポジトリのmasterブランチに、ローカルリポジトリのmasterブランチの変更内容を保存 $ git push origin master # originとはリモートリポジトリのアクセス先に対してGitがデフォルトでつける名前のこと。originとは?
リモートのアクセス先の名称です。
GitHubを利用する前には、リモートリポジトリにプロジェクトを作成します。その時にアクセス先としてgit remote origin <githubのURL>
とoriginを指定するのが慣例となっているので、慣れるまでは深く考えずpushの時はoriginを指定すると覚えてください。branch(ブランチ)とは?
履歴の流れを分岐(ブランチ)して記録するための仕組み。
分岐させることで、分身を作ることができるので、他のブランチに影響を与えず、分身の数だけ複数の変更を進められる。
例えて言うと、ブランチとはパーツのようなもので、各自がパーツを成長させて最後に本体(mainブランチ)に合体させるとパワーアップしてるみたいな感じです。status(ステータス)
# ファイルのステータスを確認(内容を通常表示) $ git status # ファイルのステータスを確認(内容を短縮して表示) $ git status -sdiff(ディフ)
# ワークツリーとステージングの差分 $ git diff # ワークツリーとHEADの前回コミットからの差分 $ git diff HEAD # ステージングとHEADの差分(stagedとcachedはどちらも同じ結果になる) $ git diff --staged $ git diff --cached # 修正したファイル一覧を表示 $ git diff --name-onlyHEADは今いるブランチの最新コミットを示しています。
仮に今、ブランチAとブランチBがあるとしてブランチAにいるならHEADは「ブランチA」を指す。
ブランチAからブランチBに移動した場合、HEADは「ブランチB」を指す。log(ログ)
# commitした変更内容を確認 $ git log # 変更履歴を1行でコンパクトに表示 $ git log --oneline # ファイルの変更差分を表示。Qで終了。 $ git log -p <ファイル名> # 直近のコミット数を制限して表示 $ git log -n <コミット数>branch(ブランチ)
# 表示系 # ローカルブランチ一覧を表示 $ git branch # リモートブランチ一覧を表示 $ git branch -r # リモート/ローカル全てのブランチ一覧を表示 $ git branch -a # 操作系 # 新しくbranchを作成 $ git branch <ブランチ名> # branch<ブランチ名>を削除。完全にマージされていない場合はエラーになる。 $ git branch -d <branch> # branch<ブランチ名>を削除。完全にマージされていない場合でも、強制的に削除する。 $ git branch -D <branch> # 現在のブランチ名を<branch_B>に変更 $ git branch -m <branch_B>checkout(チェックアウト)
# 今いるブランチから<branch>に切り替える $ git checkout <branch> # <branch>を新しく作成して<branch>切り替える $ git checkout -b <branch> # 書き換えたものを、最新のコミット状態に戻す $ git checkout --<ファイル名> # 書き換えたものを、最新のコミット状態に戻す $ git checkout --<ディレクトリ名> # 全変更を取り消す $ git checkout --.clone(クローン)
# リポジトリをコピーする $ git clone <クローンしたいリポジトリ> # タグやブランチを指定してコピーする $ git clone -b <クローンしたいブランチ名> <クローンしたいリポジトリ>remote(リモート)
# リモートリポジトリを作成 $ git remote add origin <リモートリポジトリURL> # リモートリポジトリを削除 $ git remote rm originまだまだ理解しないといけないコマンドはありますが、一先ずは上記のコマンドの理解を深めて慣れないGit環境や操作になれるようにしましょう。掘り下げればキリがないので見たことないコマンドやわからないコマンドに遭遇した時は、その都度「ググり」ってじっくり吸収することをおすすめします。
信頼できるGit公式サイトのリンクを貼っておきます。
「Git Pro」という解説本を無料で読めますので、困ったらまず「Git Pro」を見ると良いですよ!(日本語対応)リモートリポジトリ作成〜pushするまでの流れ
# 1. ローカル上(自分のPC内)の任意の場所に作業フォルダを作成 $ mkdir <ディレクトリ名> # 2. 作業フォルダに移動 $ cd <ディレクトリ名> # 3. .gitフォルダ(隠れフォルダ)を作成 $ git ini #ini = initialの略称 # 4. リモートリポジトリを作成 $ git remote add origin <リモートリポジトリURL> # 5. ファイルをワークツリーからステージに移動 $ git add . 又は $ git add <ファイル名> # 6. コミット前にファイルのステータスを確認する。(必須ではない。コミット前にステータスを一応確認したい) $ git status # 7. ファイルをステージングエリアからローカルリポジトリに移動 $ git commit -v 又は $ git commit -m "コミット内容をコメントとして書く" # 8. masterという名前のブランチを作成 $ git push origin master # 9. origin masterを楽にpushする(次回以降git push origin masterと入力しなくても、git pushだけで済む。) $ git push -u origin master
以上がローカル環境で作成したフォルダをリモートリポジトリにpushするまでの一連の流れです。【おまけ】Gitのショートカット(エイリアス)の設定方法
$ git config --global alias.st status本来なら
status
と入力していたものが、st
だけで済むことになります。例えばgit st
だけでgit status
と同じ内容を実行できるようになるので良く使うコマンドをエイリアスすると効果的です!そして、僕自身も下記のようにエイリアス登録していますが短縮できるのでめっちゃ便利です。例:commit → ci
checkout → co
branch → br
status → st最後に一言
これでGit基礎以上です。
少しでもあなたの「なんじゃこりゃ!」を減らすことができたなら嬉しいです。
最後までお読み頂き有難うございました!参考にさせて頂きました!
・Git
・サル先生のGit入門
・Git超絶まとめ @masashi127さん有益な情報を有難うございました!
- 投稿日:2021-01-22T00:27:34+09:00
git rm -r --cached . の取り消しのやり方
誤ってgit rm -r --cached . を実行した場合は、git reset HEAD .を実行する。
- 投稿日:2021-01-22T00:10:59+09:00
[git]GitとGitHubの使い方(初心者向け)
今回は、「Git」「Github」の使い方についてまとめます。
おそらく僕と同じく困っている方もいると思うので参考なればと。※使用するためにセッティングが必要だと思いますが、今回、そちらは書いておりません。
あくまで事前設定を終えた後からの話になります。GitとGitHubについて
gitとは
ソースコードのバージョン管理を行うツールになります。
「いつ・誰が・どこを」等を記録し、管理する事ができるツールになります。
主に、共同開発時にこれがあるだけで管理がいやすくなるそうです。(まだ経験がないですw)管理の方法としては、下記の2種類かと。
・ローカルリポジトリ 自分のパソコン上に記録・保管
・リモートリポジトリ 専用のサーバーで管理し、複数人で共有GitHubとは
Gitを利用した、開発者を支援するWebサービスです。
なので、GitとGitHubは、一緒に使うことが想定されますので、
使い方は覚えておくべきかと思います、(自分自身にも言い聞かせてます。)
次は、使い方を簡潔にまとめたいと思います。
gitの超シンプルな使い方
文字でまとめると、個人的にはこのような流れでした。
「手順一覧」
1.ターミナルを開く
2.ディレクトリとファイルを作成
3.ローカル作成
4.GitHubでリポジトリ作成
5.作成/変更履歴をローカルに記録
6.ローカルとリモートの紐付け
7.GitHub(リモート)にアップロード※作業時は、4〜5を繰り返す。
次は、もう少し詳しく、分解して表にまとめると、、、、、
No. 操作場所 手順 方法 1 PC ターミナルを開く PCで検索して開く 2 ターミナル ディレクトリ作成 % mkdir ______ 3 ターミナル ファイル作成 % touch _____ 4 ターミナル ローカル作成 % git init 5 GitHub GitHubでリポジトリ作成 リモートリポジトリ作成+URLゲット 6 ターミナル ①作成/変更履歴をローカルに記録 % git add ____(ファイル名) 7 ターミナル ②作成/変更履歴をローカルに記録 % git commit -m "____" 8 ターミナル&GitHub 紐付け(コネクト) % git remote add origin (※リモートリポジトリURL)
※5でゲットしたURL9 ターミナル ブランチ変更 % git branch -M main 10 ターミナル リモートへアップロード % git push origin main 以上を行うと、GitHubにファイルがアップロードされているかと思います。
その後、作業を行うかと思うので、
その際は、6,7,10を実行すると反映できるかと思います。
No. 操作場所 手順 方法 6 ターミナル ①作成/変更履歴をローカルに記録 % git add ____(ファイル名) 7 ターミナル ②作成/変更履歴をローカルに記録 % git commit -m "____" 10 ターミナル リモートへアップロード % git push origin main 以上、たにーでした。
参考文献
- 投稿日:2021-01-22T00:09:40+09:00
Gitでタグ打ちの手順
GnuPGをインストール
$ brew install gnupg以下のURLの手順に従う
・GPGキーペアを作成 (emailはGitHubアカウントのemail)
・GitHubアカウントへのGPGキーの登録
・Gitに署名キーを伝える
・macOSの場合pinentry-macが必要になる$ brew install pinentry-mac You can now set this as your pinentry program like ~/.gnupg/gpg-agent.conf pinentry-program /usr/local/bin/pinentry-mac $ echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf $ killall gpg-agent・タグに署名する
$ git tag -s <tag-name> $ git tag -s v1.13.6・タグをpush
$ git push origin <tag-name>