内容へ移動
yuuho.wiki
カオスの欠片を集めて知恵の泉を作る
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
現在位置:
start
»
tips
»
git
トレース:
tips:git:start
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== Git ====== === 未整理 === * git addでステージングしたファイルをアンステージング(キャンセル)する * https://mrgoofy.hatenablog.com/entry/20100910/1284068244 * 【Git】git管理下のファイルをリネームしたらdeletedとuntrackedの2つになってしまった時 * https://qiita.com/arubaito/items/952cfdfa048980c88562 === 変更を無かったことにする === 変更を加えたファイルを変更前に戻す <code bash> git reset --hard HEAD </code> 追跡していないファイルを一括で削除できる. <code bash> git clean [-d] -n # 削除対象の確認 git clean -f # 削除実行 git clean -df # ディレクトリも含めて削除 </code> === GitHubに登録している鍵の把握 === <code>https://github.com/${USERNAME}.keys</code> ==== git diff ==== * workdir (現在の状態) * staging (add) * repository (commit) * <code>git diff</code> は workdir と staging の比較。\\ * <code>git diff --cached</code> または <code bash>git diff --staged</code> は repository と staging の比較。 見やすさのために <code>git diff --stat</code> ==== コミットを作らず差分の共有をする ==== <code bash> # パッチファイルを作るとき(working vs staging) git diff > hoge.patch ## ↑は staging と workingdir の比較 ## 前回 commit と workingdir を比較する場合は git diff HEAD > hoge.patch # パッチを適用するとき(コミットを作らず working に展開) git --git-dir= apply -p1 hoge.patch # または patch -p1 < hoge.patch # パッチを戻すときは git --git-dir= apply -R -p1 hoge.patch ## というように -R オプションを付ければよい。 </code> 特定のディレクトリ以下について調べる場合は ''git diff --relative=hogedir'' で指定。 patch も base64 で共有するのが良いかも。空白などの情報が大切みたい。 ==== bundle を使ってコミットを共有する ==== 以下のような流れで実行する * 最初に現在の状態を bundle にする。 <code bash>git bundle create v00_first.bundle master</code> * 他の環境で bundle を復元 <code bash>git clone v00_first.bundle repo_name</code> * 場合によっては ディレクトリに入ってから ''git pull origin master'' しないといけない? * 作業している環境で新しいコミットを作る <code bash>git add hogehoge git commit -m "hogehoge"</code> * 差分だけを bundle 化。<code bash>git bundle create v01_diff.bundle HEAD~1..HEAD</code> * 別環境で差分 bundle を pull <code bash>git remote add diff_commit /path/to/v01_diff.bundle git pull diff_commit HEAD</code> ==== タグ ==== === タグ付け === git tagを付けるとgithubではReleaseとして出る [[https://qiita.com/growsic/items/ed67e03fda5ab7ef9d08|tagの付け方]] ''git tag -a v0.0.5 -m "version up" コミットハッシュ''して''git push origin v0.0.5''すると反映される. === タグ削除 === <code> git tag -d TAGNAME git push origin :TAGNAME </code> ==== その他 ==== === ブランチの削除 === マージ済みコミットとかは残してブランチ名だけ削除してやる. | ローカルブランチ | ''git branch -D foo'' | | リモートブランチ | ''git push origin :foo'' | | リモート追跡ブランチ | ''git branch -d -r bar-remote/foo-branch'' | === 空のコミット === リポジトリの最初のコミットを空にしておくと何かと便利だったりする. <code>git commit --allow-empty -m "empty commit"</code> === コミット取り消し === 何も考えずに ''git add -A; git commit -m "save"'' してしまったとき, 稀に画像などを入れてしまうことがある. <code bash>git reset --soft HEAD^</code> でcommitコマンドを無かったことにする. * ''%%-%%-soft'' はコミットだけ取り消し(HEAD)、 add したということ(インデックス)は残る。 * ''%%-%%-mixed'' にすると addしたということも取り消せる。\\ vscode の色付けは add した/していないで決まるので add していない状態の方が嬉しかったりする。 * ''%%-%%-hard'' にするとディレクトリの中身まで前のコミットの状態に戻ってしまう。前回のコミットからの作業内容が消える。 === 強制push === コミットを push してから取り消したくなったとき、前述のコミット取り消しをしたあと、 <code bash>git push origin +master</code> というように ''+'' を付けて push する === 強制pull === <code bash> git fetch git reset --hard origin/master </code> === remote のURL確認 === <code bash>git config --get remote.origin.url</code> === コミットコメントの修正 === [[https://www.granfairs.com/blog/staff/git-commit-fix]] === コミットツリーを可視化する === <code bash>git log -a --graph --oneline --decorate=full</code> ===== 基本 ===== ==== gitの設定 ==== === 階級と設定場所 === Linux の場合 ^ 階級 ^ 設定ファイル場所 ^ メモ ^ | system | ''/etc/gitconfig'' | 使わないこと推奨 | | global | ''~/.gitconfig'' (''~/.config/git/config'') | ユーザーごとに | | local | ''.git/config'' | リポジトリごとに | === コマンドを使って設定する === 以下のように設定する. <code bash>git config --<階級> hoge.fuga.piyo <設定値></code> 設定可能な値の詳しいドキュメントは [[http://git-scm.com/docs/git-config.html]] にあるが,多すぎるので割愛. === 設定を確認する === <code bash>git config --get hoge.fuga.piyo</code> === 設定を消す === <code bash>git config --unset hoge.fuga.piyo</code> === よく使う設定値 === ^ 名前 ^ 値 ^ メモ ^ | ''core.editor'' | ''vim'' | エディタ | | ''remote.origin.url'' | | リポジトリのURL | | ''user.name'' | | | | ''user.email'' | | | ==== 歴史改変 ==== * rebaseでcommitをまとめる [[https://qiita.com/KTakata/items/d33185fc0457c08654a5|Qiita]] * <code bash>git rebase -i HEAD~<個数></code> * エディタが開くので、一番上の ''pick'' は変更せずに二行目以降の ''pick'' を ''s''(squash) にする。すると指定した中で一番古いコミットに中身がまとめられる * 次にもう一度エディタが開いてコミットメッセージを決めるやつが出てくるので全部消して適当なコメントを書く * push は強制で <code bash>git push -f origin master</code> * pull する側も <code bash>git fetch git reset --hard origin/master</code> * rebaseでcommit時刻を変更 [[https://qiita.com/wMETAw/items/8444bba258083bd678c8|Qiita]] * <code bash>git log --pretty=fuller</code> で author date, commit date を確認 * <code bash>git rebase -i HEAD~<個数></code> * エディタが開くので編集したいものを ''pick'' から ''edit'' にして閉じる. * <code bash>git commit --amend --date="Thu Feb 18 17:50:00 2021 +0900"</code> とコマンドを打つ * 再度エディタが開く.何もせず閉じれば良い * 謎のブランチに飛ばされている * <code bash>git rebase --continue</code> でブランチは元に戻る * <code bash>git rebase HEAD~<個数> --committer-date-is-author-date</code> でcommit dateにも日付が適用される * 歴史が書き換わっている * 過去のコメントの変更 * <code bash>git rebase -i HEAD~3</code> * 変えたい行の先頭を ''pick'' から ''edit'' に変更 * <code bash>git commit --amend -m "新しいコメント"</code> * <code bash>git rebase --continue</code> * その後<code bash>git rebase HEAD~<個数> --committer-date-is-author-date</code> で日付が変更なしにできる === マージコミットの取り消し === マージコミットや過去の複数のコミットを取り消すにはどうすればよいかという話。\\ コミット取り消しには ''reset'' と ''revert'' があるが、 基本的には revert が推奨らしい。ただし、reset のほうが考えることが少なくて便利。 また、マージコミットについては、revert で取り消すのはとても大変なので、 reset するべし。 ==== branch を扱う ==== とりあえず dev ブランチを作成して、そこに色々とコミットしていく。 一人で開発していると dev ブランチ開発中に master が進むことはほぼないと思うので 普通にマージすると Fast-Forward マージされて dev ブランチが消えてしまう。 なので強制的にマージコミットを作成してやる必要がある。 <code bash> git checkout master git merge --no-ff dev git push origin master </code> マージしてしまえばブランチは消してしまって構わない。リモートのとローカルのものを消す。 <code bash> git push --delete origin dev git branch --delete dev </code> === コンフリクトした場合 === <code bash>git merge</code> のコマンドを実行したときにコンフリクトというメッセージが表示されることがある。 各ファイルを開いてコンフリクトを解消したのち、''add'' と ''commit'' をする。 <code bash> git add -A git commit -m "取り込み" </code> ===== コマンド ===== ==== add したものの確認 ==== <code bash>git diff --cached</code>
tips/git/start.txt
· 最終更新:
2025/06/23 19:31
by
yuuho
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ