「git」git的基礎(chǔ)知識及常用命令

前言

??參與項目的時候,因為個人只需用到stage commit push pull merge等簡單的命令,所以沒有單獨花時間對Git進(jìn)行了解學(xué)習(xí),機(jī)緣巧合,我認(rèn)為是時候去認(rèn)真的了解下Git的原理及常用命令了。

??在寫這篇文章的時候,我會顧慮是否有必要寫,因為網(wǎng)上關(guān)于git的各種教程和文章多不勝數(shù),但那畢竟不是我的輸出,所以最后決定就把它當(dāng)做是對寫作的一種練習(xí)。

版本控制的歷史

??你知道版本控制從什么時候就存在了嗎?

??CVS(Concurrent Versions System),是1986年發(fā)布的,但是在CVS之前就已經(jīng)有了用于代碼比較和打補丁的工具,即diff和patch,他們在今天仍然生命力頑強(qiáng)。

??SVN(Subversion),如果說CVS開啟了版本控制的大爆發(fā),那么SVN就是集中式版本控制的集大成者,SVN是由CollabNet公司資助,于2000年開始開發(fā)的,目的在于創(chuàng)建一個更好用的版本控制系統(tǒng)以取代CVS。SVN能實現(xiàn)輕量級拷貝,并采用授權(quán)文件的方式實現(xiàn)版本庫授權(quán),且文件修改的差異比較等命令不再需要網(wǎng)絡(luò)連接就能完成,但是從本質(zhì)上來講,SVN并沒有取得開創(chuàng)性的突破。SVN和CVS都是集中式版本控制系統(tǒng),即一個項目只用唯一的一個版本庫與之對應(yīng),所有項目成員都通過網(wǎng)絡(luò)向該服務(wù)器進(jìn)行提交修改,這樣的設(shè)計特別容易出現(xiàn)單點故障,查看日志和提交數(shù)據(jù)等操作都會出現(xiàn)延遲。

??Git的誕生是因為2005年4月,BitKeeper(一個商業(yè)版本控制系統(tǒng))軟件的所有者,出于某種原因收回對Linux社區(qū)免費使用BitKeeper的授權(quán),迫不得已,Linus選擇了自己開發(fā)一個分布式版本控制工具以代替BitKeeper,于是Git誕生了。
??Git是一個分布式版本控制系統(tǒng),分布式版本控制系統(tǒng)可以不需要集中式版本庫,每個人都工作在通過克隆建立的本地版本庫中,每個人都擁有一個完整的版本庫,查看日志、提交、創(chuàng)建里程碑和分支、合并分支、回退等所有操作都能直接在本地完成而不需要網(wǎng)絡(luò)連接。

.git目錄/版本庫

??我們都知道,執(zhí)行g(shù)it init后,工作區(qū)根目錄下會出現(xiàn)一個.git目錄,其實這個目錄是用于保存版本庫的,且僅此一處。在工作區(qū)的子目錄下沒有任何其他跟蹤文件或目錄,該設(shè)計使得所有的版本控制操作(除與其他遠(yuǎn)程版本庫之間的互操作外)都可以在本地完成。
??傳統(tǒng)的集中式版本控制系統(tǒng)的版本庫和工作區(qū)是分開的,甚至在不同的主機(jī)上,因此必須建立版本庫和工作區(qū)的對應(yīng)。

常用命令
  • git最常用工作流程
    git add <filename> 把修改加入暫存區(qū)
    git commit -m "some note" 把加入暫存區(qū)的內(nèi)容提交到本地版本庫
    git push origin master 把本地版本庫的內(nèi)容推到遠(yuǎn)端版本庫

  • 在未克隆現(xiàn)有倉庫的情況下,如何把本地倉庫提交到遠(yuǎn)端倉庫
    git init 創(chuàng)建新的git倉庫
    git add <filename>
    git commit -m "some note"
    git remote add origin <server>
    git push -u origin master

  • 把遠(yuǎn)端倉庫克隆到本地的目錄下
    into local dictionary
    git clone <server>

  • 分支的創(chuàng)建與提交
    git checkout -b new_branch_name 創(chuàng)建新分支并切換過去
    coding 在本地修改代碼
    git add <filename>
    git commit -m "some note"
    git push origin new_branch_name 把分支和修改內(nèi)容提交到遠(yuǎn)端倉庫

??note:只有將該分支提交到了遠(yuǎn)端倉庫,該分支才會被其他人所見。

  • 合并新分支到主分支上
    git checkout master
    git merge new_branch_name 將新分支合并到主分支
  • 分支合并存在沖突
    coding for conflicts
    git add ...
    git commit -m "some note"
    git push origin master
  • 分支合并,功能測試正常后,刪除分支
    git branch -d new_branch_name
  • 刪除遠(yuǎn)程分支,保留本地分支
    git push origin :new_branch_name
  • 替換本地改動
    git checkout -- filename 用暫存區(qū)的內(nèi)容替換工作區(qū)的內(nèi)容
    git checkout HEAD filename 用HEAD所指向的master分支中的內(nèi)容替換工作區(qū)和暫存區(qū)的內(nèi)容
    git reset HEAD filename 把暫存區(qū)的內(nèi)容撤銷掉放回工作區(qū)
    工作區(qū)、暫存區(qū)、版本庫原理圖.png
  • 了解本地倉庫的歷史
    git log
    git log --author=username 只看某一人的提交記錄
    git log --pretty=oneline 每條記錄只占一行輸出
    git log --name-status 查看哪些文件改動了
    git reflog 查看歷史命令,能看到每次提交的commit_id
  • 回退到歷史版本
    git reset --hard commit_id 回到commit_id指定的版本(過去/未來的版本)
  • 標(biāo)簽:用來記錄開發(fā)的一些關(guān)鍵時期,如版本發(fā)布、系統(tǒng)升級等。
    git tag <tagname> 打一個名為name的標(biāo)簽
    git tag <tagname> commit_id 根據(jù)commit_id打標(biāo)簽
    git tag -a <tagname> -m "some note" commit_id 打帶說明的標(biāo)簽
    git tag 查看所有標(biāo)簽
    git tag -d <tagname> 刪除標(biāo)簽
  • 暫存狀態(tài)
    git stash 把當(dāng)前工作現(xiàn)場“儲藏”起來,等以后恢復(fù)現(xiàn)場后繼續(xù)工作
    git stash list 回到暫存工作現(xiàn)場的分支后,查看工作現(xiàn)場
    git stash pop 恢復(fù)工作現(xiàn)場并刪除stash
    git stash apply 恢復(fù)工作現(xiàn)場,不刪除stash
    git stash drop 刪除stash
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • git常用命令 GIT常用命令備忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章閱讀 8,866評論 1 26
  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,829評論 4 54
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,848評論 9 163
  • Git是目前最流行的版本管理系統(tǒng),也是最先進(jìn)的分布式版本控制系統(tǒng)(distributed version cont...
    pro648閱讀 5,970評論 1 17
  • 心中的花開了, 我獨自呢喃, 時光恰好,陽光穿過窗欞, 誰面孔白皙如初見。 天空一無所有, 失了底色, 文藝的知覺...
    鶴公子mu閱讀 326評論 0 0

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