0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Git] 動作を試す 実行例40:remoteでリモートリポジトリを利用(外部とのやり取り)

Posted at

Gitの動作を理解するために、Gitのコマンドを実際に試して、結果を見てみました。

1つの記事内で一連のGitコマンドが完結しているので、これら一連のコマンドを順に実行させて結果を見ることで、一連のGitの動作を実際に体感でき、一通り独習することが可能です。

※前回記事のリポジトリ状態からの続きになっています。

前回記事へ 目次へ:Git関連記事のまとめページ 次回記事へ

実行例

(※現在の各ブランチの位置状態)
git branch -v
↓
結果: 
  branch1 2b19eaa Merge branch 'master' into branch1
* branch2 f3ef64d message12
  branch3 8133746 message15
  master  8133746 message15

(※ブランチ作成前の始めの状態に戻す)
git checkout master
git reset --hard 94996a0
git log --oneline
↓
結果: 
94996a0 (HEAD -> master) message4
20bbab7 message3
00cad71 message2
4ace194 message1

-----

cd /test-space
mkdir remote-repo1.git
cd /test-space/remote-repo1.git

※新たに空のベアリポジトリを作成する (checkoutした作業ファイル等はなしで共有専用のリポジトリ)
git init --bare --shared
↓
結果: 
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint:   git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint:   git branch -m <name>
Initialized empty shared Git repository in D:/test-space/remote-repo1.git/

git log
↓
結果: 
fatal: your current branch 'master' does not have any commits yet

-----

(※リモートリポジトリへpush送信)

cd /test-space/local-repo1

※リモートGitリポジトリを追加する
git remote add origin D:/test-space/remote-repo1.git

(※絶対パスが無難、相対パスで指定するとD:/.../PortableGitからのパスとなる)

※リモートGitリポジトリの追加状況を確認
git remote -v
↓
結果: 
origin  D:/test-space/remote-repo1.git (fetch)
origin  D:/test-space/remote-repo1.git (push)

git fetch origin
↓
結果: 
(なし)

git log --oneline
↓
結果: 
94996a0 (HEAD -> master) message4
20bbab7 message3
00cad71 message2
4ace194 message1

※リモートGitリポジトリへmasterブランチの情報を送信
git push origin master
↓
結果: 
Enumerating objects: 15, done.
Counting objects: 100% (15/15), done.
Delta compression using up to 8 threads
Compressing objects: 100% (9/9), done.
Writing objects: 100% (15/15), 1.04 KiB | 1.04 MiB/s, done.
Total 15 (delta 1), reused 11 (delta 0), pack-reused 0
To D:/test-space/remote-repo1.git
 * [new branch]      master -> master

git log --oneline
↓
結果: 
94996a0 (HEAD -> master, origin/master) message4
20bbab7 message3
00cad71 message2
4ace194 message1

-----

(※リモートリポジトリを直接調べると)

cd /test-space/remote-repo1.git

※--all付きで履歴全てを表示
git log --oneline --graph --all
↓
結果: 
* 94996a0 (HEAD -> master) message4
* 20bbab7 message3
* 00cad71 message2
* 4ace194 message1

git branch -a -v
↓
結果: 
* master 94996a0 message4

(※送信されたmasterブランチのみがある)

-----

(※別の新規リポジトリを作成・クローンして、リモートリポジトリから情報を取る試行)

cd /test-space

※新規リポジトリを作成・クローン
※リモートリポジトリをローカル側のディレクトリに置いたもの、Localプロトコルでクローン
git clone D:/test-space/remote-repo1.git local-repo2
↓
Cloning into 'local-repo2'...
done.

(※絶対パスが無難、相対パスで指定するとD:/.../PortableGitからのパスとなる)

dir /b
↓
結果: 
local-repo1
local-repo2
remote-repo1.git

cd /test-space/local-repo2

※--all付きで履歴全てを表示
git log --oneline --graph --all
↓
結果: 
* 94996a0 (HEAD -> master, origin/master, origin/HEAD) message4
* 20bbab7 message3
* 00cad71 message2
* 4ace194 message1

(※local-repo1、remote-repo1のmasterブランチ内容と同じものとなっている)

※Pro Git本 引用: originという名前は、クローン元のサーバーに対してGitがデフォルトでつける名前。

※リモートGitリポジトリの追加状況を確認
git remote -v
↓
結果: 
origin  D:/test-space/remote-repo1.git (fetch)
origin  D:/test-space/remote-repo1.git (push)

dir /b
↓
結果: 
test1.txt
test2.txt
test4.txt

type test1.txt
↓
結果: 
Sample-Added-11
Sample-Added-12
Sample-Added-13
Sample-Added-14

-----

(※local-repo1にあるその他の未送信のコミットはlocal-repo2には存在しない)

git show 8133746
↓
結果: 
fatal: ambiguous argument '8133746': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

git show 2b19eaa
↓
結果: 
fatal: ambiguous argument '2b19eaa': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

git show d10f934
↓
結果: 
fatal: ambiguous argument 'd10f934': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

-----

(※コミットを追加してpush送信・更新されたコミットをfetch取得)

※local-repo1へ切り替え
cd /test-space/local-repo1

echo Sample-Added-R1 >> test1.txt
git commit -a -m "message R1"

※リモートGitリポジトリへmasterブランチの情報を送信
git push origin master
↓
結果: 
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 331 bytes | 331.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
To D:/test-space/remote-repo1.git
   94996a0..c69a305  master -> master

git log --oneline
↓
結果: 
c69a305 (HEAD -> master, origin/master) message R1
94996a0 message4
20bbab7 message3
00cad71 message2
4ace194 message1

※local-repo2へ切り替え
cd /test-space/local-repo2

※自分のリポジトリにまだ存在しないものをすべて取得
git fetch origin
↓
結果: 
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 311 bytes | 2.00 KiB/s, done.
From D:/test-space/remote-repo1
   94996a0..c69a305  master     -> origin/master

※--all付きで履歴全てを表示
git log --oneline --graph --all
↓
結果: 
* c69a305 (origin/master, origin/HEAD) message R1
* 94996a0 (HEAD -> master) message4
* 20bbab7 message3
* 00cad71 message2
* 4ace194 message1

(※local-repo1、remote-repo1のmasterブランチ内容と同じものとなっている)

type test1.txt
↓
結果: 
Sample-Added-11
Sample-Added-12
Sample-Added-13
Sample-Added-14

※ローカルブランチmasterをリモートブランチorigin/masterまで進める
git merge origin/master
↓
結果: 
Updating 94996a0..c69a305
Fast-forward
 test1.txt | 1 +
 1 file changed, 1 insertion(+)

git log --oneline --graph --all
↓
結果: 
* c69a305 (HEAD -> master, origin/master, origin/HEAD) message R1
* 94996a0 message4
* 20bbab7 message3
* 00cad71 message2
* 4ace194 message1

type test1.txt
↓
結果: 
Sample-Added-11
Sample-Added-12
Sample-Added-13
Sample-Added-14
Sample-Added-R1

(※ファイル内容が更新されている)

-----

(※新規にブランチを作成してpush送信すると)

(※例えば、2つ履歴を戻ってブランチを作成して、新規ブランチをpush送信)
git reset --hard HEAD~2
git checkout -b branch-R1
↓
結果: 
HEAD is now at 20bbab7 message3
Switched to a new branch 'branch-R1'

echo Sample-Added-R2 >> test1.txt
git commit -a -m "message R2"

※--all付きで履歴全てを表示
git log --oneline --graph --all
↓
結果: 
* e009b2d (HEAD -> branch-R1) message R2
| * c69a305 (origin/master, origin/HEAD) message R1
| * 94996a0 message4
|/
* 20bbab7 (master) message3
* 00cad71 message2
* 4ace194 message1

git branch -a -v
↓
結果: 
* branch-R1             e009b2d message R2
  master                20bbab7 [behind 2] message3
  remotes/origin/HEAD   -> origin/master
  remotes/origin/master c69a305 message R1

※リモートGitリポジトリへ新規ブランチbranch-R1の情報を送信
git push origin branch-R1
↓
結果: 
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 290 bytes | 290.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To D:/test-space/remote-repo1.git
 * [new branch]      branch-R1 -> branch-R1

※--all付きで履歴全てを表示
git log --oneline --graph --all
↓
結果: 
* e009b2d (HEAD -> branch-R1, origin/branch-R1) message R2
| * c69a305 (origin/master, origin/HEAD) message R1
| * 94996a0 message4
|/
* 20bbab7 (master) message3
* 00cad71 message2
* 4ace194 message1

(※リモートリポジトリを直接調べると)

cd /test-space/remote-repo1.git

※--all付きで履歴全てを表示
git log --oneline --graph --all
↓
結果: 
* e009b2d (branch-R1) message R2
| * c69a305 (HEAD -> master) message R1
| * 94996a0 message4
|/
* 20bbab7 message3
* 00cad71 message2
* 4ace194 message1

git branch -a -v
↓
結果: 
  branch-R1 e009b2d message R2
* master    c69a305 message R1

(※リモートリポジトリにブランチが追加反映される)

-----

※local-repo2へ切り替え
cd /test-space/local-repo2

git checkout master
↓
結果: 
Switched to branch 'master'
Your branch is behind 'origin/master' by 2 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)

※リモートGitリポジトリへ(resetして後進させた)masterブランチの情報を送信
git push origin master
↓
結果: 
To D:/test-space/remote-repo1.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'D:/test-space/remote-repo1.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and 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.

(※拒否される。リモートリポジトリの更新分をまず取り入れるように催促される)

(※リモートリポジトリの更新分を取り入れると)
git fetch origin master
↓
結果: 
From D:/test-space/remote-repo1
 * branch            master     -> FETCH_HEAD

※ブランチの更新状況
git branch -a -vv
↓
結果: 
  branch-R1                e009b2d message R2
* master                   20bbab7 [origin/master: behind 2] message3
  remotes/origin/HEAD      -> origin/master
  remotes/origin/branch-R1 e009b2d message R2
  remotes/origin/master    c69a305 message R1

git merge origin/master
↓
結果: 
Updating 20bbab7..c69a305
Fast-forward
 test1.txt | 2 ++
 test4.txt | 1 +
 2 files changed, 3 insertions(+)
 create mode 100644 test4.txt

(※再試行)
git push origin master
↓
結果: 
Everything up-to-date

git log --oneline --graph --all
↓
結果: 
* e009b2d (origin/branch-R1, branch-R1) message R2
| * c69a305 (HEAD -> master, origin/master, origin/HEAD) message R1
| * 94996a0 message4
|/
* 20bbab7 message3
* 00cad71 message2
* 4ace194 message1

環境

Windows 10、PortableGit-2.40.0-64-bitを使用、全てローカルPC上で実施、GitHub等は不使用。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?