🍀
Gitについて毎回ググるのめんどくさいからまとめておく
Git についてまとめておく。
22.04.06 更新
What's Git
- ファイルのバージョン管理システム(分散型バージョン管理システム)
GitHub, Gitlab Bitbucket のようなコード管理サービスとは違う
Features
- 編集履歴を複数人で共有できる
- 複数人で修正した部分を統合(marge)できる
- 一元管理出来る(新旧)
- 古いバージョンに戻せる
Why need it
- ソースコードの管理、配布がしやすい
- 共有が容易であるためチーム開発がしやすい
- CI/CD を構築するため
Flow Model
Status
CI / CD
Remote and Local Repository
Usage
Install
Check the version
git version
Result
git version 2.24.3 (Apple Git-128)
First Settings
- 初期設定としてユーザ名とメールアドレスを登録する
git config --global user.name "User"
git config --global user.email Mail
- fetch 時に Local 上の情報を Remote と合わせてくれる(branch の削除等)
git config --global fetch.prune true
---
上記を行うと問題がある場合は
git config --global fetch.prune falseに書き換え
都度下記のコマンドを実行する
git fetch --prune ( git fetch -p )
- git merge 時に commit を作る設定(任意)
git config --global merge.ff false
- git pull 時に merge commit を作らずに merge する設定
git config --global pull.rebase true
- 設定項目を確認する
git config --list
Clone
git clone <Your remote repository url>
ssh の設定は別途必要
Basic command
init
git init
init した場所に.git directory が作成される
Check the branch list
git branch -a
Create new branch
git checkout -b <new branch name>
---
git branch <new branch name>
git checkout <new branch name>
add, commit, fetch, marge, pull, push
git add .
git add README.md
---
git commit -m "commit msg"
---
git fetch
git fetch origin <Remote target branch>
---
git merge <target branch>
---
git pull origin <Remote target branch>
# rebase を付けることで merge commit が残らないため
# Remoteの情報を取得したいだけの時はrebaseを使う方が better
git pull --rebase origin <Remote target branch>
# pull時の挙動をrebaseに統一する方法は下記
git config --global pull.rebase true
---
git push origin <Remote target branch>
rebase
コミット位置を rebese してくれる
master から新しい branch を切って内容を更新したが master 側でも更新をしていて
master の変更内容を取り込む際に commit history を master の
最新の commit 後に rebase してくれる
git merge だと内容の取り込みのみ実施して commit history は別々で保持される
# masterの内容をmergeして最新commit 後にrebase
git rebase <local target branch> // ex.) master
# masterに移動
git checkout master
# masterの内容を最新にする
git merge <local target branch> // ex.) develop
Check the status
git status
git diff // add する前までの変更点
git diff --staged // addした後の変更点
Check the history
git log
git log --oneline // 1行で表示
git log --graph // いい感じに表示
git log -n 10 // コミット数を制限して表示
Clear of staging
git reset HEAD
Redo the last commit
git commit --amend
Cancel changes
git checkout -- <file name>
git checkout -- <directory name>
---
# ALL
git checkout -- .
Stop monitoring with git
rm -rf .git
If you want to change the branch during editing
git stash -a
git checkout -b develop
git stash pop
If you want to push to another remote repository
git remote -v
git remote add upstream <Remote repository url>
git add .
git commit -m "commit msg"
git push upstream develop
Delete remote repository
git remote -v
git remote rm origin
---
Delete local branch
git branch -d <local branch name>
Delete remote branch
git push --delete origin <remote branch name>
git push origin :<remote branch name>
Change remote repository
git remote set-url origin "Remote repository URL"
Edit history
git rebase -i HEAD~2
git rebase -i <commit ID>
Interactive な画面が起動
修正したい部分を pick から edit に変更
- 修正を実施
git commit --amend
-
commit msg を入力
-
次の edit に移動
git rebase --continue
無い場合は HEAD に移動してくれる
Practices
Create a new project locally and then push
Local 上で App を作成した後、Remote に Push する
- Initialize(Start monitoring with Git)
git init
- Check Remote repository
git remote -v
- Registration of Remote repository
git remote add "Remote repository URL"
- Check Remote repository
git remote -v
- Make a file of text
touch src/test.txt
echo "Hello World" > src/test.txt
cat src/test.txt
- Move to staging area
git add . ( git add src/test.txt )
- Move to repository area
git commit -m "made a test.txt file in directory of src"
- Push to Remote repository (master branch)
git push -u origin master
2 回目以降は git push のみで OK (-u のおかげ)
Clone the project in the Remote repository, then edit and push
Remote 上で Repository を作成した後、Clone して更新した後、 Push する
- Clone with SSH
git clone "Remote repository URL"
cd "ProjectName"
- Create and modify a branch
git checkout -b develop
- Check if the folder is up to date
git pull origin master
- Make a file of text
touch src/test2.txt
echo "Hello Git" > src/test2.txt
cat src/test2.txt
- Move to staging area
git add . ( git add src/test2.txt )
- Move to repository area
git commit -m "made a test2.txt file in directory of src"
- Push to Remote repository (develop branch)
git push -u origin develop
Discussion