Git 簡(jiǎn)潔精華筆記

  • git 安裝

    windows 是鄙視鏈末端的開(kāi)發(fā)平臺(tái),但也得用啊!
    下載地址:https://git-for-windows.github.io/
    
  • git 配置

    $ git config --global user.name "runoob"
    $ git config --global user.email test@runoob.com
    $ git config --list
    SSH 密鑰
    $ ssh-keygen -t rsa -C "your_email@youremail.com"
    $ ssh -T git@github.com
    
  • git 工作流程

git-process.png
  • git 文件區(qū)“三棵樹(shù)”
git-zone.jpg
+ git add : 暫存區(qū)的目錄樹(shù)被更新,同時(shí)工作區(qū)文件內(nèi)容被寫(xiě)入到對(duì)象庫(kù)中的一個(gè)新的對(duì)象中,而該對(duì)象的ID被記錄在暫存區(qū)的文件索引中。
+ git commit : 暫存區(qū)的目錄樹(shù)寫(xiě)到版本庫(kù)(對(duì)象庫(kù))中,master 分支會(huì)做相應(yīng)的更新。即 master 指向的目錄樹(shù)就是提交時(shí)暫存區(qū)的目錄樹(shù)。
+ git reset HEAD : 暫存區(qū)的目錄樹(shù)會(huì)被重寫(xiě),被 master 分支指向的目錄樹(shù)所替換,但是工作區(qū)不受影響。
+ git rm --cached <file> : 會(huì)直接從暫存區(qū)刪除文件,工作區(qū)則不做出改變。
+ git checkout  或者 git checkout -- <file> : 暫存區(qū)全部或指定的文件替換工作區(qū)的文件。這個(gè)操作很危險(xiǎn),會(huì)清除工作區(qū)中未添加到暫存區(qū)的改動(dòng)。
+ git checkout HEAD  或者  git checkout HEAD <file> : HEAD 指向的 master 分支中的全部或者部分文件替換暫存區(qū)和以及工作區(qū)中的文件。這個(gè)命令也是極具危險(xiǎn)性的,因?yàn)椴坏珪?huì)清除工作區(qū)中未提交的改動(dòng),也會(huì)清除暫存區(qū)中未提交的改動(dòng)。
  • git 倉(cāng)庫(kù)

    + git init : 初始化當(dāng)前目錄,即將本地項(xiàng)目加入git。進(jìn)錯(cuò)目錄的話,直接刪除.git 文件夾。然后將相關(guān)文件加入版本控制:
    $ git add *.c
    $ git add README
    $ git commit -m '初始化項(xiàng)目版本'
    ————————————————————————————————————————————
    + git clone :克隆服務(wù)器項(xiàng)目加入git。可指定地址,可改名
    $ git clone <repo>
    $ git clone git://github.com/schacon/grit.git mygrit
    ————————————————————————————————————————————
    + 忽略無(wú)需加入git管理的文件,如自動(dòng)生成的日志文件、編譯過(guò)程中的臨時(shí)文件等。養(yǎng)成習(xí)慣,避免提交無(wú)用的文件
      參考內(nèi)容參考 : https://github.com/github/gitignore
    
  • git 基本命令

    + git add : 這是個(gè)多功能命令:可以用它開(kāi)始跟蹤新文件,或者把已跟蹤的文件放到暫存區(qū),還能用于合并時(shí)把有沖突的文件標(biāo)記為已解決狀態(tài)等。 將這個(gè)命令理解為“添加內(nèi)容到下一次提交中”而不是“將一個(gè)文件添加到項(xiàng)目中”要更加合適。
    ——————————————————————————————————————————
    + git status -s : 查看項(xiàng)目當(dāng)前狀態(tài)。帶-s是簡(jiǎn)要輸出,不帶-s是詳細(xì)輸出。
    ?? ——新添加的未跟蹤文件;
    A  ——新添加到暫存區(qū)中的文件;
    M  ——修改過(guò)的文件。出現(xiàn)在左邊的 M,表示該文件被修改了并放入了暫存區(qū);
     M ——修改過(guò)的文件。出現(xiàn)在右邊的 M,表示該文件被修改了但是還沒(méi)放入暫存區(qū)。
    ——————————————————————————————————————————
    + git diff :查看變動(dòng)內(nèi)容。
    尚未緩存的改動(dòng):git diff
    查看已緩存的改動(dòng): git diff --cached
    查看已緩存的與未緩存的所有改動(dòng):git diff HEAD
    顯示摘要而非整個(gè) diff:git diff --stat
    備注:查看代碼差異的圖形化工具,例:diffmerge
    ——————————————————————————————————————————
    + git commit -m '注釋內(nèi)容' : 將緩存區(qū)內(nèi)容加到倉(cāng)庫(kù).
    + git commit -m -a '注釋內(nèi)容' : 跳過(guò)git add加緩存環(huán)節(jié),直接提交跟蹤過(guò)的文件。
    ——————————————————————————————————————————
    + git reset HEAD -- 文件:用于取消已緩存的內(nèi)容,取消之前 git add 添加,但不希望包含在下一提交快照中的緩存
    ——————————————————————————————————————————
    + git rm file :將條目從緩存區(qū)及硬盤中移除,比git reset HEAD 程度重
    + git rm --cached file : 將條目從緩存區(qū)移除,但保留硬盤文件。相當(dāng)于從未add過(guò),適于忘記添加 .gitignore 文件時(shí)用
    ——————————————————————————————————————————
    + git mv file_old file_new : 重命名文件。一條命令做三件事:從緩存區(qū)移除,重命名,再加入緩存區(qū)
    ——————————————————————————————————————————
    + git log : 查看提交歷史記錄。可帶不同參數(shù):
    --oneline : 單行簡(jiǎn)潔表示
    --graph   : 分支、合并等等
    --before={3.weeks.ago} :指定時(shí)間方式1
    --after={2010-04-18}   :指定時(shí)間方式2
    -(n)      :僅顯示最近的 n 條提交
    更多詳見(jiàn):https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E6%9F%A5%E7%9C%8B%E6%8F%90%E4%BA%A4%E5%8E%86%E5%8F%B2
    ————————————————————————————————————————————
    + git tag -a v1.4 -m '注釋' : 加附注標(biāo)簽,帶注釋。不帶-a-m,則為輕量標(biāo)簽
    + git show v1.4 : 查看標(biāo)簽
    ————————————————————————————————————————————
    
  • 遠(yuǎn)程倉(cāng)庫(kù) github

    + git remote : 查看已經(jīng)配置的遠(yuǎn)程倉(cāng)庫(kù)服務(wù)器。倉(cāng)庫(kù)服務(wù)器的默認(rèn)名字為origin。加上 -v 參數(shù),可以看到每個(gè)別名的實(shí)際鏈接地址
    + git remote add [shortname] [url] : 添加一個(gè)新的遠(yuǎn)程 Git 倉(cāng)庫(kù),同時(shí)指定一個(gè)簡(jiǎn)寫(xiě)
    ——————————————————————————————————————————
    + git fetch : 從遠(yuǎn)程倉(cāng)庫(kù)下載新分支與數(shù)據(jù),只要在于查看。之后需git merge該分支到你所在分支
    + git pull : 即git fetch 再加git merge,包含合并過(guò)程
    ——————————————————————————————————————————
    + git push [remote-name] [branch-name] : 推送新分支與數(shù)據(jù)到某個(gè)遠(yuǎn)端倉(cāng)庫(kù)
    ——————————————————————————————————————————
    + git remote rm [別名] : 刪除某個(gè)遠(yuǎn)程倉(cāng)庫(kù)
    + git remote rename oldname newname :重命名遠(yuǎn)程倉(cāng)庫(kù)
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容