LoginSignup
0
4

More than 3 years have passed since last update.

ひとりgit備忘録

Last updated at Posted at 2017-07-26

push

ローカルからリモートに反映させるとき(初回)。

  • git環境用意: git init
  • リモートリポジトリの場所登録: git remote add 任意リポジトリ名(たいていはorigin) リモートリポジトリアドレス
  • git管理対象のadd: git add .
  • commit: git commit -m "コミットメッセージ"
  • リモートに反映: git push リポジトリ名 ブランチ名

fetch

リモートの状態をローカルに反映させるとき

  • git fetch
  • git merge リポジトリ名/ブランチ名

branch

  • ブランチの一覧: git branch -a
  • ブランチを作る: git branch ブランチ名
  • ブランチの変更: git checkout ブランチ名

log

ローカルにあるgitのコミット履歴をみる
git log --oneline
IDとコミットメッセージがでてくる。

clone

ふつうに
git clone リモートリポジトリアドレス

作業巻き戻し

なんかのファイルいじってる最中に別アカでファイルいじってpushしてしまったのでpullできないみたいな。いったん前のコミットの状態に戻す。

  • 自分の作業履歴取り消し: git checkout HEAD ファイル名
  • 自分の作業履歴取り消し(全体的に): git reset --hard HEAD

いじってたらpullできなくなった

pullしようとしたらローカルに変化が起きてるから無理みたいになって、↑みたいに作業の巻き戻しはしたくないとき。

  • 一時退避コマンド: git stash [save "comment"]
  • 退避したのでpullできる: git pull
  • 退避リスト参照: git stash list -> stash@{N}: みたいなかんじで退避したもののラベルが出てくる。Nは数字で0からインクリ
  • 退避リストのうち反映させたいやつを反映させる: git stash pop stash@{N}

履歴削除

秘密鍵とかおいてしまった(rmしても履歴上は残る)ときのコミットを消して歴史改変する
まず対象のコミットがどれかを特定する
git log [--name-status]
このオプションつけるとそのコミットで何がaddされたとかが見れる。めっちゃあって邪魔で、GitHubとかのサービスでどのコミットなのか特定できるならオプションなくてよし。で、やると、

commit 1234abcd1234abcf1234abcd
Author: name <hoge@hoge.com>
Date:   Wed Aug 23 14:00:00 2017 +0900
  commit message

みたいなもののリストが返ってくるので、下記コマンドで消したいコミットよりも昔のコミットのIDを指定する
git rebase 1234abcd1234abcf1234abcd
なんかエディタ開くので消したいコミットのIDの行を消して保存する。そのあとgit logしてみると消えてる~!
→でもgithubのcommitの履歴に残ってるんだけどどうしたらいいんだ・・


以下特殊なケース対応

git addで怒られるとき

C:\Users\username\PATH>git add .
warning: LF will be replaced by CRLF in fileName.fileExtension.
The file will have its original line endings in your working directory.

なんかwinでgitのバージョン適当に上げたりしてちゃんと項目に目を通していなくてこうなることが(参考:気をつけて!Git for Windowsにおける改行コード)。単体で都度治すならgit config core.autocrlf trueでよいが、全体で設定したほうがよい
git config --global core.autocrlf input


ファイルの中の変更の一部だけをgit addしたいんじゃよ

あるファイルに対して複数の編集を加えているときで、例えば「いやこれはローカルのメモやでw」とか「一気に変更してしまったがコミットの単位分けたいやで」みたいなときに使う。

  • git add -p [file]
  • これすると、変更箇所の塊と共に入力を求められるので、その変更箇所をadd対象にしたければ y でリターン、したくなければ n でリターン
  • 提示された変更箇所の塊の中をもっと細かく制御したいときは e リターンするとviが立ち上がるので、add対象にしたくない行を消す
  • git status したり git diff [file] [--cached] とかして差分を確認する
  • あとは普通にcommit -> pushで大丈夫

githubでプルリク周り

forkする

  • WEBUIで触りたい他所のリポジトリをフォーク
  • フォークしてきたリポジトリをローカルにclone
  • fork元リポジトリの更新に追従したいので下記設定
    • git remote add [任意ブランチ名(例:fork)] [fork元リポジトリアドレス]
    • git fetch fork して、ローカルで任意ブランチにcheckoutした状態で git merge origin fork/master でfork元の更新をローカルのforkリポジトリに反映、リモートのforkリポジトリに反映させるために git push origin [反映させたいブランチ名]

プルリクする

  • forkしてきたローカルのリポジトリで作業、リモートに反映
  • WEBUIでforkリポジトリの画面から「New Pull Request」的なボタンを選択、修正メッセージ等を書いてリクエスト送ってマージ承認されるの待ち。
0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4