基本的配置遠程倉庫有兩個命令:html
git remote add origin git@github.com:ZXZxin/gitlearn.git
;git push -u origin master
;這裏先演示環境搭建,也就是和github
上一個倉庫遠程關聯起來,這裏遇到了一些坑,記錄一下:java
坑解決的兩篇文章:git
- https://blog.csdn.net/yemoweiliang/article/details/52980658
- https://blog.csdn.net/uotail/article/details/80211897
- https://jingyan.baidu.com/article/f3e34a12a25bc8f5ea65354a.html
普及:github
- 可使用
git remote show origin
,查看詳細的遠程remote信息(注意origin
是一個別名,不必定要這個名字)git commit am '....'
只會將已經歸入版本庫的文件add
並提交,新增的文件不會add
。
一開始master
和origin/master
同樣。架構
而後咱們須要再調用一次git push
來同步遠程,這樣id
就會相同了。併發
解釋:分佈式
git
內部會本身維護origin/master
這個分支,咱們不能操做,可是能夠執行git checkout origin/master
,雖然這個命令不會報錯,可是咱們實際上只是切換到了提交的那個點(commit-id
)的位置上,也就是和以前那個遊離的狀態同樣。咱們能夠在這個commit-id
位置上進行修改,可是切換的時候要先stash
一下。高併發
來看一下上面的原理和過程:測試
初始狀態:fetch
而後咱們調用了增長或者修改元素,調用git add
和git commit
以後(這時候尚未push
),就會變成下面這樣: (這時候git會告訴咱們master
比origin/master
提早了一步)
而後咱們調用git push
,注意這個過程作了兩步:
origin/master
由上面的①
指向了②
;
模擬環境:
gitlearn
,李四是直接從張三的遠程倉庫git clone
下來的;gitlearn
和李四的gitlearn2
都設置一下user.name
和user.email
;李四先git clone
下來:
而後將張三和李四的用戶名和密碼配置一下:
如今咱們在gitlearn
添加一個c.txt
文件,而後git push
到遠程倉庫,而後在gitlearn2
這邊輸入git remote show origin
來查看區別:
remotes/origin/HEAD -> origin/master
啥意思呢?在clone完成以後,Git 會自動爲你將此遠程倉庫命名爲
origin
(origin
只至關於一個別名,運行git remote –v
或者查看.git/config
能夠看到origin的含義),並下載其中全部的數據,創建一個指向它的master 分支的指針,咱們用(遠程倉庫名)/(分支名)
這樣的形式表示遠程分支,因此origin/master
指向的是一個remote branch
(從那個branch咱們clone數據到本地)也就是
origin/master
是用來追蹤遠程分支的。
而後咱們在gitlearn2
裏面執行git pull
,將遠程的最新更新拉去過來。查看最新的更新信息。
上圖的過程:
下面展現會發生衝突的狀況:
a.txt
的第二行,而後push到了遠程;a.txt
的第二行,而後也想push到遠程,就會報錯;此時李四要先git pull
。
如今展現李四的操做:
可是此時還不夠,咱們須要調用git add
來標識已經解決了衝突;
總結
git add
的三個做用:
- 將未追蹤的文件(新建的文件)加入到暫存區;
- 將已追蹤的文件(修改的文件)加入到暫存區;
- 解決完衝突以後,調用
git add
標識這個文件已經解決了衝突(git merge
的時候)。
此時咱們還須要將解決衝突以後的代碼git push
到遠程.
整個過程的流程:
通常在
git push
以前都要進行git pull
操做。
git pull = git fetch + git merge
。
git fetch
會直接將代碼拉到origin/master
,可是和當前本地的master
不會衝突。可是git merge
就會產生衝突。
下面展現分別使用git fetch
和git merge
來操做:
先使用git fetch
,不會產生衝突:
接下來咱們在李四這邊使用git merge
手動解決衝突並push
:
最後在張三也進行git pull
便可。
關於遠程git
分支,遠程(注意不是本地分支)一般有以下幾種:
master
分支: 很穩定的分支;test
分支: 測試分支;develop
分支: 變化最頻繁的分支;shotfix
分支: 緊急bug須要修復;原文:Java架構筆記
免費Java高級資料須要本身領取,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高併發分佈式等教程,一共30G。
傳送門: https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q