Adsenseコード

2017-08-14

イヌでもわかるGit入門 ターミナル 操作テンプレート


◆既に作成されているリポジトリを利用してスタートする場合


■クローン


この操作では、インターネット上にあるリポジトリ(リモートリポジトリ)をコピーして、自分のローカルに同じリポジトリ(ローカルリポジトリ)を作成します。


ローカルリポジトリを作成するディレクトリに移動します。
下記を実行します。
<URI>の部分に、リモートリポジトリが提供されるURLをいれます。
$ git clone <URI>


例 バックログの git を clone
下記の例では、途中で BacklogId とパスワードを入力します。


$ git clone https://testspace.backlog.jp/git/testProject/testRepository.git
Cloning into 'testRepository'...
Username for 'https://testspace.backlog.jp': BacklogId
Password for 'https://BacklogId@testspace.backlog.jp':
remote: Counting objects: 1361, done.
remote: Compressing objects: 100% (1312/1312), done.
remote: Total 1361 (delta 675), reused 184 (delta 39)
Receiving objects: 100% (1361/1361), 104.27 MiB | 9.20 MiB/s, done.
Resolving deltas: 100% (675/675), done.



■プル


この操作では、インターネット上にあるリモートリポジトリから、
自分のローカル上にあるローカルリポジトリへ変更内容を反映させます


クローンで作成されたディレクトリ「testRepository」に移動して以下を実行します。
$ git pull
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 5 (delta 3), reused 0 (delta 0)
Unpacking objects: 100% (5/5), done.
From <リポジトリURI>
   fbe36a2..c689df6  master     -> origin/master
Merge made by the 'recursive' strategy.
 ...B01_03_05_新データ・作業量予測表.xlsx | Bin 59870 -> 60098 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)



■インデックスに登録


作成、更新したファイルをインデックスに全て登録する。
$ git add .


以下のコマンドで、ファイルがインデックスに
登録されたことが確認できます。
$ git status
# On branch master
nothing to commit (working directory clean)


上記の「全てをインデックスに登録する」では
余計なシステムファイル(「~$」などの隠しファイル)
を含む場合があるので、git status で確認して不要なファイルが
混じっていたら、それを取り除いて必要なファイルだけを
インデックスに登録するようにしてあげましよう。



■git status の中身の見方


new file:
 インデックスに登録されたファイルです。


Untracked files:
 これ以降のファイルはインデックスに登録されていないファイルです。



■git status でファイル名が文字化けしてしまう場合


以下を実行します
$ git config --global core.quotepath false


参考



■インデックスに登録したファイルを取り消す


$ git reset HEAD sample.txt
以下のコマンドで、全てを取り消すことができます。
$ git reset HEAD



参考
http://tweeeety.hateblo.jp/entry/2015/06/10/212631



■コミット


インデックスに登録したファイルを自分のPCのローカルリポジトリへ
変更を反映させます。
$ git commit -m "first commit"



以下のコマンドで、コミットした内容を確認できます。
$ git log



以下のコマンドで、コミットしていないインデックスに
登録したファイルがないことを確認できます。
$ git status
# On branch master
nothing to commit (working directory clean)



参考
https://www.backlog.jp/git-guide/intro/intro2_4.html



■対象リポジトリの確認


以下のコマンドで、リモートリポジトリの一覧を表示します。
$ git remote
origin



■プッシュ


この操作では、 pull の逆で、自分のローカル上にあるローカルリポジトリから
インターネット上にあるリモートリポジトリへ変更内容を反映させます。



以下のコマンドでプッシュします。
$ git push origin master
Counting objects: 12, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (12/12), 1.46 MiB | 0 bytes/s, done.
Total 12 (delta 7), reused 0 (delta 0)
To <リポジトリURI>
   c689df6..4207a26  master -> master



※自分が pull した後にリモートリポジトリに変更が追加され、
自分がその変更されたファイルを変更しようとすると、コンフリクトが発生します。
その場合はマージが必要になります。



ただし、変更を加えたファイルが互いに別々であれば、
コンフリクトは発生せず、差分は吸収されてリモートリポジトリへ
マージがなされます。



■ push がエラーになる場合


push を実行したときに、以下のエラーが表示された場合、
ローカルリポジトリがリモートと比較して最新でない可能性があります。
pull をしてから再実行してみましょう。



To <リポジトリURI>
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to '<リポジトリURI>'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.



参考 実は pull = fetch + merge origin/master
https://qiita.com/osamu1203/items/cb94ef9da02e1ec3e921



■ push がエラーになる場合2


-bash: syntax error near unexpected token `('

addで上記のエラーが出た時の対処法です。
このエラーは、gitに限らずbashの操作で入力文字がうまくエスケープできていないときに表示されます。
以下のように、問題の部分をダブルクォーテーションで挟んであげましょう。

$ git add "sample.txt"



参考
sh.exe": syntax error near unexpected token `('



■ push がエラーになる場合3


push時に以下のようなコンフリクトのエラーが置きた場合の対処法です。

$ git push
To https://test.backlog.jp/git/.....git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://test.backlog.jp/git/.....git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.



この場合は、一度リモートリポジトリの最新をpullして、そこへ変更を加えるようにしましよう。
以下を実行すると、ローカルリポジトリの管理ファイルは、全てリモートリポジトリの内容で置き換わります。
※ この操作をするときは、念のため更新したファイルのバックアップを事前に取っておいてください。

$ git fetch origin
$ git reset --hard origin/master



あとはファイルを更新し、通常通りpushします。



参考
https://qiita.com/ms2sato/items/72b48c1b1923beb1e186



■Git管理内のファイルの名前を変更する場合


Finder などのエクスプローラからファイル名を変更してはいけません。
Git から操作をしてファイル名を変更することで、履歴を継続的に管理することができます。

Git の操作によるファイル名の変更は、以下のコマンドを打ちます。

$ git mv oldFileName.txt newFileName.txt



ステータスで反映されたか確認してみます。

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

renamed:    oldFileName.txt -> newFileName.txt



■特定のファイルだけ前のバージョンに戻したい場合


戻したいバージョンのコミットのハッシュ値を取得し、
checkout をすることで戻します。

以下を入力して、戻したいコミットのハッシュ値を取得します。

$git log (ファイルの相対パス)
commit f174f55e3b3539ca69c2720bdf936c46aaaaaaaa
Author: 山田 太郎 <myamada@p.trs.com>
Date:   Wed Dec 27 11:54:52 2017 +0900

    コミット時のコメント新

commit eca0b933f08d85c404d7bdfbbd048a0aaaaaaaaa
Author: hsasaki <hsasaki@trs.co.jp>
Date:   Wed Dec 27 11:45:33 2017 +0900

    コミット時のコメント旧



commit の後に続いている文字列がハッシュ値です。
戻したいバージョンのハッシュ値で以下を入力します。

$ git checkout (コミットハッシュ値) (ファイルの相対パス)



以上で、「前のバージョンに戻す」という変更がされますので、
この変更をコミットします。
履歴には、前のバージョンに戻したという変更として記録されます。



参考
http://mementomori.info/git%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E7%89%B9%E5%AE%9A%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A0%E3%81%91%E9%81%8E%E5%8E%BB%E3%81%AE%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88/



◆自分用のリポジトリを作成して始める場合



対象としたいディレクトリまで移動します。

$ git init
$ git add *
$ git commit -m "initial import"



参考
https://qiita.com/mountcedar/items/682743c95fd3b8fc274b



参考
Git rmコマンドの使い方
https://eng-entrance.com/git-rm



0 件のコメント:

コメントを投稿