git常用命令

下面是自己學(xué)習(xí)使用git的常用的命令,還有些使用過程中碰到問題的解決辦法,現(xiàn)整理如下。

git clone 從遠(yuǎn)程主機(jī)克隆一個(gè)版本庫(kù)

$ git clone <版本庫(kù)的網(wǎng)址>

$ git clone <版本庫(kù)的網(wǎng)址> <本地目錄名> (線上目錄名和本地不一樣)

git remote 列出所有遠(yuǎn)程主機(jī)名 (便于管理,git要求每個(gè)遠(yuǎn)程主機(jī)都帶一個(gè)主機(jī)名)

$ git remote -v 查看遠(yuǎn)程主機(jī)網(wǎng)址

$ git clone -o jQuery https://github.com/jquery/jquery.git? (克隆版本庫(kù)時(shí)所有主機(jī)自動(dòng)被命名為origin。若用-o可以改變命名)

$ git remote show <主機(jī)名>? (查看主機(jī)詳細(xì)信息)

$ git remote add <主機(jī)名> <網(wǎng)址> (添加遠(yuǎn)程主機(jī))

$ git remote rm <主機(jī)名> (刪除遠(yuǎn)程主機(jī))

$ git remote rename <原主機(jī)名> <新主機(jī)名> (修改遠(yuǎn)程主機(jī)名)

git fetch

git fetch命令通常用來查看其他人的進(jìn)程,因?yàn)樗』氐拇a對(duì)你本地的開發(fā)代碼沒有影響。

默認(rèn)情況下,git fetch取回所有分支(branch)的更新。

$ git fetch <遠(yuǎn)程主機(jī)名> <分支名>? (取回特定分支的更新)

$ git fetch origin master (比如取回origin主機(jī)的master分支)

$ git checkout -b newBrach origin/master (git fetch取回遠(yuǎn)程分支后可以基于此創(chuàng)建一個(gè)本地分支)

git pull

git pull命令的作用是,取回遠(yuǎn)程主機(jī)某個(gè)分支的更新,再與本地的指定分支合并

$ git pull <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名>

取回origin主機(jī)的next分支,與本地的master分支合并,需要寫成下面這樣。

$ git pull origin next:master

如果遠(yuǎn)程分支是與當(dāng)前分支合并,則冒號(hào)后面的部分可以省略。

$ git pull origin next

上面命令表示,取回origin/next分支,再與當(dāng)前分支合并,實(shí)質(zhì)上,這等同于先做git fetch,再做git merge

在某些場(chǎng)合,Git會(huì)自動(dòng)在本地分支與遠(yuǎn)程分支之間,建立一種追蹤關(guān)系(tracking)。比如,在git clone的時(shí)候,所有本地分支默認(rèn)與遠(yuǎn)程主機(jī)的同名分支,建立追蹤關(guān)系,也就是說,本地的master分支自動(dòng)”追蹤”origin/master分支。

Git也允許手動(dòng)建立追蹤關(guān)系。

git branch –set-upstream master origin/next

上面命令指定master分支追蹤origin/next分支。

如果當(dāng)前分支與遠(yuǎn)程分支存在追蹤關(guān)系,git pull就可以省略遠(yuǎn)程分支名。

git push

將本地分支的更新,推送到遠(yuǎn)程主機(jī)

$ git push <遠(yuǎn)程主機(jī)名> <本地分支名>:<遠(yuǎn)程分支名>

注意,分支推送順序的寫法是<來源地>:<目的地>,所以git pull是<遠(yuǎn)程分支>:<本地分支>,而git push是<本地分支>:<遠(yuǎn)程分支>。

$ git push -f <遠(yuǎn)程主機(jī)名> <本地分支名>:<遠(yuǎn)程分支名> (強(qiáng)制提交,非自己的分支強(qiáng)烈不建議使用)

從遠(yuǎn)程pull一個(gè)本地不存在的分支的方法?

1、git checkout -b local_branch origin/remote_branch

2、git fetch將遠(yuǎn)程分支信息獲取到本地,在執(zhí)行1的方法。

git的選擇性合并

具體操作步驟:

假如在當(dāng)前的A分支上要合并B分支的某一個(gè)文件

先切回到A分支

然后執(zhí)行 git checkout B xx.php

xx.php直接會(huì)覆蓋A分支上的xx.php文件

(注意會(huì)直接將文件覆蓋,并不會(huì)合并文件,比如在A的xx.php有修改,在B的xx.php有修改,執(zhí)行上述操作會(huì)直接把B的xx.php覆蓋A,若想解決用下面的步驟)

先在A分支的基礎(chǔ)上建一個(gè) A-temp分支,拿這個(gè)A-temp分支和B分支合并,之后切回到A分支,然后把A-temp分支的文件覆蓋A分支相對(duì)應(yīng)的文件即可。

其它命令

提交:git commit -a

對(duì)最近一次commit的進(jìn)行修改:git commit -a –amend

commit之后,如果想撤銷最近一次提交(即退回到上一次版本)并本地保留代碼:git reset HEAD^

合并分支:(merge from) $ git checkout master

$ git merge mybranch (merge from mybranch)

刪除分支: $ git branch -d mybranch

強(qiáng)制刪除分支: $ git branch -D mybranch

列出所有分支: $ git branch

查看各個(gè)分支最后一次提交: $ git branch -v

查看哪些分支合并入當(dāng)前分支: $ git branch –merged

查看哪些分支未合并入當(dāng)前分支: $ git branch –no-merged

更新遠(yuǎn)程庫(kù)到本地: $ git fetch origin

推送分支: $ git push origin mybranch

取遠(yuǎn)程分支合并到本地: $ git merge origin/mybranch

取遠(yuǎn)程分支并分化一個(gè)新分支: $ git checkout -b mybranch origin/mybranch

刪除遠(yuǎn)程分支:$ git push origin :mybranch

分支合并后刪除文件問題

問題:A分支有10個(gè)文件,B分支有8個(gè)文件,這8個(gè)文件在A分支和B分支都是一樣的,現(xiàn)在切換到A分支執(zhí)行合并命令,結(jié)果A分支的兩個(gè)文件被刪除啦,但是還想在A分支保留那兩個(gè)文件,該如何處理。

解決:merge的概念是 “把其他分支的變更合并到本分支”。在其他分支刪除也是一種merge需要合并的變更

先將A創(chuàng)建一個(gè)臨時(shí)分支temp_A,將A和B合并,在將temp_A把A刪除的兩個(gè)文件還原

$ git checkout (含有想恢復(fù)的文件的commit) — (想恢復(fù)的文件1的路徑) (想恢復(fù)的文件2的路徑)

原文地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、基本操作 用 git init 來在目錄中創(chuàng)建新的 Git 倉(cāng)庫(kù)。 你可以在任何時(shí)候、任何目錄中這么做,完全是...
    千山萬(wàn)水迷了鹿閱讀 482評(píng)論 0 0
  • 分布式版本管理工具 git屬于分布式 svn集中式 git安裝 git初始化一個(gè)倉(cāng)庫(kù) 其實(shí)就是創(chuàng)建了一個(gè).git隱...
    SnowDragonYY閱讀 1,596評(píng)論 0 0
  • 寫個(gè)小故事。 我第一次百度中國(guó)對(duì)“婚齡”的說法,是為了查我爺爺奶奶的婚齡叫什么??上?,十五年之后婚齡就取整數(shù)年定名...
    肆囍閱讀 1,006評(píng)論 5 3
  • 這周看一本小破書,看完吐了二十分鐘,然后把它從我的記憶里狠狠的抹掉了。《紅拂夜奔》還差一點(diǎn)點(diǎn),繼續(xù)還是沒看完。所以...
    噗噗大王閱讀 2,061評(píng)論 0 51
  • 1. Do one thing at a time. 2. Know the problem. 3. Learn ...
    2fa222542bfe閱讀 742評(píng)論 0 2

友情鏈接更多精彩內(nèi)容