git命令
1.何謂同步遠(yuǎn)程分支?有下面幾種情況,
1.本地有新分支,遠(yuǎn)程倉(cāng)庫(kù)沒有。
2.遠(yuǎn)程倉(cāng)庫(kù)有新分支,本地沒有。
3.本地刪除了分支,遠(yuǎn)程也想刪除。
4.遠(yuǎn)程刪除了分支,本地也想刪除。
第一種情況很好解決,將本地分支推送到遠(yuǎn)程倉(cāng)庫(kù)即可。
本文主要講解后面幾種情況的解決辦法。
2.第二種情況:遠(yuǎn)程倉(cāng)庫(kù)有新分支,本地沒有。
這在之前我先介紹幾個(gè)命令。
1.將某個(gè)遠(yuǎn)程主機(jī)的更新,全部取回本地:git fetch
2.查看遠(yuǎn)程分支:git branch -a
3.查看本地分支:git branch
4.切換分支:git checkout 分支
熟悉了以上命令,接下來我們通過一個(gè)例子來講解第二種情況的解決辦法。
假如我本地有個(gè)git倉(cāng)庫(kù),別人推送了一個(gè)新分支到遠(yuǎn)程倉(cāng)庫(kù),我要獲取這個(gè)分支到本地,該怎么辦?
1.我需要git branch查看一下本地分支,再git branch -a查看一下遠(yuǎn)程分支,對(duì)比下,遠(yuǎn)程存在哪些本地沒有的新分支。但發(fā)現(xiàn),本地和遠(yuǎn)
程的一樣。奇怪,在遠(yuǎn)程倉(cāng)庫(kù)(gitlab/github)明明看到了新分支啊。
原來現(xiàn)在本地上的現(xiàn)在的遠(yuǎn)程分支記錄是克隆倉(cāng)庫(kù)時(shí)當(dāng)時(shí)的分支記錄。所以我需要
1.首先將某個(gè)遠(yuǎn)程主機(jī)的更新,全部取回本地:git fetch
2.再次查看遠(yuǎn)程分支:git branch -a 發(fā)現(xiàn)遠(yuǎn)程的分支已經(jīng)可以看見了。
3.然后拉取遠(yuǎn)程分支到本地:git checkout -b 遠(yuǎn)程分支名 origin/遠(yuǎn)程分支名
注:直接克隆整個(gè)倉(cāng)庫(kù),可以直接使用git checkout 分支名切換到分支。因?yàn)榭寺r(shí)候已經(jīng)有遠(yuǎn)程所有的分支記錄。但若之前已經(jīng)克隆過,后來其他電腦新push一個(gè)分支,此時(shí)是無法切換到新分支的。使用上述命令可拉取最新分支(原理是在本地新建一個(gè)分支和遠(yuǎn)程分支關(guān)聯(lián)起來)
3.第三種情況:本地刪除了分支,遠(yuǎn)程也想刪除。
這在之前我先介紹幾個(gè)命令。
1.刪除遠(yuǎn)程分支: git push origin -d 分支名
2.刪除本地分支: git branch -d 分支名
熟悉了以上命令,接下來我們通過一個(gè)例子來講解第三種情況的解決辦法。
假如我在本地想要?jiǎng)h除某個(gè)分支,我也想把遠(yuǎn)程倉(cāng)庫(kù)的這個(gè)分支也要?jiǎng)h掉怎么辦?
1.使用git branch -d 分支名來刪除本地分支。
2.使用git push origin -d 分支名直接來刪除遠(yuǎn)程分支。在次使用git branch -a,發(fā)現(xiàn)分支已經(jīng)不存在了。
或者
1.使用git branch -d 分支名來刪除本地分支。
2.最簡(jiǎn)單的解決辦法就是直接到gitlab/github進(jìn)行刪除.
假如我只想把遠(yuǎn)程的刪除掉怎么辦?
1.使用git push origin -d 分支名直接來刪除遠(yuǎn)程分支。此時(shí)刪除的只是遠(yuǎn)程的分支,本地仍然存在
或者
1.直接到gitlab/github進(jìn)行刪除.
4.第四種情況:遠(yuǎn)程刪除了分支,本地也想刪除。。
這在之前我先介紹幾個(gè)命令。
1.查看遠(yuǎn)程分支和本地分支的對(duì)應(yīng)關(guān)系:git remote show origin
2.刪除遠(yuǎn)程已經(jīng)刪除過的分支:git remote prune origin
熟悉了以上命令,接下來我們通過一個(gè)例子來講解第四種情況的解決辦法。
假如我直接到gitlab/github刪除了某個(gè)分支,我在本地使用git branch -a查看遠(yuǎn)程分支,依然存在并且可以切換使用。我本地也想把遠(yuǎn)程分支記錄刪除怎么辦?
1.git branch -a查看遠(yuǎn)程分支,紅色的是本地遠(yuǎn)程遠(yuǎn)程分支記錄。
2.執(zhí)行下面命令查看遠(yuǎn)程倉(cāng)庫(kù)分支和本地倉(cāng)庫(kù)的遠(yuǎn)程分支記錄的對(duì)應(yīng)關(guān)系:
git remote show origin
3.會(huì)看到:
refs/remotes/origin/遠(yuǎn)程倉(cāng)庫(kù)已經(jīng)刪除的分支名 stale (use 'git remote prune' to remove)
其中:
Local refs configured for 'git push': 命令下面的分支是本地倉(cāng)庫(kù)的遠(yuǎn)程分支記錄中仍存在的分支,但遠(yuǎn)程倉(cāng)庫(kù)已經(jīng)不存在。
4.輸入git remote prune origin來刪除遠(yuǎn)程倉(cāng)庫(kù)已經(jīng)刪除過的分支
5.驗(yàn)證 git branch -a
此時(shí)可以看到本地遠(yuǎn)程分支記錄已經(jīng)和遠(yuǎn)程倉(cāng)庫(kù)保持一致了。
實(shí)際測(cè)試截圖


