- 投稿日:2020-07-02T22:16:38+09:00
gitの初期設定 gitのeditorをVSCodeをにする。
ターミナルに以下を入力する。
example、example@emailには、それぞれgithabで登録した名前、メールアドレスを入れる。qiita.rb$ git config --global user.name "example" $ git config --global user.email example@email $ git config --global core.editor 'code --wait'きちんと登録できたか確認するためには以下のコードを使う。
ruby:qiita.rb
$ git config user.name
$ git config user.email
$ git config core.editor
それぞれ、名前、メールアドレス、code --waitという文字が表示されればきちんと登録されている。
- 投稿日:2020-07-02T22:16:38+09:00
gitの初期設定 gitのeditorをVSCodeにする。
ターミナルに以下を入力する。
example、example@emailには、それぞれgithabで登録した名前、メールアドレスを入れる。qiita.rb$ git config --global user.name "example" $ git config --global user.email example@email $ git config --global core.editor 'code --wait'きちんと登録できたか確認するためには以下のコードを使う。
ruby:qiita.rb
$ git config user.name
$ git config user.email
$ git config core.editor
それぞれ、名前、メールアドレス、code --waitという文字が表示されればきちんと登録されている。
- 投稿日:2020-07-02T19:40:24+09:00
コミットする際のcommit failed - exit code 1 received with output: git: 'secrets' is not a git command. See 'git --help'.のエラー対処法
Gitにてブランチをコミットしようとした際にエラーが出てコミットできなくなったのでその対処法を記載しておこうと思います。(ツールはGithubDesktopを使用しております。)
このエラーはコミットする際にgit-secretsを利用するファイルはあるけどgit-secretsがないですよ、ということを意味しています。(ぼくの解釈ですが。。。)
このエラーの対処法は主に2つあります。
.git/hooks
1つ目の方法はリポジトリ内の.git/hooksにある「commit-msg, pre-commit, prepare-commit-msg」という実行ファイルを削除する方法です。
$ ls #カレントディレクトリにあるファイルやディレクトリを表示する $ ls -l #ファイルやディレクトリの詳細も同時に表示する $ ls -a #隠しファイルも含めファイルやディレクトリを全て表示する $ ls -la #隠しファイルを含む全てのファイルやディレクトリの詳細を表示する.git/hooksは隠しファイルなのでlsコマンドを使用しファイルの場所を確認します。
$ rm test.html #test.htmlを削除する $ rm -r test #testというディレクトリとその中身を削除する $ rm -f test #testというファイルを警告なしで削除する $ rm -rf test #testというディレクトリとその中身を警告なしで削除するディレクトリとファイルの場所を確認したらrmコマンドで「commit-msg, pre-commit, prepare-commit-msg」のファイルを削除します。
git-secretsをインストールする
2つ目の方法はHomebrewにgit-secretsをインストールする方法です。
$ brew install git-secretsこちらのコマンドを入力すれば完了です。
以上どちらかの方法でコミットできるようになるかと思います。
- 投稿日:2020-07-02T18:17:30+09:00
リモートブランチに対して、ローカルブランチがいくらか進んでいる状況の解決方法
リモートブランチに対して、ローカルブランチがいくらか進んでいて、その変更内容をリモートにpushしていない状況
$git status On branch develop Your branch is ahead of 'origin/develop' by 2 commits. (use "git push" to publish your local commits) nothing to commit, working tree clean現在の
develop
がリモートのdevelopであるorigin/develop
より2コミット進んでいるという意味ローカルブランチの更新内容をリモートに反映させたい場合
$ git push origin
より詳細に指定する場合は、
$ git push origin develop:develop
リモートブランチの内容に合わせたい場合
$ git reset -hard origin/develop
コミットをなかったことにしたい場合
$ git reset --hard origin/develop
- 投稿日:2020-07-02T14:34:09+09:00
VSCode:VSNotes:メモを異なるワークスペースや端末で共有し、Gitでも管理する。
目的とメリット
- VSCodeで技術メモを作成し、端末やワークスペースを問わず共有する。
- VSNotesはワークスペースに関係なくファイルを管理できる。
- VSNotesの保存先を、クラウドストレージのローカルディレクトリにして端末間でファイルを共有する。
- Gitのリポジトリをクラウドストレージにおき、バージョン管理も共有する。
- VSCodeをエディタにすることで様々な編集機能を拡張により便利にできる。
1.任意のクラウドストレージのローカルディレクトリに保存用フォルダを作成
- Dropbox、OneDrive、GoogleDriveなど同期用のローカルディレクトリにメモを保存するディレクトリを作成。
2.Gitのリポジトリ作成
- 項番1のディレクトリでリポジトリ作成
cd "項番1のディレクトリパス" git init3. VSNotesをVSCodeにインストール。
4. VSNotesの保存先ディレクトリを設定
- 「ファイル > 環境設定 > 設定」
- 「User > VSNotes」の設定エリアを開く。
- ワークスペースではなく、ユーザーの設定にして、異なるプロジェクト間でもデータ共有をする。
- 「Default Note Path」にメモの保存先パスを設定。
- 保存先パスは、項番1のクラウドストレージのローカルディレクトリパス。
5. ワークスペース外のリポジトリにコミットするコマンドを設定。
- VSNotesの設定エリアの「Commit Push Shell Command」に、項番1のディレクトリ内にあるリポジトリにadd&commitするコマンドを設定。
- 以下は設定するコマンドの例。
git -C "項番1のディレクトリパス" add -A && git -C "項番1のディレクトリパス" commit -m "{msg}"6. コマンドパレットからメモを作成
- コマンドパレットから「VSNotes: Create a New Note」を選択する。
- 、コマンドパレットにメモのタイトルをつけて、Enter(作成)。
7. コマンドパレットからコミット
- コマンドパレットから「VSNotes: Commit an Push」を選択する。
- コミットメッセージを入力して、Enter(コミット)。
8. GitLensでリポジトリのログを確認。
- GitLensをインストール。
- VSNotesのアイコンをクリックして、メモファイルのリストを表示する。
- コミットしたファイルを選択してエディタに表示する。
- GitLensは、ワークスペース外にリポジトリがあるファイルも、エディタで開くことで、REPOSITORYペインにリポジトリを表示する。
以上。
- 投稿日:2020-07-02T14:34:09+09:00
VSCode:VSNotes:メモをクラウドストレージを使って異なるワークスペースや端末で共有、Gitで管理
0.目的とメリット
(1) 目的
- VSCodeで技術メモ(Markdown形式)を作成し、端末やワークスペースを問わず共有する。
(2) メリット
- VSNotesはワークスペースに関係なくファイルを参照できる。つまり、ワークスペース間での共有ができる。
- VSNotesの保存先を、クラウドストレージのローカルディレクトリにして端末間でファイルを共有する。
- Gitのリポジトリをクラウドストレージにおき、バージョン管理も共有する。
- VSCodeがエディタなので、クラウド型のエディタと違い、様々な機能拡張ができる。
- VSNotesは、メモへのタグ付けができるので検索しやすい。
- メモは、Markdown形式・テキストファイルなので、仮にVSNotesより便利な拡張がでても乗り換えやすい。つまり、拡張やアプリ間での共有もできる。
1.任意のクラウドストレージのローカルディレクトリに保存用フォルダを作成
- Dropbox、OneDrive、GoogleDriveなど同期用のローカルディレクトリにメモを保存するディレクトリを作成。
2.Gitのリポジトリ作成
- 項番1のディレクトリでリポジトリ作成
cd "項番1のディレクトリパス" git init3. VSNotesをVSCodeにインストール
4. VSNotesの保存先ディレクトリを設定
- 「ファイル > 環境設定 > 設定」
- 「User > VSNotes」の設定エリアを開く。
- ワークスペースではなく、ユーザーの設定にして、異なるプロジェクト間でもデータ共有をする。
- 「Default Note Path」にメモの保存先パスを設定。
- 保存先パスは、項番1のクラウドストレージのローカルディレクトリパス。
5. ワークスペース外のリポジトリにコミットするコマンドを設定
- VSNotesの設定エリアの「Commit Push Shell Command」に、項番1のディレクトリ内にあるリポジトリにadd&commitするコマンドを設定。
- 以下は設定するコマンドの例。
git -C "項番1のディレクトリパス" add -A && git -C "項番1のディレクトリパス" commit -m "{msg}"6. コマンドパレットからメモを作成
- コマンドパレットから「VSNotes: Create a New Note」を選択する。
- 、コマンドパレットにメモのタイトルをつけて、Enter(作成)。
7. コマンドパレットからコミット
- コマンドパレットから「VSNotes: Commit an Push」を選択する。
- コミットメッセージを入力して、Enter(コミット)。
- ちなみに、コミットは、VSNotesのコマンドでなくても、VSCode標準のバージョン管理画面からも行えます。この画面では異なる場所のリポジトリも扱えます。
8. GitLensでリポジトリのログを確認
- GitLensをインストール。
- VSNotesのアイコンをクリックして、メモファイルのリストを表示する。
- コミットしたファイルを選択してエディタに表示する。
- GitLensは、ワークスペース外にリポジトリがあるファイルも、エディタで開くことで、REPOSITORYペインにリポジトリを表示する。
以上。
備考:VSNotesの2020年7月時点での欠点
- 拡張からファイルを消せない。(直接ディレクトリにいって削除)
- 拡張のリストはグループ分けでない。(タイトルやタグでグループ分けをする)
- VSNotesのメモだけの検索機能に不具合がある。また、ディレクトリ内のファイル検索ができない。
- 投稿日:2020-07-02T14:23:38+09:00
Git入門 - 最速でわかるGitの使い方
Gitは事前に何時間も本やサイトの記事を読むよりも、まずは実際に触れてみるのが一番ですので、本記事では具体的な手順を説明します。
1.Gitとは
Gitは、プログラムソースなどの変更履歴を管理する分散型のバージョン管理システムで、4つの領域に分かれています。
- ワークツリー
- ステージング
- ローカルリポジトリ
- リモートリポジトリ
リモートリポジトリ以外はローカル環境(自分の端末の中)に属しています。
リモートリポジトリは、インターネット上にあるGitHubサービスのリポジトリで、チームで作り上げたコードを格納する場所です。この説明だけではいまいちピンとこないと思いますので、実際に使ってみましょう。
2.Gitのインストール
MacOSの場合はデフォルトで入っていますので、何も問題はないかと。
WindowsOSの場合は、Git for Windowsからダウンロードしてインストールを進めてください。
インストールし終えたら、ターミナルで以下のコマンドを実行します。$ git config --global user.name "ユーザー名" $ git config --global user.email "メールアドレス"リモートリポジトリを利用するにはGitHubのアカウントを作り、サインインする必要がありますので、済ませておいてください。
3.リモートリポジトリの作成
サインインしたら左上のNewボタンをクリック。
リポジトリ名を入力してCreate repositoryをクリック。(インターネット上に公開する場合はPublic、後悔したくない場合はPrivateを選択してください)
下の画面のようになったら準備完了です。
4.Gitの操作
好きな場所に練習用のディレクトリを作成します。ターミナルを開き、練習用ディレクトリに移動してもらい、以下のコマンドを入力します。
$ echo "# test" >> README.mdこれでREADME.mdファイルが作成されました。
lsやcatで確認すると、$ ls README.md $ cat README.md # testのように表示されるはずです。これでワークツリーにファイルを用意することができました。
次はターミナルで
$ git initを実行します。このコマンドでステージングが準備されたりローカルリポジトリが作成されたりします。
$ git add README.md上記のコマンドを実行してもターミナル上では特に変化はありませんが、これでREADME.mdがステージングに追加されます。
ちなみに、今いるディレクトリのファイルをまとめて追加したい場合は、$ git add .と入力します。
次に、README.mdをステージングからローカルリポジトリに追加します。
$ git commmit -m "initial commit"""の中には、ファイルにどんな修正を加えたかわかるようにメッセージをつけます。その際、-mを必ずつけてください。
リモートリポジトリにあるURLをコピーします。
次に、以下のコマンドを実行します。$ git remote add origin https://github.com/アカウント名/リモートリポジトリ名.gitこれでローカルリポジトリとローカルリポジトリを紐づけることができます。設定を確認したい場合は、
$ git remote -vを実行してください。
最後にターミナルで、
$ git push origin masterを実行すれば、リモートリポジトリにREADME.mdがアップロードされます。リモートリポジトリを確認すると、
無事ファイルが追加されていることがわかります。
- 投稿日:2020-07-02T11:00:59+09:00
どうせ僕のことだからまた「git cloneできない」と言い出すのだろう
git clone できない
上から順番にやっていきなはれ
git clone する時に秘密鍵指定した?
git clone git@hogehoge:something.git
hogehoge
のところは~/.ssh/config
のHOST
の右に書いてある単語を入れるんや。$ vim ~/.ssh/config HOST hogehoge #ここね HostName github.com IdentityFile ~/.ssh/hogehoge_rsa User gitお洒落なエラーが出た?
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
そしたら
$ chmod 600 ~/.ssh/id_rsaやってみなはれ。
なんかどうにもこうにもうまく行かないのだが
じゃあ、最初っからやりましょか。
$ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):鍵の名前 Enter passphrase (empty for no passphrase): Enter same passphrase again:これで鍵作れるよ。
id_rsa
かid_dsa
、identity
という名前以外は自動で認識してくれない。なのでそれ以外の名前で鍵を作ったら~/.ssh/config
に設定を書き込む必要がある。
このファイルがそもそもなかったら自分で作りましょ。$ cd ~/.ssh $ vim config ファイル作る。configには以下を書けば良き
Host 任意の名前 HostName github.com IdentityFile ~/.ssh/id_git_rsa ここに自分の鍵のファイル名。ここには秘密鍵を置くから!! User gitこれでOK。
あとはgithubに作った公開鍵を登録しましょう。$ ssh -T configのHOSTの右に書いた任意の名前これでつながっているか試してね。
参考
https://qiita.com/nyanchu/items/32d65c4c36315b876d38
https://qiita.com/0084ken/items/2e4e9ae44ec5e01328f1
https://qiita.com/shizuma/items/2b2f873a0034839e47ce
https://qiita.com/jnchito/items/f403921a5935fffd44b6
https://qiita.com/Mitsunori_Tsukada/items/6886f1f28d9485484822
- 投稿日:2020-07-02T10:57:23+09:00
gitのメモ
gitconfig設定
git config --global user.name "hoge" git config --global user.email "hoge@hoge_of_hoge.com"gitの設定ファイルを開く
## ユーザ単位で設定 vi ~/.gitconfig ## 全ユーザ共通 vi /etc/gitconfig ## 特定のリポジトリだけ vi .git/configgitconfigに追加するもの
[push] default = current [core] autocrlf = false quotepath = false [alias] s = status st = status ft = fetch df = diff cm = commit b = branch br = branch ps = push pl = pull co = checkout gr = log --graph --date=short --decorate=short --pretty=format:'%Cgreen%h %Creset%cd %Cblue%cn %Cred%d %Creset%s' l = log --oneline ld = log --decorate --oneline lg = log --decorate --oneline --graph unstage = reset HEADコマンドの場合
git config --global rerere.enabled true作業する (基本編)
リポジトリを取得
git clone ssh_url現在のブランチを確認
git bステータスを確認
git sブランチを作成
生やしたいブランチに移動してから実行git co -b feature/<branch_name>
最新のコミットをremote取得
git pullリモートブランチを最新に
git ft最新のmasterをマージ
git merge origin/master --no-ff
コンフリクトしたら
git mergetoolで画面を見ながら修正# git config --global merge.tool vimdiff // opendiffの場合のみ実行 git mergetool
マージ取りやめ(マージが完全に解決した時)
git reset --hard ORIG_HEAD
マージ取りやめ(コンフリクトして、いろいろ編集して、マージ前に戻りたい)
git reset --hard HEAD
マージ取りやめ(コンフリクトした。マージ前に戻りたい。)
git merge --abort
コミットログを圧縮(一つにする)
git rebase -i まとめたいコミット番号の一つ前のID
ブランチを削除
git b -D feature/xxxxxxxxxxxxxxxxxx
ブランチ名を変更
git b -m feature/before-name feature/after-name
変更をリモートへ反映させる
git push origin feature/work_branch変更を一時退避
## 退避 git stash ## 退避したstashのリスト git stash show ## 直前のstashを適用して、削除 git stash pop ## stashを指定して反映(stash自体は削除しない) git stash apply stash_name ## 全てのstashを削除 git stash clear ## 特定のstashだけ削除 git stash drop stash_name!!危険!! 追跡されていないファイルをすべて削除
git clean -df
ファイルの中の行を変更した人を探す(俗に犯人探し)
git blame path直前のコミットに変更内容を追加する
git commit --amend
マージ済み・未マージのブランチ一覧
git branch --merged git branch --no-mergedリモートで削除されたブランチのローカル参照を削除
git fetch --prune
直前のコミットを結合させたい
git rebase -i HEAD~2
コミットメッセージだけ見たい
git show commit_id直前のコミットを無かったことにする。
## 変更を無かったことにする git reset --hard HEAD^ ## 変更は残したまま取り消す git reset --soft HEAD^特定のコミットに戻す
git revert commit_idタグ
## タグ一覧を表示 git tag ## 特定のコミットに対してtagを付与 git tag tag_name ## コミットを指定してtagを付与 git tag -a tag_name -m 'コメント' commit_id ## ローカルで作成したタグをリモートを反映 git push origin tag_namelog|コミット変更履歴確認
## コミットログ履歴を表示 git log ## 1行表示 git log --oneline ## 1週間で変更があったファイル git log --since="7 days ago" --pretty=format:"" --name-only ## 特定ファイルの履歴を表示 git log -p file_name ## 特定ファイルの10〜15行目の履歴を表示 git log -L 10,15:file_namediff 差分を表示
## 最新のコミットを比較 git diff HEAD ## 差分の要約を表示 git diff --compact-summary ## 特定のファイルのみ git diff -- target_pathxxxxxxx
xxxxxxx
xxxxxxx
作業する (応用編)
変更のみ確認
diff-filterオプションで変更されたファイルのみDiffを表示するようにするgit diff --diff-filter=Mリネームやコピーを検出
git diff -C
差分のあるファイル一覧を出す
masterと作業ブランチ(work_branch)を比較して、ファイル名だけ出力git diff --name-only master feature/work_branch
Git管理外のファイルを比較
git grepと同じく、Git管理外のファイルを処理できる--no-indexオプションが用意されています。リポジトリ外のファイルに対しても高機能なgit grepを利用することができます。git diff --no-index -- path_origin path_target変更内容を一部だけステージに追加・リセットする。
ファイルの変更内容の一部の行のみをステージに追加したり、反対に一部の行のみステージから除外したいときは-pオプションを付与します。
このオプションを付与すると、対象となる差分ブロック(ハンク)をインタラクティブに選択できるモードが立ち上がるので、指示に従って対象となるハンクを決定していきます。git add -p git reset -p特定のファイルを別ブランチやコミットから取得する
このコマンドを使うと、別ブランチや別コミットから特定ファイルやコードを引っ張ってくることができます。-pオプションを付与すると、対象となるファイルの一部のみを取得することができます。
git checkout [-p] <tree-ish> -- <path>!!危険!! 変更内容をすべて戻す
git reset --hard
コミットログにファイルと変更量を表示する
git log -pだとファイルの変更内容が膨大すぎて見づらい、差分の概要だけ見たいといった場合は、かわりに--statオプションを使うことができます。このオプションは、変更されたファイルのパスと差分量を表示してくれます。
git log --stat
別ブランチから特定のコミットを取り込む
訳あって別ブランチ内の特定のコミットだけ先にリリースしたいというときには、チェリーピック(枝に生えたコミットの 収穫)が使えます。
git cherry-pick commit_id過去のコミットの編集・統合・削除
リベースコマンドは枝を付け替えるだけでなく、インタラクティブモードを使えば各コミットに対して下記の操作を行えます。reword: コミットメッセージの編集
edit: コミット内容の編集
squash, fixup: 複数のコミットを融合し1つのコミットにする
exec: シェルコマンドの実行
drop: コミットの削除git rebase -i upstream(最後のコミットのひとつ前のコミットID)リモートのブランチを削除
リモートのブランチを消したくなったとき、GitHubやBitBucketのサイトにアクセスしてWeb UIから削除を行うのは少々面倒です。
このコマンドを使えば、ローカルからリモートのブランチを削除することができます。
git push --delete branch_name
操作の取り消し
git reflog git reset HEAD@{1} # ← ここの参照インデックスはreflogの結果を見て適宜変更するコミット数を限定してクローンする
長大な歴史を持つリポジトリや、巨大なリポジトリを一部の最新コミットだけ選択的にクローンしたい場合は --depthオプションを利用します。
このオプションで指定した数のコミット(最新順)のみがフェッチされ、クローンを高速化・軽量化できます。
git clone --depth=<n>過去のコミットの差分に対して検索する
-S単体では文字列検索、--pickaxe-regexをつけると正規表現による検索
git log -S search_word -pGitのハッシュ値を人間にわかる形式に変換してくれる
ハッシュ値を渡すとhuman-readableな形式で教えてくれます。git name-rev hash_idremote
origin/masterとmasterの違い
origin/master
-> リモートリポジトリ「origin」のブランチ「master」です。
master
-> ローカルリポジトリのブランチ「master」です。## リモートリポジトリ一覧 git remote -v ## リモートリポジトリ登録 git remote add <リモート名> <リモートリポジトリ> ## リモートリポジトリを変更 git remote set-url <リモート名> <リモートリポジトリ> ## リモートで削除されているが、ローカルで残っているブランチを表示 git remote prune --dry-run <リモート名> ## リモートで削除されているが、ローカルで残っているブランチを削除 git remote prune <リモート名>xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
- 投稿日:2020-07-02T10:57:23+09:00
git 自分用のメモ
自分専用なのでぼく以外はブラウザバックしておk
gitconfig設定
git config --global user.name "hoge" git config --global user.email "hoge@hoge_of_hoge.com"gitの設定ファイルを開く
## ユーザ単位で設定 vi ~/.gitconfig ## 全ユーザ共通 vi /etc/gitconfig ## 特定のリポジトリだけ vi .git/configgitconfigに追加するもの
[push] default = current [core] autocrlf = false quotepath = false [alias] s = status st = status ft = fetch df = diff cm = commit b = branch br = branch ps = push pl = pull co = checkout gr = log --graph --date=short --decorate=short --pretty=format:'%Cgreen%h %Creset%cd %Cblue%cn %Cred%d %Creset%s' l = log --oneline ld = log --decorate --oneline lg = log --decorate --oneline --graph unstage = reset HEADコマンドの場合
git config --global rerere.enabled true作業する (基本編)
リポジトリを取得
git clone ssh_url現在のブランチを確認
git bステータスを確認
git sブランチを作成
生やしたいブランチに移動してから実行git co -b feature/<branch_name>
最新のコミットをremote取得
git pullリモートブランチを最新に
git ft最新のmasterをマージ
git merge origin/master --no-ff
コンフリクトしたら
git mergetoolで画面を見ながら修正# git config --global merge.tool vimdiff // opendiffの場合のみ実行 git mergetool
マージ取りやめ(マージが完全に解決した時)
git reset --hard ORIG_HEAD
マージ取りやめ(コンフリクトして、いろいろ編集して、マージ前に戻りたい)
git reset --hard HEAD
マージ取りやめ(コンフリクトした。マージ前に戻りたい。)
git merge --abort
コミットログを圧縮(一つにする)
git rebase -i まとめたいコミット番号の一つ前のID
ブランチを削除
git b -D feature/xxxxxxxxxxxxxxxxxx
ブランチ名を変更
git b -m feature/before-name feature/after-name
変更をリモートへ反映させる
git push origin feature/work_branch変更を一時退避
## 退避 git stash ## 退避したstashのリスト git stash show ## 直前のstashを適用して、削除 git stash pop ## stashを指定して反映(stash自体は削除しない) git stash apply stash_name ## 全てのstashを削除 git stash clear ## 特定のstashだけ削除 git stash drop stash_name!!危険!! 追跡されていないファイルをすべて削除
git clean -df
ファイルの中の行を変更した人を探す(俗に犯人探し)
git blame path直前のコミットに変更内容を追加する
git commit --amend
マージ済み・未マージのブランチ一覧
git branch --merged git branch --no-mergedリモートで削除されたブランチのローカル参照を削除
git fetch --prune
直前のコミットを結合させたい
git rebase -i HEAD~2
コミットメッセージだけ見たい
git show commit_id直前のコミットを無かったことにする。
## 変更を無かったことにする git reset --hard HEAD^ ## 変更は残したまま取り消す git reset --soft HEAD^特定のコミットに戻す
git revert commit_idタグ
## タグ一覧を表示 git tag ## 特定のコミットに対してtagを付与 git tag tag_name ## コミットを指定してtagを付与 git tag -a tag_name -m 'コメント' commit_id ## ローカルで作成したタグをリモートを反映 git push origin tag_namelog|コミット変更履歴確認
## コミットログ履歴を表示 git log ## 1行表示 git log --oneline ## 1週間で変更があったファイル git log --since="7 days ago" --pretty=format:"" --name-only ## 特定ファイルの履歴を表示 git log -p file_name ## 特定ファイルの10〜15行目の履歴を表示 git log -L 10,15:file_namediff 差分を表示
## 最新のコミットを比較 git diff HEAD ## 差分の要約を表示 git diff --compact-summary ## 特定のファイルのみ git diff -- target_pathxxxxxxx
xxxxxxx
xxxxxxx
作業する (応用編)
変更のみ確認
diff-filterオプションで変更されたファイルのみDiffを表示するようにするgit diff --diff-filter=Mリネームやコピーを検出
git diff -C
差分のあるファイル一覧を出す
masterと作業ブランチ(work_branch)を比較して、ファイル名だけ出力git diff --name-only master feature/work_branch
Git管理外のファイルを比較
git grepと同じく、Git管理外のファイルを処理できる--no-indexオプションが用意されています。リポジトリ外のファイルに対しても高機能なgit grepを利用することができます。git diff --no-index -- path_origin path_target変更内容を一部だけステージに追加・リセットする。
ファイルの変更内容の一部の行のみをステージに追加したり、反対に一部の行のみステージから除外したいときは-pオプションを付与します。
このオプションを付与すると、対象となる差分ブロック(ハンク)をインタラクティブに選択できるモードが立ち上がるので、指示に従って対象となるハンクを決定していきます。git add -p git reset -p特定のファイルを別ブランチやコミットから取得する
このコマンドを使うと、別ブランチや別コミットから特定ファイルやコードを引っ張ってくることができます。-pオプションを付与すると、対象となるファイルの一部のみを取得することができます。
git checkout [-p] <tree-ish> -- <path>!!危険!! 変更内容をすべて戻す
git reset --hard
コミットログにファイルと変更量を表示する
git log -pだとファイルの変更内容が膨大すぎて見づらい、差分の概要だけ見たいといった場合は、かわりに--statオプションを使うことができます。このオプションは、変更されたファイルのパスと差分量を表示してくれます。
git log --stat
別ブランチから特定のコミットを取り込む
訳あって別ブランチ内の特定のコミットだけ先にリリースしたいというときには、チェリーピック(枝に生えたコミットの 収穫)が使えます。
git cherry-pick commit_id過去のコミットの編集・統合・削除
リベースコマンドは枝を付け替えるだけでなく、インタラクティブモードを使えば各コミットに対して下記の操作を行えます。reword: コミットメッセージの編集
edit: コミット内容の編集
squash, fixup: 複数のコミットを融合し1つのコミットにする
exec: シェルコマンドの実行
drop: コミットの削除git rebase -i upstream(最後のコミットのひとつ前のコミットID)リモートのブランチを削除
リモートのブランチを消したくなったとき、GitHubやBitBucketのサイトにアクセスしてWeb UIから削除を行うのは少々面倒です。
このコマンドを使えば、ローカルからリモートのブランチを削除することができます。
git push --delete branch_name
操作の取り消し
git reflog git reset HEAD@{1} # ← ここの参照インデックスはreflogの結果を見て適宜変更するコミット数を限定してクローンする
長大な歴史を持つリポジトリや、巨大なリポジトリを一部の最新コミットだけ選択的にクローンしたい場合は --depthオプションを利用します。
このオプションで指定した数のコミット(最新順)のみがフェッチされ、クローンを高速化・軽量化できます。
git clone --depth=<n>過去のコミットの差分に対して検索する
-S単体では文字列検索、--pickaxe-regexをつけると正規表現による検索
git log -S search_word -pGitのハッシュ値を人間にわかる形式に変換してくれる
ハッシュ値を渡すとhuman-readableな形式で教えてくれます。git name-rev hash_idremote
origin/masterとmasterの違い
origin/master
-> リモートリポジトリ「origin」のブランチ「master」です。
master
-> ローカルリポジトリのブランチ「master」です。## リモートリポジトリ一覧 git remote -v ## リモートリポジトリ登録 git remote add <リモート名> <リモートリポジトリ> ## リモートリポジトリを変更 git remote set-url <リモート名> <リモートリポジトリ> ## リモートで削除されているが、ローカルで残っているブランチを表示 git remote prune --dry-run <リモート名> ## リモートで削除されているが、ローカルで残っているブランチを削除 git remote prune <リモート名>xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
- 投稿日:2020-07-02T05:04:15+09:00
Git 使い方 git push origin masterまで
Gitでのpushまでの道のり
gitの学習メモ
pushまでの手順。githubのアカウントは持っている前提。
1、リポジトリの作成
・リモートリポジトリ
・GitHubにログイン
・画面右上+ボタンを押す。
・New repositoryを選択
・リポジトリ名を付ける
・Create Repositoryを押す・ローカルリポジトリ
・ローカルのソースコードのあるディレクトリに移動
・git init でローカルリポジトリ作成リモートリポジトリの指定
・git remote add origin https ~ .git
・https ~ .git は GitHubの作ったリポジトリのCodeのページのHTTPSのボタン押したところのやつadd、commit、push
ソースコードの変更をローカルリポジトリに追加し、リモートリポジトリにローカルリポジトリを反映する。
・git add . ( . は全部のファイルって意味)
・git commit -m "何を変更したかとかのメッセージ"・git push origin master
これでリモートリポジトリへの反映
- 投稿日:2020-07-02T02:05:44+09:00
Gitでcheckoutできない現象を解消した
gitでcheckoutしようとすると以下のようなエラーが。。。
$ git checkout develop error: Your local changes to the following files would be overwritten by checkout: xxx/__pycache__/urls.cpython-37.pyc xxx/__pycache__/views.cpython-37.pyc xxx/__pycache__/urls.cpython-37.pyc Please commit your changes or stash them before you switch branches. Abortingよくわからないままstashを実行。
$ git stashなんかできてそう。
とりあえずpullだな。
$ git pull From https://github.com/xxxxx/xxxxx * branch master -> FETCH_HEAD Already up to date.これは。。。
$ git checkout Switched to branch 'develop'おおおおおおお!
なんで直ったかわからんができた。これをやる前にも
.git/index.lock
を削除するなどいろいろやったので原因がわからない。