初始化一個git倉庫,使用git init 命令
將文件添加到git倉庫,分兩步
git add <file>,注意背镇,可反復(fù)多次使用,添加多個文件
git commit -m <message>
要隨時(shí)掌握工作區(qū)的狀態(tài)泽裳,使用git status 命令
如果 git status 告訴你有文件被修改過瞒斩,用 git diff <file>可以查看修改內(nèi)容
git log 命令顯示從最近到最遠(yuǎn)的提交日志;如果嫌輸出信息太多涮总,可以加上
--pretty=oneline參數(shù)
- HEAD 指向 的版本就是當(dāng)前版本胸囱, 因此,Git 允許我們在版本的歷史之間穿梭瀑梗,使用命令git reset --hard [commit_id]
- 穿梭前 用git log可以查看提交歷史烹笔,以便確定要回退到那個版本。
-
要重新返回未來夺克,用 git reflog 查看命令歷史箕宙,以便確定要回到未來的哪個版本
image.png
image.png
每次修改,如果不用git add到暫存區(qū)铺纽,就不會加入到commit中
- 場景1:當(dāng)你改亂了工作區(qū)某個文件的內(nèi)容柬帕,想直接丟棄工作區(qū)的修改時(shí),用命令git checkout -- file
- 場景2:當(dāng)你不但改亂了工作區(qū)某個文件的內(nèi)容狡门,還添加到了暫存區(qū)時(shí)陷寝,想丟棄修改,分兩步其馏,第一步 git reset HEAD<file>凤跑,就回到了場景1,第二步按場景1操縱叛复。
- 場景3:已經(jīng)提交了不合適的修改到版本庫時(shí)仔引,想要撤銷本次提交,參考版本回退一節(jié)褐奥,不過前提是沒有推送到遠(yuǎn)程庫
- 命令git rm 用于刪除一個文件咖耘。如果一個文件已經(jīng)被提交到版本庫,那么你永遠(yuǎn)不用擔(dān)心誤刪撬码,但是要小心儿倒,你只能恢復(fù)文件到最新版本,你會丟失最近一次提交后你修改的內(nèi)容
查看當(dāng)前關(guān)聯(lián)遠(yuǎn)程庫
git remote -v
刪除當(dāng)前配置的遠(yuǎn)程庫
git remote rm origin
要關(guān)聯(lián)一個遠(yuǎn)程庫呜笑,使用命令
git remote add orgin git@server-name:path/repo-name.git
eg : git remote add orgin git@github.com:github賬號/新建的倉庫名
關(guān)聯(lián)后夫否,使用命令git push -u origin master 第一次推送master分支的所有內(nèi)容彻犁;
此后,每次本地提交后凰慈,只要必要汞幢,就可以使用命令git push origin master推送最新修改了
推送到遠(yuǎn)程倉庫
- git remote add origin git@github.com:PonyCrossingTheRiver/learngit.git
- git push -u origin master
第一次時(shí)加上參數(shù) -u 以后就不需要這個參數(shù)了
克隆遠(yuǎn)程倉庫
git clone git@github.com:PonyCrossingTheRiver/gitskills.git
git鼓勵大量使用分支
- 查看分支 :
git branch - 創(chuàng)建分支:
git branch <name> - 切換分支:
git checkout <name> 或者 git switch <name> - 創(chuàng)建+切換分支:
git checkout -b <name> 或者 git switch -c <name>(switch命令在git 新版本才會有) - 合并某分支到當(dāng)前分支 :
git merge <name> - 如果要強(qiáng)制禁用Fast forward模式,Git就會在merge時(shí)生成一個新的commit溉瓶,這樣急鳄,從分支歷史上就可以看出分支信息。
git merge --no-ff -m "merge with no-ff" dev - 刪除分支 git branch -d <name>
查看分支合并圖
$ git log --graph --pretty=oneline --abbrev-commit
開發(fā)一個新feature堰酿,最好新建一個分支疾宏;
如果要丟棄一個沒有被合并過的分支,可以通過
git branch -D <name>強(qiáng)行刪除触创。
標(biāo)簽
- 命令git tag <tagname>用于新建一個標(biāo)簽坎藐,默認(rèn)為HEAD,也可以指定一個commit id哼绑;
- 命令git tag -a <tagname> -m "blablabla..." commitId可以指定標(biāo)簽信息岩馍;
- 命令git tag可以查看所有標(biāo)簽。
命令git push origin <tagname>可以推送一個本地標(biāo)簽抖韩;
命令git push origin --tags可以推送全部未推送過的本地標(biāo)簽蛀恩;
命令git tag -d <tagname>可以刪除一個本地標(biāo)簽;
命令git push origin :refs/tags/<tagname>可以刪除一個遠(yuǎn)程標(biāo)簽茂浮。
.gitignore 文件
忽略某些文件時(shí)双谆,需要編寫.gitignore;
.gitignore文件本身要放到版本庫里席揽,并且可以對.gitignore做版本管理顽馋!
配置別名
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"