git pull學習筆記

2021-06-26 09:16:52 字數 1770 閱讀 5659

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還是拉不了。請教了大神,操作步驟如下 先按照說明那...