溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Git 基本命令

發(fā)布時(shí)間:2020-07-11 18:44:00 來源:網(wǎng)絡(luò) 閱讀:565 作者:Art_vary 欄目:開發(fā)技術(shù)

Git 是一種分布式版本控制系統(tǒng)



創(chuàng)建版本庫(kù)
    mkdir  dirname 新建目錄
    cd dirname    
    git init   把該目錄變成 Git 倉(cāng)庫(kù)

    該目錄下有個(gè) .git 隱藏目錄,不要去改這個(gè)目錄里的文件



添加文件
    git add filename.txt


    
把文件提交給倉(cāng)庫(kù)
    git commit -m "xxx"          -m后面輸入的是本次提交的說明



查看倉(cāng)庫(kù)當(dāng)前狀態(tài)
    git status



比較修改了什么內(nèi)容
    git diff filename.txt



查看提交的歷史
    git log   命令顯示從最近到最遠(yuǎn)的提交日志

    git log --pretty=oneline        每個(gè)版本只輸出一行(commit id  和 提交說明)

查看提交的命令歷史
    git reflog

你看到的一大串字符是commit id(版本號(hào))




在Git中,用HEAD表示當(dāng)前版本,上一個(gè)版本是HEAD^,上上版本是HEAD^,往上前 n 個(gè)版本是 HEAD~n


git reset --hard HEAD^   回退到上一版本


git reset --hard 版本號(hào)  到該commit id 號(hào)對(duì)應(yīng)的版本  commit id 可以不寫全,但一定要寫到 Git可以區(qū)分的程度




工作區(qū)和暫存區(qū)的概念

dirname 就是一個(gè)工作區(qū)

工作區(qū)里的隱藏目錄 .git ,不算工作區(qū),是 Git 的版本庫(kù)


Git的版本庫(kù)里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區(qū),
還有Git為我們自動(dòng)創(chuàng)建的第一個(gè)分支master,以及指向master的一個(gè)指針叫HEAD

git add命令實(shí)際上就是把要提交的所有修改放到暫存區(qū)(Stage),然后,執(zhí)行g(shù)it commit就可以一次性把暫存區(qū)的所有修改提交到分支。

Git 管理的是修改。你第一次修改 filename.txt  并執(zhí)行 git add ,把它提交到暫存區(qū),第二次修改 filename.txt 不添加,執(zhí)行 git commit

你會(huì)發(fā)現(xiàn)只有第一次的修改被提交了,第二次沒有被提交。       git commit 只負(fù)責(zé)暫存區(qū)中的內(nèi)容

每次修改,如果不add到暫存區(qū),那就不會(huì)加入到commit中


撤銷修改
    場(chǎng)景1:當(dāng)你改亂了工作區(qū)某個(gè)文件的內(nèi)容,想直接丟棄工作區(qū)的修改時(shí),用命令git checkout -- filename

    場(chǎng)景2:當(dāng)你不但改亂了工作區(qū)某個(gè)文件的內(nèi)容,還添加到了暫存區(qū)時(shí),想丟棄修改,分兩步,第一步用命令git reset HEAD filename(HEAD表示最新版本),就回到了場(chǎng)景1,
    第二步按場(chǎng)景1操作。

    場(chǎng)景3:已經(jīng)提交了不合適的修改到版本庫(kù)時(shí),想要撤銷本次提交,回退一個(gè)版本。




刪除文件

    rm filename
    
    Git 會(huì)記錄下來,使用 git status 會(huì)告訴你哪些文件被刪除了

    如果確實(shí)要從版本庫(kù)中刪除,用 git rm 刪掉,并且要用 git commit

    如果誤刪  用 git checkout -- filename   git checkout其實(shí)是用版本庫(kù)里的版本替換工作區(qū)的版本,無(wú)論工作區(qū)是修改還是刪除,都可以“一鍵還原”。



要關(guān)聯(lián)一個(gè)遠(yuǎn)程庫(kù),使用命令git remote add origin git@server-name:path/repo-name.git;

關(guān)聯(lián)后,使用命令git push -u origin master第一次推送master分支的所有內(nèi)容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改

克隆一個(gè)倉(cāng)庫(kù),git clone 倉(cāng)庫(kù)的地址





查看分支:git branch

創(chuàng)建分支:git branch <name>

切換分支:git checkout <name>

創(chuàng)建+切換分支:git checkout -b <name>

合并某分支到當(dāng)前分支:git merge <name>

刪除分支:git branch -d <name>



用git log --graph命令可以看到分支合并圖。
git log --graph --pretty=oneline --abbrev-commit



分支策略
     git merge --no-ff -m "merge with no-ff" dev   
     合并分支  加 --no--ff 表示以普通模式合并,-m 說明,合并后的歷史有分支,能看出來曾經(jīng)做過合并,
     通常,合并分支時(shí),如果可能,Git 會(huì)使用Fast forward模式,而這種模式合并后看不出曾經(jīng)做過合并。


git stash   
    把當(dāng)前工作現(xiàn)場(chǎng)儲(chǔ)存起來,以后可以恢復(fù)現(xiàn)場(chǎng)繼續(xù)工作,像快照
    
git stash list 查看存的工作現(xiàn)場(chǎng)

恢復(fù)工作現(xiàn)場(chǎng)
    git stash apply 恢復(fù),恢復(fù)后 stash 內(nèi)容不會(huì)刪除,需要用 git stash drop 來刪除
    
    git stash pop ,恢復(fù)的同時(shí)把 stash 內(nèi)容也刪除


強(qiáng)制刪除一個(gè)沒有被合并過的分支
    git branch -D <name>


查看遠(yuǎn)程庫(kù)信息,使用git remote -v;

本地新建的分支如果不推送到遠(yuǎn)程,對(duì)其他人就是不可見的;

從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠(yuǎn)程的新提交;

在本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支,使用git checkout -b branch-name origin/branch-name,本地和遠(yuǎn)程分支的名稱最好一致;

建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián),使用git branch --set-upstream branch-name origin/branch-name;

從遠(yuǎn)程抓取分支,使用git pull,如果有沖突,要先處理沖突



創(chuàng)建標(biāo)簽


    命令git tag <name>用于新建一個(gè)標(biāo)簽,默認(rèn)為HEAD,也可以指定一個(gè)commit id;

    git tag -a <tagname> -m "blablabla..."可以指定標(biāo)簽信息;

    git tag -s <tagname> -m "blablabla..."可以用PGP簽名標(biāo)簽;

    命令git tag可以查看所有標(biāo)簽。



管理標(biāo)簽


    命令git push origin <tagname>可以推送一個(gè)本地標(biāo)簽;

    命令git push origin --tags可以推送全部未推送過的本地標(biāo)簽;

    命令git tag -d <tagname>可以刪除一個(gè)本地標(biāo)簽;

    命令git push origin :refs/tags/<tagname>可以刪除一個(gè)遠(yuǎn)程標(biāo)簽。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI