LoginSignup
0
0

More than 1 year has passed since last update.

Gitコマンド 整理用メモ

Last updated at Posted at 2019-07-01

目的

GitコマンドとUIツールを共存してうまく活用していく

前提

まずは、Gitをインストールしてきましょう

あって損しないもの(追記で入れましょう)

TortoiseGit
SourceTree

Github等で、gitリポジトリ作る

Windows に沿って説明します

コマンドプロンプト起動してhogeなディレクトリ作ってそこへ移動

git init や git clone ... /.git
(または、ブラウザ上でフォークしてターミナルでクローンなど)

初期化機能追加対応(ソース修正)

git add file ...

git status

git commit -m "#issues5 初期化処理の機能追加しました"

git push origin master
((フォークした)自身リポジトリにプッシュ)
git push upstream master
(フォーク前のリポジトリにプッシュ)

(チームでやってるときは本当にmasterにプッシュしても大丈夫か要確認!)
オプション(-f)をつけることにより、強制的にプッシュできる。

git pull

リモートにある最新を取得してマージ

git fetch

リモートにある最新を取得のみ

git pull origin master

(フォークしたリポジトリの最新を取得してマージ)

git pull upstream master

(フォーク前のリポジトリの最新を取得してマージ)

git fetch origin master

(フォークしたリポジトリの最新を取得)

git fetch upstream master

(フォーク前のリポジトリの最新を取得)

リポジトリのフォーク

GitHub等のアカウントを持っていると、自分のアカウント内に既存のリポジトリの複製をつくれたりします。 この操作をフォークと呼ばれる。

共有されていないリポジトリに対して書き込むことはできません。 一方、フォークしたリポジトリは自分の所有物なので、自由に更新ができます。

git merge

fetchした内容を自分のブランチへマージさせる

チェックアウト後の新規ファイルを追跡できずにステージングに残ってしまう場合の対処

untracked fileを削除するためにはgit cleanを使います。

git clean -n

untracked fileを削除する前に、削除の対象となるファイルを確認できます。

git clean -dn

ディレクトリを確認したい場合に使う

git clean -f

untracked fileを削除します。

git clean -df

ディレクトリを削除する場合はdをつけます。

コンフリクト起きてgit pullできない時

ひとことでまとめようとすると難しい

自分のソースをバックアップとることを前提に、
git fetch で状態だけ確認、コンフリクト起きたところをIDE等で見て修正。そして、git mergeでマージ

よい方法の例としては

TortoiseGitの場合、右クリックすると『変更取り消し』機能があるので、事前にバックアップはするのは前提とし、その機能を活用したあと、バックアップと差分確認し、自分の修正取り込んだり、修正を捨てる

TortoiseGit入れなてないときも同様に、バックアップ取ってプルまたは、クローンし直して、修正差分を取り込む。

差分確認ツールとして

WinMergeが有名である。または、gitの差分コマンドや、TortoiseGitの差分機能も検討してみてください

vscode拡張機能としてGit Lensがある
https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens

ブランチの状態を確認できるツール

Sourcetreeの代用として可能

vscode拡張機能としてGit Graphがある
https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph

結論

ひとことでいうと、コンフリクト起きたときは、自分のファイルをリネームしてプルし差分取り込む、またはローカルブランチ切るか、UI使ってバックアップを視覚化して分かりやすく取ることが大切

オプション

--ff-onlyを設定する

fast-forwardでマージできる状況ではfast-forwardでのmergeを、そうでなければfetchのみ行う

git pull --ff-only origin HEAD

--ff-onlyをデフォルトで実行されるようにする

git pull時に--ff-onlyを設定すると便利です。エンジニアたるもの良さそうなオプションは当然デフォルトで設定したくなる。

デフォルト設定にする場合~/.gitconfigを編集するか

~/.gitconfig
[pull]
    ff = only

下記コマンドを実行する事で設定できます。

$ git config --global pull.ff only

参考

issues単位とは?

https://seleck.cc/647

SSH接続設定

https://backlog.com/ja/git-tutorial/reference/ssh/

0
0
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
0