gitのブランチリモート接続とリモートブランチの引き出しプッシュおよび競合処理
8660 ワード
コメント:
廖雪峰先生のブログGitチュートリアルを参考にします.そのブログに基づいて学習と記録を行い、無私な共有に感謝し、原文を参照することを歓迎します.
インテリジェントポイント
git branch -D
、ブランチの修正git remote
およびgit remote -v
は、リモートウェアハウス情報git push origin branch-name
ローカルブランチをリモートにプッシュします.git checkout -b dev origin/dev
devブランチはorigin
からのリモートブランチdev
を追跡するように設定されています.git branch --set-upstream-to=origin/ branch
ローカルブランチとリモートブランチの追跡を作成し、git push
とgit pull
git pull
指定のリモートブランチFeatureブランチ
ソフトウェア開発では、無限の新しい機能が追加され続けています.
新しい機能を追加するときは、いくつかの実験的なコードのために、メインブランチを混乱させることを望んでいません.そのため、新しい機能を追加するたびに、
feature
ブランチを新設したほうがいいです.上で開発し、完成したら、合併して、最後に、feature
ブランチを削除します.例えば、次世代の宇宙船に使用する計画の
Vulcan
という新しい機能を開発する新しい任務を受けました.開発の準備:
$ git checkout -b feature-vulcan
Switched to a new branch 'feature-vulcan'
5分後、開発が完了しました.
$ git add vulcan.py
$ git status
# On branch feature-vulcan
# Changes to be committed:
# (use "git reset HEAD ..." to unstage)
#
# new file: vulcan.py
#
$ git commit -m "add feature vulcan"
[feature-vulcan 756d4af] add feature vulcan
1 file changed, 2 insertions(+)
create mode 100644 vulcan.py
dev
を切り取り、合併の準備をします.$ git checkout dev
すべてがうまくいけば、
feature
分岐とbug
分岐は似ていて、合併して削除します.ただし、何らかの理由でこの機能をキャンセルする必要があります.
つまり、このブランチはその場で破棄する必要があります.
$ git branch -d feature-vulcan
error: The branch 'feature-vulcan' is not fully merged.
If you are sure you want to delete it, run 'git branch -D feature-vulcan'.
破棄に失敗しました.Gitによると、
feature-vulcan
分岐はまだ合併されていないが、削除すると修正が失われ、強制的に削除するにはコマンドgit branch -D feature-vulcan
を使用する必要がある.強制的に削除します.
$ git branch -D feature-vulcan
Deleted branch feature-vulcan (was 756d4af).
複数のコラボレーション
master
ブランチとリモートmaster
ブランチを自動的に対応させ、リモートウェアハウスのデフォルト名はorigin
git remote
$ git remote
origin
git remote -v
リモートウェアハウス詳細$ git remote -v
origin [email protected]:findmoon/newrepo.git (fetch)
origin [email protected]:findmoon/newrepo.git (push)
以上のようにプルとプッシュの
origin
アドレスであり、プルとプッシュの2つの権限を有するプッシュブランチ
$ git push origin master
上はローカルマスターをoriginマスターにプッシュします.ローカルの他のブランチはプッシュされません
git push origin dev
は、他のブランチをプッシュし、遠隔地にない場合は(dev
)ブランチを作成し、リモートブランチプッシュ推奨
master
ブランチはメインブランチであるため、時刻をおいてリモートと同期dev
ブランチは開発ブランチであり、チームのすべてのメンバーが上で作業する必要があるため、リモートと同期するbug
ブランチは、ローカルでバグを修復するためにのみ使用されます.ボスが毎週いくつかのバグを修復したかを見ない限り、リモートにプッシュする必要はありません.feature
ブランチがリモートにプッシュされるかどうかは、パートナーと協力してクローン(clone)リモートウェアハウス
複数のコラボレーションでは、たとえば別のパートナー(別のコンピュータまたは別のディレクトリの下)をシミュレートし、リモートから倉庫をクローンします.
clone
倉庫$ git clone https://github.com/findmoon/newrepo.git
'newrepo'...
remote: Counting objects: 55, done.
remote: Compressing objects: 100% (33/33), done.
remote: Total 55 (delta 20), reused 54 (delta 19), pack-reused 0
: 100% (55/55), .
... 。
ブランチのプッシュと競合処理
ローカルブランチとリモートブランチの関連付け
clone
から、リモートmaster
ブランチがローカルのmaster
ブランチ$ cd newrepo/
$ git branch
* master
dev
ブランチで開発するには、ローカルdev
ブランチを作成し、リモートorigin
を追跡するdev
ブランチ$ git checkout -b dev origin/dev
dev origin dev。
'dev'
もう1つのパートナーは、
dev
ブランチを変更し、push
をリモートに変更しました.$ git push origin dev
Username for 'https://github.com': findmoon
Password for 'https://[email protected]':
: 3, .
Delta compression using up to 4 threads.
: 100% (3/3), .
: 100% (3/3), 319 bytes | 0 bytes/s, .
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/findmoon/newrepo.git
09a36ec..5a15ca7 dev -> dev
新しいローカルウェアハウスがリモートにプッシュされたのは初めてです.
github
のユーザー名とパスワードを入力する必要がありますプッシュ時にブランチを指定するか、ブランチトラッキングを設定します。
パートナーが
origin/dev
をプッシュした後、あなたも同じファイルを修正し、プッシュしました.$ git push origin dev
To [email protected]:findmoon/newrepo.git
! [rejected] dev -> dev (fetch first)
error: '[email protected]:findmoon/newrepo.git'
: , 。
: 。 ,
:( 'git pull ...')。
: 'git push --help' 'Note about fast-forwards' 。
提示がプッシュできない、更新が拒否される、Git提示、プッシュは先に変更を統合する必要がある
git pull
git pull
を使用してリモートの最新のコミットを引き出します.$ git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 3 (delta 2), reused 3 (delta 2), pack-reused 0
: 100% (3/3), .
github.com:findmoon/newrepo
09a36ec..5a15ca7 dev -> origin/dev
。
。
git-pull(1)。
git pull
, :
git branch --set-upstream-to=origin/ dev
git pull
は、ローカルブランチとリモートgit pull
ブランチの追跡を指定する必要があるため、またはorigin
パラメータでリモートブランチを指定する必要があるため、失敗しました.git pull
ローカルブランチとリモートブランチの追跡を作成し、git branch --set-upstream-to=origin/ branch
とgit push
git pull
指定引き抜きのリモートブランチ$ git branch --set-upstream-to=origin/dev dev
dev origin dev。
ブランチの引き出し時のファイルの競合
上に追跡が設定されている後、
git pull
に更新を引き出します.$ git branch --set-upstream-to=origin/dev dev
dev origin dev。
$ git pull
readme.txt
( ): readme.txt
, 。
この場合、
pull
が可能ですが、競合がマージされます.競合を解決する方法は、ローカルブランチ管理での競合と同じです.git pull
を修正したときのマージ競合を提出し、最後にgit pull
競合ファイルの表示
$ cat readme.txt
dev modify again commit on master
110
<<<<<<< HEAD
I modify readme on dev branch
=======
modify dev branch file on another people
>>>>>>> 5a15ca7c06dd2204fee3f4571e86b2bf64f6a83b
競合するアイテムを削除した後、追加、コミット、およびプッシュを再開します.
$ git add .
$ git commit -m"fixed remote conflict"
[dev 8a954f4] fixed remote conflict
$ git push origin dev
: 6, .
Delta compression using up to 4 threads.
: 100% (6/6), .
: 100% (6/6), 570 bytes | 0 bytes/s, .
Total 6 (delta 4), reused 0 (delta 0)
remote: Resolving deltas: 100% (4/4), completed with 2 local objects.
To [email protected]:findmoon/newrepo.git
5a15ca7..8a954f4 dev -> dev
引き出しとプッシュが完了しました.
もう1つのパートナーは、リモート・ライブラリとの更新を維持し、リモート・ライブラリの内容をローカルにマージします.
$ git pull origin dev
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 6 (delta 4), reused 6 (delta 4), pack-reused 0
: 100% (6/6), .
https://github.com/findmoon/newrepo
* branch dev -> FETCH_HEAD
5a15ca7..8a954f4 dev -> origin/dev
5a15ca7..8a954f4
Fast-forward
readme.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
複数のコラボレーションによる作業モードの推奨
push
で自分の修正git pull
でgit push origin branch-name
でプッシュすれば