Git學(xué)習(xí)筆記

寫在前面
  • 本文檔是學(xué)習(xí) 廖雪峰Git教程 后所做的筆記,教程幫忙很大资昧,非常感謝居夹!
  • 本筆記主要記錄了教程中所用的命令,概念內(nèi)容不包括在內(nèi)管行。
  • 建議看完教程后再看Git官網(wǎng)的 Pro Git 一書厨埋。
  • 最后附上本人的 GitHub ,感謝撥冗翻閱拙作,敬請斧正捐顷。
創(chuàng)建版本庫
git init  #初始化所在目錄為Git倉庫

初始化的目錄可以不為空

添加文件到版本庫
git add <file> ...  #添加文件到暫存區(qū)(stage)
        -f <file> ...  #強(qiáng)制添加到暫存區(qū)(可用于添加忽略文件)
git commit -m "提交說明"  #從暫存區(qū)提交到版本庫

git add 命令可多次執(zhí)行荡陷,然后commit一次雨效。

時光機(jī)穿梭
  • 查看狀態(tài)、差異
git status  #查看倉庫當(dāng)前狀態(tài)
git diff [file]  #比較工作區(qū)和暫存區(qū)的差異
git diff --cached [file]  #比較暫存區(qū)和版本庫的差異
git diff HEAD -- [file]  #比較工作區(qū)和版本庫的差異
  • 版本切換
git log  #查看提交歷史
git log -1  #查看最后一次提交信息(-2 則是最后兩次)
git log --pretty=oneline  #單行格式顯示提交歷史
        --graph  #顯示分支合并圖
        --abbrev-commit  #簡寫的commit_id
git reflog  #查看所有操作記錄废赞,包括刪除的commit記錄
git reset --hard HEAD^  #回退到上一版本
# HEAD 表當(dāng)前版本徽龟, HEAD^ 表上一版本,HEAD^^ 表上兩版本唉地,HEAD~99 表上99版本据悔。
git reset --hard commit_id  #切換到指定版本

Git跟蹤管理的是修改,而非文件

  • 撤銷修改
git checkout -- <file>  #撤銷工作區(qū)的修改
git reset HEAD <file>  #撤銷暫存區(qū)的修改

若已commit但沒提交到遠(yuǎn)程庫耘沼,可用版本回退進(jìn)行撤銷

  • 刪除文件

    • 方法一:工作區(qū)刪除文件屠尊,然后正常提交
    rm <file> ...  #工作區(qū)刪除
    git add <file> ...  #將修改提交至?xí)捍鎱^(qū)
    git commit -m "說明"  #提交到版本庫
    
    • 方法二:直接命令刪除工作區(qū)和暫存區(qū),然后提交版本庫
    git rm <file> ...  #刪除工作區(qū)和暫存區(qū)文件
    git commit -m "說明"  #提交到版本庫
    

刪除耕拷、增加文件也都屬于修改

遠(yuǎn)程倉庫
  • 創(chuàng)建SSH Key
ssh-keygen -t rsa -C "youremail@example.com"  #生成的Key在家目錄.ssh文件夾里面讼昆,pub后綴是公鑰,另一個是私鑰骚烧。
  • 添加遠(yuǎn)程庫
git remote add origin git@server-name:path/repo-name.git  #添加遠(yuǎn)程倉庫
git remote  #查看遠(yuǎn)程庫信息
           -v  #顯示詳細(xì)信息
git push -u origin <branch>  #推送并關(guān)聯(lián)指定分支到遠(yuǎn)程庫

除第一次關(guān)聯(lián)浸赫,之后push不用加-u選項(xiàng)

  • 從遠(yuǎn)程庫克隆
git clone git@server-name:path/repo-name.git  #將遠(yuǎn)程倉庫克隆到當(dāng)前目錄
git pull  #拉取遠(yuǎn)程倉庫內(nèi)容同時自動merge
git fecth #從遠(yuǎn)程獲取最新版本到本地,不會自動merge

-git fetchgit pull的區(qū)別:在實(shí)際使用中赃绊,git fetch更安全一些因?yàn)樵?code>merge前既峡,我們可以查看更新情況(git log,git diff),然后再決定是否合并

分支管理
git branch <branch>  #創(chuàng)建分支
git checkout <branch>  #切換到指定分支
git checkout -b <branch>  #創(chuàng)建并切換到該分支
git branch  #查看現(xiàn)有分支
git branch -d <branch>  #刪除指定分支
git branch --set-upstream <branch_local> <branch_remote>  #指定本地分支與遠(yuǎn)程分支的鏈接
git merge <branch>  #合并指定分支到當(dāng)前分支
          --no-ff <branch>  #禁用快速合并
git merge --no-ff -m "提交說明" <branch>  #普通方式合并碧查,并附提交說明
git stash  #保存當(dāng)前工作環(huán)境(包括工作區(qū)和暫存區(qū))
git stash list  #查看保存的工作列表
git stash apply [stash@{X}]  #恢復(fù)工作狀態(tài)运敢,但不刪除stash內(nèi)容
git stash pop [stash@{X}]  #恢復(fù)工作狀態(tài),并刪除stash內(nèi)容
git stash drop [stash@{X}]  #刪除stash內(nèi)容
git branch -D <branch>  #強(qiáng)制刪除分支(常用于未合并的分支)

HEAD不是直接指向提交點(diǎn)忠售,而是指向分支传惠,分支再指向提交點(diǎn)

  • 多人協(xié)作
##error: failed to push some refs to ...
1. git pull 遠(yuǎn)程庫
2. 解決沖突(若有),再push
  • 分支管理策略圖
標(biāo)簽管理
git tag  #查看現(xiàn)有標(biāo)簽
git tag <tag_name>  #給當(dāng)前所在的commit打標(biāo)簽
git tag <tag_name> <commit_id>  #給指定commit打標(biāo)簽
git tag -a <tag_name> -m "標(biāo)簽說明" <commit_id>  #給指定commit打標(biāo)簽稻扬,并附說明
        -s <tag_name> -m "標(biāo)簽說明" <commit_id>  #用gpg私鑰簽名
        -d <tag_name>  #刪除標(biāo)簽
git show <tag_name>  #顯示標(biāo)簽信息
git push origin <tag_name>  #推送標(biāo)簽到遠(yuǎn)程庫
git push origin --tags  #推送所有未推送的標(biāo)簽到遠(yuǎn)程庫
git push origin :refs/tags/<tag_name>  #刪除遠(yuǎn)程標(biāo)簽(先刪除本地卦方,再使用該命令刪除)
自定義Git
git config --global user.name "you_name"  #設(shè)置全局用戶名
git config --global user.email "email@example.com"  #設(shè)置全局郵箱
git config --global color.ui true  #設(shè)置全局顏色顯示
git config --global alias.<alias_name> <'command_name'>  #設(shè)置別名
  • 忽略特殊文件

    1. 工作區(qū)創(chuàng)建.gitignore文件
    2. 內(nèi)容舉例,如下:
    #Windows:
    Thumbs.db
    ehthumbs.db
    Desktop.ini
    
    #Python:
    *.py[cod]
    *.so
    *.egg
    *.egg-info
    dist
    build
    #My configurations:
    db.ini
    deploy_key_rsa
    
git check-ignore -v <file>  #查看忽略該文件的規(guī)則

規(guī)則有錯時常用上述命令查找定位

  • 配置別名列表
git config --global alias.confg 'config --global'
git confg alias.st status
git confg alias.co checkout
git confg alias.ci commit
git confg alias.br branch
git confg alias.unstage 'reset HEAD'
git confg alias.last 'log -1'
git confg alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泰佳,一起剝皮案震驚了整個濱河市盼砍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逝她,老刑警劉巖浇坐,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異黔宛,居然都是意外死亡近刘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跌宛,“玉大人,你說我怎么就攤上這事积仗〗校” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵寂曹,是天一觀的道長哎迄。 經(jīng)常有香客問我,道長隆圆,這世上最難降的妖魔是什么漱挚? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮渺氧,結(jié)果婚禮上旨涝,老公的妹妹穿的比我還像新娘。我一直安慰自己侣背,他們只是感情好白华,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贩耐,像睡著了一般弧腥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上潮太,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天管搪,我揣著相機(jī)與錄音,去河邊找鬼铡买。 笑死更鲁,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奇钞。 我是一名探鬼主播岁经,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼悴能,長吁一口氣:“原來是場噩夢啊……” “哼须教!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起餐塘,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤纠亚,失蹤者是張志新(化名)和其女友劉穎塘慕,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒂胞,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡图呢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛤织。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡赴叹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出指蚜,到底是詐尸還是另有隱情乞巧,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布摊鸡,位于F島的核電站绽媒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏免猾。R本人自食惡果不足惜是辕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望猎提。 院中可真熱鬧获三,春花似錦、人聲如沸锨苏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚓炬。三九已至松逊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肯夏,已是汗流浹背经宏。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留驯击,地道東北人烁兰。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像徊都,于是被迫代替她去往敵國和親沪斟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

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