1、初次使用git必用命令
git config 第一次使用git或者剛安裝的git時(shí),使用此命令設(shè)置身份Name 和 Eamail 地址。并且每次提交時(shí)會(huì)使用此信息
git config --global user.name "用戶名" git config --global user.email 郵箱
git version 檢查當(dāng)前使用的git版本號(hào)
git version git -v
2、操作遠(yuǎn)程倉庫命令
git init 初始化倉庫創(chuàng)建新項(xiàng)目使用該命令進(jìn)行項(xiàng)目初始化,創(chuàng)建一個(gè)空白的存儲(chǔ)庫,用于存儲(chǔ)源代碼
git init
git clone 克隆存儲(chǔ)庫命令,將遠(yuǎn)程倉庫代碼克隆到本地
git clone 和git init區(qū)別
將尚未進(jìn)行版本控制的本地目錄轉(zhuǎn)換為 Git 倉庫;
從其它服務(wù)器克隆一個(gè)已存在的 Git 倉庫。
git clone ” 遠(yuǎn)程倉庫url “
git add 命令會(huì)把所有的代碼文件或修改后的文件添加到存儲(chǔ)庫中。此命令提供了添加文件和文件夾的不同選項(xiàng)。
git add * //添加所有文件到暫存區(qū) git add . //添加所有文件到暫存區(qū) git add -u . //-u 表示將已跟蹤文件中的修改和刪除的文件添加到暫存區(qū),不包括新增加的文件 git add -A . //-A 表示將所有的已跟蹤的文件的修改與刪除和新增的未跟蹤的文件都添加到暫存區(qū) git add *.html git add *.txt //添加某個(gè)文件類型到暫存區(qū),比如所有的 .html 文件 git add index/ //添加整個(gè)文件夾到暫存區(qū),比如index文件夾 git add index/index.html //添加某個(gè)文件或者某個(gè)文件夾中的某個(gè)文件到暫存區(qū) ,比如 index 下的 index.html 文件
git commit將工作區(qū)內(nèi)容或暫存區(qū)內(nèi)容提交到版本庫
# 將暫存區(qū)內(nèi)容提交到版本庫, 進(jìn)入 vi 命令界面輸入提交信息 git commit # 將某些已被跟蹤的文件提交到版本庫(包含工作區(qū)和版本庫) git commit [file1] [file2] [...] # 將暫存區(qū)內(nèi)容提交到版本庫, 無需進(jìn)入 vi 命令界面輸入提交信息 git commit -m [message] # 跳過 git add, 將所有已被跟蹤的文件更改提交到版本庫 git commit -am [message] # 使用一次新的commit, 替代上一次提交 # 如果代碼沒有任何新變化, 則用來改寫上一次commit的提交信息 git commit --amend -m [message]
git status 顯示暫存區(qū)文件和當(dāng)前 HEAD 提交之間有差異的路徑,工作區(qū)和暫存區(qū)文件之間有差異的路徑,以及工作區(qū)中沒有被 Git 跟蹤的路徑 (也沒有被 gitignore 忽略) 。
git status [<選項(xiàng)> …] [--] [<路徑名> …] //[ ] 表示可選,...表示可以有多項(xiàng)。
git branch命令主要用來處理跟分支有關(guān)系的功能,比如創(chuàng)建分支、刪除分支、查看本地分支、查看遠(yuǎn)程分支等
git branch //查看本地分支 git branch -v //查看本地分支+上次提交的信息 git branch -vv //查看本地分支+上次提交的信息+本地和遠(yuǎn)程分支的關(guān)系 git branch -vv -a //查看本地分支+上次提交的信息+本地和遠(yuǎn)程分支的關(guān)系+遠(yuǎn)程分支 (如果不想顯示提交的信息,也可以去掉-vv參數(shù)) git branch -r //只查看遠(yuǎn)程分支 git branch -d (branchName) //刪除本地分支 git push <主機(jī)名> -d <分支名>git push <主機(jī)名> --delete <分支名>git push <主機(jī)名> :<分支名> //刪除遠(yuǎn)程分支 git checkout (branchName) //切換本地分支 git branch (branchName) //創(chuàng)建本地分支git checkout -b (branchName) //創(chuàng)建本地分支并切換 git push <遠(yuǎn)程主機(jī)名> <本地分支名>:<遠(yuǎn)程分支名> //創(chuàng)建遠(yuǎn)程分支
git checkout 本意是檢出的意思,也就是將某次commit的狀態(tài)檢出到工作區(qū);所以它的過程是先將HEAD指向某個(gè)分支的最近一次commit,然后從commit恢復(fù)index,最后從index恢復(fù)工作區(qū)。
git checkout (branchName) git checkout -b (branchName)
3、git進(jìn)階
git remote 如果需要與遠(yuǎn)程倉庫鏈接,必須使用此命令。此命令會(huì)將本地存儲(chǔ)庫連接到遠(yuǎn)程。
git remote git remote -v | --verbose git remote add url git remote rm name git remote rename old_name new_name
git push令用于從將本地的分支版本上傳到遠(yuǎn)程并合并
git push <遠(yuǎn)程主機(jī)名> <本地分支名>:<遠(yuǎn)程分支名> //將本地的分支版本上傳到遠(yuǎn)程并合并 git push <遠(yuǎn)程主機(jī)名> <本地分支名> //如果本地分支名與遠(yuǎn)程分支名相同,則可以省略冒號(hào) 以下命令將本地的 master 分支推送到 origin 主機(jī)的 master 分支 $ git push origin master === git push origin master:master 如果本地版本與遠(yuǎn)程版本有差異,但又要強(qiáng)制推送可以使用 --force 參數(shù) $ git push --force origin master 刪除主機(jī)的分支可以使用 --delete 參數(shù),以下命令表示刪除 origin 主機(jī)的 master 分支 $ git push origin --delete master
git push --set-upstream先把本地的當(dāng)前分支推送到遠(yuǎn)程倉庫origin的main分支,然后把本地的當(dāng)前分支關(guān)聯(lián)到遠(yuǎn)程倉庫origin的main分支
git push --set-upstream
git fetch是將遠(yuǎn)程主機(jī)的最新內(nèi)容拉到本地,用戶在檢查了以后決定是否合并到工作本機(jī)分支中
git fetch <遠(yuǎn)程主機(jī)名> //這個(gè)命令將某個(gè)遠(yuǎn)程主機(jī)的更新全部取回本地 如果只想取回特定分支的更新,可以指定分支名 git fetch <遠(yuǎn)程主機(jī)名> <分支名> //注意之間有空格
git pull取回遠(yuǎn)程主機(jī)某個(gè)分支的更新,再與本地的指定分支合并
git pull [options] [[ …]] $ git pull <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名> 要取回origin主機(jī)的next分支,與本地的master分支合并,需要寫成下面這樣 $ git pull origin next:master 如果遠(yuǎn)程分支(next)要與當(dāng)前分支合并,則冒號(hào)后面的部分可以省略。上面命令可以簡(jiǎn)寫為 $ git pull origin next 上面命令表示,取回origin/next分支,再與當(dāng)前分支合并。實(shí)質(zhì)上,這等同于先做git fetch,再執(zhí)行g(shù)it merge。 $ git fetch origin $ git merge origin/next 在某些場(chǎng)合,Git會(huì)自動(dòng)在本地分支與遠(yuǎn)程分支之間,建立一種追蹤關(guān)系(tracking)。比如,在git clone的時(shí)候,所有本地分支默認(rèn)與遠(yuǎn)程主機(jī)的同名分支,建立追蹤關(guān)系,也就是說,本地的master分支自動(dòng)”追蹤”origin/master分支。Git也允許手動(dòng)建立追蹤關(guān)系 $ git branch --set-upstream master origin/next 上面命令指定master分支追蹤origin/next分支。如果當(dāng)前分支與遠(yuǎn)程分支存在追蹤關(guān)系,git pull就可以省略遠(yuǎn)程分支名 $ git pull origin 上面命令表示,本地的當(dāng)前分支自動(dòng)與對(duì)應(yīng)的origin主機(jī)”追蹤分支”(remote-tracking branch)進(jìn)行合并。如果當(dāng)前分支只有一個(gè)追蹤分支,連遠(yuǎn)程主機(jī)名都可以省略 $ git pull 上面命令表示,當(dāng)前分支自動(dòng)與唯一一個(gè)追蹤分支進(jìn)行合并。如果合并需要采用rebase模式,可以使用–rebase選項(xiàng)。 $ git pull --rebase <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名> git fetch和git pull的區(qū)別 git fetch:相當(dāng)于是從遠(yuǎn)程獲取最新版本到本地,不會(huì)自動(dòng)合并。 git pull:相當(dāng)于是從遠(yuǎn)程獲取最新版本并merge到本地
git stash會(huì)把所有未提交的修改(包括暫存的和非暫存的)都保存起來,用于后續(xù)恢復(fù)當(dāng)前工作目錄
git stash save "test-cmd-stash" //存儲(chǔ)一個(gè)test-cmd-stash到本地存儲(chǔ)列表git stash list //查看緩存列表 git stash pop //恢復(fù)之前緩存的工作目錄,這個(gè)指令將緩存堆棧中的第一個(gè)stash刪除,并將對(duì)應(yīng)修改應(yīng)用到當(dāng)前的工作目錄下 git stash apply //將緩存堆棧中的stash多次應(yīng)用到工作目錄中,但并不刪除stash拷貝git stash list //查看現(xiàn)有stash git stash drop //移除stash git stash show //查看指定stash的diff
git log 查看所有之前的提交,最近的提交出現(xiàn)在最前面。
git log [] [ .. ] [[--] ...]
常用參數(shù)
-p:
按補(bǔ)丁格式顯示每個(gè)更新的差異,比下一條--stat命令信息更全。
--stat:
顯示每次提交修改文件的統(tǒng)計(jì)信息,每個(gè)提交都列出了修改過的文件,以及其中添加和移除的行數(shù),并在最后列出所有增減行數(shù)小計(jì)。
--shortstat:
只顯示--stat中最后的行數(shù)添加、修改、刪除的統(tǒng)計(jì)。
--name-only:
僅在提交信息后,顯示已修改的文件清單。
--name-status:
顯示新增、修改、刪除的文件清單。
--abbrev-commit:
僅顯示SHA-1校驗(yàn)和的前幾個(gè)字符,而非所有的40個(gè)字符。
--relative-date:
使用較短的相對(duì)時(shí)間,而不是完整格式顯示日期(比如“2 weeks ago”)。
--graph:
在日志旁以ASCII圖形顯示分支與合并歷史。
--online:
列表的形式查看歷史版本記錄,--pretty=oneline --abbrev-commit合用的簡(jiǎn)寫。
--pretty:
使用其他格式顯示歷史提交信息。
可用的選項(xiàng)包括oneline、short、full、fuller和format(用來定義自己的格式)
git shortlog 命令會(huì)顯示來自 git log 命令的摘要。如果只對(duì)簡(jiǎn)短的摘要感興趣,此命令就非常有用了。
git shortlog [] [ ] [[--] …] git log --pretty=short | git shortlog [ ]
4、git高級(jí)命令
git rebase 可以提取我們?cè)贏分支上的改動(dòng),然后應(yīng)用在B分支的代碼上
git rebase -i [startpoint] [endpoint] //-i的意思是--interactive,即彈出交互式的界面讓用戶編輯完成合并操作
gitrebase和git rebase
git merge:當(dāng)需要保留詳細(xì)的合并信息的時(shí)候建議使用,特別是需要將分支合并進(jìn)入master分支時(shí)
git rebase:當(dāng)發(fā)現(xiàn)自己修改某個(gè)功能時(shí),頻繁進(jìn)行了git commit提交時(shí),發(fā)現(xiàn)其實(shí)過多的提交信息沒有必要時(shí)使用,分支多,內(nèi)容多時(shí)也可以考慮使用
git bisect 命令可以幫助查找糟糕的提交。
git bisect
git cherry-pick"挑揀"提交,它會(huì)獲取某一個(gè)分支的單筆/多筆提交,并作為一個(gè)新的提交引入到你當(dāng)前分支上
git cherry-pick//將指定的提交(commit)應(yīng)用于其他分支 轉(zhuǎn)移多個(gè)提交 git cherry-pick 轉(zhuǎn)移到另一個(gè)代碼庫 git remote add target git://gitUrl 上面命令添加了一個(gè)遠(yuǎn)程倉庫target。然后,將遠(yuǎn)程代碼抓取到本地。 git fetch target 上面命令將遠(yuǎn)程代碼倉庫抓取到本地。接著,檢查一下要從遠(yuǎn)程倉庫轉(zhuǎn)移的提交,獲取它的哈希值 git log target/master 最后,使用git cherry-pick命令轉(zhuǎn)移提交 git cherry-pick
git blame追溯一個(gè)指定文件的歷史修改記錄
git blame [filename] git blame的具體顯示格式是 commit ID (代碼提交作者 提交時(shí)間 代碼位于文件中的行數(shù)) 實(shí)際代碼
git tag主要用于發(fā)布版本的管理,一個(gè)版本發(fā)布之后,我們可以為git打上 v.1.0.1 v.1.0.2 ...這樣的標(biāo)簽
git tag//創(chuàng)建本地tag git push origin //推送到遠(yuǎn)程倉庫 若存在很多未推送的本地標(biāo)簽,你想一次全部推送的話: git push origin --tags 以上是基于本地當(dāng)前分支的最后的一個(gè)commit 創(chuàng)建的 tag ,但是如果不想以最后一個(gè),只想以某一個(gè)特定的提交為tag ,也是可以的,只要你知道commit 的id。 git log --pretty=oneline //查看當(dāng)前分支的提交歷史 里面包含 commit id git tag -a git show 查看本地所有 tag: git tag 或者 git tag -l 查看遠(yuǎn)程所有 tag: git ls-remote --tags origin 本地 tag 的刪除: git tag -d 遠(yuǎn)程 tag 的刪除: git push origin :refs/tags/
git verify-commit使用 GPG、SSH 或 S/MIME,您可以在本地對(duì)標(biāo)簽和提交進(jìn)行簽名
git verify-commit
git verify-tag檢查標(biāo)簽的 GPG 簽名
git verify-tag [--format=] …
git diff比較文件的差異
情景一:查看工作區(qū)和暫存區(qū)之間文件的差異 git diff 命令,默認(rèn)查看的就是 工作區(qū) 和 暫存區(qū)之間文件的差異 1.git diff : 查看工作區(qū)和暫存區(qū)之間所有的文件差異 2.git diff 3.git diff 【注意】:查看具體文件的時(shí)候 情景二:查看工作區(qū)和版本庫之間文件的差異git diff HEAD : 查看工作區(qū)與最新版本庫之間的所有的文件差異 git diff 具體某個(gè)版本 : 查看工作區(qū)與具體某個(gè)提交版本之間的所有的文件差異 git diff HEAD git diff HEAD git diff 具體某個(gè)版本 git diff 具體某個(gè)版本 情景三:查看暫存區(qū)和版本庫之間文件的差異git diff git diff git diff git diff 情景四:查看不同版本庫之間文件的差異git diff 版本號(hào)1 版本號(hào)2 :查看兩個(gè)版本之間的差異 git diff 版本號(hào)1 版本號(hào)2 git diff 版本號(hào)1 版本號(hào)2 git diff 版本號(hào)1 版本號(hào)2 src : 查看兩個(gè)版本之間的文件夾 src 的差異
git citool 基于 Tcl / Tk 的圖形界面用于查看修改后的文件,將它們放入索引,輸入提交消息并將新提交記錄到當(dāng)前分支。該接口是交互程序較少的替代git commit方案
git citool
-
命令
+關(guān)注
關(guān)注
5文章
687瀏覽量
22053 -
源代碼
+關(guān)注
關(guān)注
96文章
2945瀏覽量
66795 -
Git
+關(guān)注
關(guān)注
0文章
201瀏覽量
15783
原文標(biāo)題:git的必會(huì)的基本操作
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論