git pull note
-v0.1 2014.10.10 *** draft
本文是學習git pull時的乙個筆記, 以乙個實驗的方式記錄。
1. git repo a:
branch: master, test
git repo b;
branch: master, test(all pull from repo a)
若在repo a上test分支加乙個提交, 在repo b的master分支上用git pull, reop
b的test分支將不會更新,repo b切換到test分支上,再使用git pull,
則可以更新test分支。
2. 還是上面的場景,在repo a test分支上加乙個commit new。在repo b中git fetch,
git checkout origin/test, git log, 會發現現在repo b的遠端分支origin/test
有了repo a test分支上的commit new
在repo b的test分支上,git merge orgin/test,即可把git fetch得到的repo b
origin/test分支和test合併。這也就是常說的git pull = git fetch + git merge
可以看出repo b在本地是有origin/master, origin/test的遠端分支的完整拷貝,也有
本地分支master, test。在git fetch操作時,只是把repo a上的新提交加到repo b的
origin/test「分支」上。
3. git branch顯示本地分支,git branch -r顯示遠端分支,
git checkout orgin/test -b local_branch 建立乙個本地分支local_branch跟蹤
遠端分支
4. 在repo b .git中的config檔案中有這樣的配置條目:
[remote "origin"]
url = /home/example/git_test_client/../git_test
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "test_client"]
remote = origin
merge = refs/heads/test
其中第一條[remote "origin"], url表示遠端倉庫的url, fetch表示做git fetch
的時候遠端倉庫中的各個分支,對應本地倉庫中的refs/remotes/orgin/下的各個「分支」。
本地倉庫的origin/master等嚴格的講並不是乙個分支,使用git checkout origin/master
會顯示處於頭指標分離狀態。
後面的[branch "master"]條目表示,當時候git pull時,會把git fetch得到的orgin/master
merge到本地的master分支中。
referance:
1. git 權威指南 第19章 遠端版本庫
git pull 衝突解決
git stash將本地 stash 到倉庫中備份 git pull將遠端 拉取到本地 git stash pop將倉庫中的 合到本地最新的 中 在解決bug的過程中,可能出現多次stash,此時可以使用命令git stash list檢視本地倉庫中儲存了幾個stash版本 git stash po...
git pull 撤銷誤操作
git pull 撤銷誤操作 本來想把github上的newpbft合併到本地的newpbft分支上,由於沒有檢視當前分支,直接運用git pull origin newpbft,結果將newpbft合併到了master分支中。解決方法 1 執行git reflog命令檢視你的歷史變更記錄,如下 f...
git pull失敗(ssh問題)
因為昨天晚上我做了關於github的ssh,生成了新的ssh,成功了。然後今天早上公司的專案拉取 顯示拉取不成功,然後我想應該是昨天的ssh搞出問題了。修改了本地設定也不行,然後我就想重新拉下阿里的專案吧,但是竟然拉不了。我嘗試直接刪除我本地的ssh還是拉不了。請教了大神,操作步驟如下 先按照說明那...