基本命令
git init 初始化一個(gè)本地倉(cāng)庫(kù)
git status 顯示暫存區(qū)與倉(cāng)庫(kù)區(qū)的差異
git log 查看提交記錄
git show commit 查看某次提交的詳細(xì)(commit為commit 后的那一串)
git show 查看最新一次提交
git add --all file path 添加文件到本地庫(kù)(file path為文件路徑)
git commit -m“describe” 提交到本地庫(kù)(describe為提交說(shuō)明)
git commit -a -m"describe" 添加所有到本地并提到本地
git pull 拉取遠(yuǎn)程庫(kù)最新文件
git push 推送到遠(yuǎn)程倉(cāng)庫(kù)
git merge branchName 合并(把branchName 分支合并到當(dāng)前分支)
git branch 查看所有分支
git checkout filepath 假如filepath文件被刪除則會(huì)回復(fù)腊瑟,如果被修改則恢復(fù)之前的狀態(tài)(預(yù)測(cè)是這樣)
git checkout branchName (切換到branchName分支)
git checkout -b branchName(新建一個(gè)branchName分支卷雕,如果branchName分支已經(jīng)存在會(huì)提示“ A branch named 'test2' already exists.”效果等同于 git branch branchName;git checkout branchName)
git branch -d branchName 刪除branchName 分支(不能刪除當(dāng)前分支尔觉,需要在其他分支刪除branchName分支)
git commit --amend 修改已經(jīng)提交的日志
git show commit fileName 查看某次commit中具體某個(gè)文件的修改战得,沒(méi)有修改就只有文件名
git rm -r --cached . GIT 在提交之前撤銷add操作使用
git diff branchName1 branchName2 --stat 顯示兩個(gè)分支所有有差異的文件列表
git diff branchName1 branchName2 顯示所有有差異的文件的詳細(xì)差異
git diff branchName1 branchName2 filepath 顯示指定文件filepath詳細(xì)差異
git status 先看一下add 中的文件
git reset HEAD 如果后面什么都不跟的話 就是上一次add 里面的全部撤銷了
git reset HEAD XXX/XXX/XXX.java 就是對(duì)某個(gè)文件進(jìn)行撤銷了
如果不小心 弄錯(cuò)了 git add后 萄唇, 又 git commit 了峡谊。(還沒(méi)push)
先使用
git log 查看節(jié)點(diǎn)
然后
git reset commitId
git reset commit_id (回退到上一個(gè) 提交的節(jié)點(diǎn) 代碼還是原來(lái)你修改的)
git reset –hard commit_id (回退到上一個(gè)commit節(jié)點(diǎn)趾撵, 代碼也發(fā)生了改變,變成上一次的)
還原已經(jīng)提交的修改
此次操作之前和之后的commit和history都會(huì)保留施籍,并且把這次撤銷作為一次最新的提交
git revert HEAD 撤銷前一次 commit
git revert HEAD^ 撤銷前前一次 commit
git revert commit-id (撤銷指定的版本居扒,撤銷也會(huì)作為一次提交進(jìn)行保存)
git revert是提交一個(gè)新的版本,將需要revert的版本的內(nèi)容再反向修改回去丑慎,版本會(huì)遞增喜喂,不影響之前提交的內(nèi)容。
git 代碼暫存指令:git stash
git 代碼暫存列表信息:git stash list
git 代碼應(yīng)用暫存代碼:git stash apply stash@{1}
git stash clear 清除暫存
git diff hash1 hash2 --stat 對(duì)比兩次提交的不同
clear 清屏
source tree Git界面化工具
git log 中文顯示亂碼
git config --global core.quotepath false;
git config --global gui.encoding utf-8;
git config --global i18n.commit.encoding utf-8;
git config --global i18n.logoutputencoding utf-8;
export LESSCHARSET=utf-8;
git 解決 fatal: Out of memory, malloc failed (tried to allocate 524288000 bytes ) 問(wèn)題
git config http.postBuffer 0
git config --global http.postBuffer 0
每次都要輸密碼問(wèn)題
git config credential.helper store
這里沒(méi)有--global意思是指只對(duì)這個(gè)倉(cāng)庫(kù)生效竿裂,建議以后都不要加--global讓代碼配置以倉(cāng)庫(kù)為單位存儲(chǔ)就好玉吁,設(shè)置成全局不靈活打開(kāi).git文件夾的.config文件,會(huì)發(fā)現(xiàn)多了兩行
[credential]
helper=storegit
push 到遠(yuǎn)程倉(cāng)庫(kù)腻异,輸入用戶名和密碼进副,注意要輸入正確的
再次運(yùn)行g(shù)it push 就不用輸入用戶名和密碼了在用戶主目錄文件夾多了一個(gè)文件git-credentials,這個(gè)就是用來(lái)存儲(chǔ)用戶名和密碼的
也可以在第2步時(shí)指定此文件文件名和存儲(chǔ)位置
--file ~/git-credentials
~代表當(dāng)前目錄
也可以使用創(chuàng)建windows系統(tǒng)環(huán)境變量的方式悔常,道理都是一樣影斑,讓系統(tǒng)知道去哪里找這個(gè)用戶名和密碼就好
身份驗(yàn)證失敗给赞,重新驗(yàn)證 控制面板\用戶帳戶\憑據(jù)管理器配置憑證
git config --system --unset credential.helper
之后再進(jìn)行g(shù)it操作時(shí),彈出用戶名密碼窗口矫户,輸入即可
打印所有標(biāo)簽 git tag
打印符合檢索條件的標(biāo)簽 git tag -l 1.*.*
查看對(duì)應(yīng)標(biāo)簽狀態(tài) git checkout 1.0.0
創(chuàng)建輕量標(biāo)簽 git tag 1.0.0-light
創(chuàng)建帶備注標(biāo)簽(推薦) git tag -a 1.0.0 -m "這是備注信息"
針對(duì)特定commit版本SHA創(chuàng)建標(biāo)簽 git tag -a 1.0.0 0c3b62d -m "這是備注信息"
刪除標(biāo)簽(本地) git tag -d 1.0.0
將本地標(biāo)簽發(fā)布到遠(yuǎn)程倉(cāng)庫(kù) 發(fā)送所有 git push origin --tags
指定版本發(fā)送 git push origin 1.0.0
刪除遠(yuǎn)程倉(cāng)庫(kù)對(duì)應(yīng)標(biāo)簽 // Git版本 > V1.7.0 git push origin --delete 1.0.0 // 舊版本Git git push origin :refs/tags/1.0.0
如指定關(guān)鍵字為“init”的所有提交
git log --grep=init
篩選查看日志
git log --since="July 7" 查7月7號(hào)之后的log
git log --before="July 7"查7月7號(hào)之前的log
git log --author="作者" 只看這個(gè)人提交的
git log --pretty=oneline 單行顯示提交id和日志
git log --pretty=format:"%h - %an, %ar : %s"格式化顯示提交日志
選項(xiàng)
說(shuō)明
%H 提交的完整哈希值
%h 提交的簡(jiǎn)寫哈希值
%T 樹(shù)的完整哈希值
%t 樹(shù)的簡(jiǎn)寫哈希值
%P 父提交的完整哈希值
%p 父提交的簡(jiǎn)寫哈希值
%an 作者名字
%ae 作者的電子郵件地址
%ad 作者修訂日期(可以用--date =選項(xiàng)來(lái)定制格式)
%ar 作者修訂日期片迅,按多久以前的方式顯示
%cn 提交者的名字
%ce 提交者的電子郵件地址
%cd 提交日期
%cr 提交日期(距今多長(zhǎng)期)
%s 提交說(shuō)明
git log dev ^master 查看 dev 有,而 master 中沒(méi)有的
git log master..dev 查看 dev 中比 master 中多提交了哪些內(nèi)容
git log dev...master 不知道誰(shuí)提交的多誰(shuí)提交的少皆辽,單純想知道有什么不一樣
git log --left-right dev...master在上述情況下柑蛇,再顯示出每個(gè)提交是在哪個(gè)分支上注意 commit 后面的箭頭,根據(jù)我們?cè)?–left-right dev…master 的順序驱闷,左箭頭 < 表示是 dev 的耻台,右箭頭 > 表示是 master的。
在 git commit 的時(shí)候會(huì)出現(xiàn) MERGE_HEAD 沖突:
error: You have not concluded your merge (MERGE_HEAD exists).
hint: Please, commit your changes before merging.
fatal: Exiting because of unfinished merge.
基本上遗嗽,使用保留本地修改的方式就可以解決這個(gè)沖突:
git merge --abort
git reset --merge
git pull