Git 常用命令大全

分布式版本管理工具

  • git屬于分布式
  • svn集中式

git安裝

git初始化一個(gè)倉(cāng)庫(kù)

  • 其實(shí)就是創(chuàng)建了一個(gè).git隱藏目錄
  • 命令:git init;初始化 有一個(gè).get 隱藏文件夾
    • 想在哪個(gè)目錄創(chuàng)建.git目錄,就是哪個(gè)目錄打開(kāi)工具然后寫(xiě)命令.
    • 一般是在項(xiàng)目的根目錄執(zhí)行這個(gè)命令.
    • 查看文件 ls 或者 ls -a

配置信息

  • 配置用戶名 : git config user.name "testName"
  • 配置郵箱 : git config user.email "test@sina.com"
  • 查看配置信息: git config --list

把代碼提交到倉(cāng)庫(kù)中

  • 1.先把代碼添加到暫存區(qū)(就相當(dāng)于放到倉(cāng)庫(kù)門(mén)口)

    • 命令:git add 文件路徑
    • 示例:git add ./reademe.md
    • 可以使用git add .這個(gè)命令,批量把當(dāng)前目錄下所有修改過(guò)的文件添加到暫存區(qū)。
  • 2.把暫存區(qū)的文件提交倉(cāng)庫(kù)里

    • 命令: git commit -m "注釋"
    • 示例: git commit -m "我們添加了一個(gè)新的功能"
    • -m 表示指定一個(gè)字符串,作為提交的說(shuō)明(相當(dāng)于注釋);
  • 合并add 與commit 命令

    • git commit -a -m "這是使用合并添加與提交的操作";
    • 這里-a參數(shù)表明把所有修改后的文件一起添加到暫存區(qū).(只是對(duì)修改后的文件有效,對(duì)于新添加的文件沒(méi)有作用)

查看工作區(qū)狀態(tài)

  • 命令:git status

比對(duì)文件差異

  • 命令: git diff
    • 用來(lái)比較工作區(qū)內(nèi)容與最近一次提交的內(nèi)容的區(qū)別
    • 如果暫存區(qū)沒(méi)有文件,就會(huì)將工作與代碼與最近一次提交對(duì)比
  • 命令:git diff --cached 比較暫存區(qū)的文件和倉(cāng)庫(kù)中文件的區(qū)別
  • 對(duì)比之前某兩次提交的文件的差異
    • 命令:git diff [版本號(hào)1] [版本號(hào)2] [想比較的文件路徑]

查看日志

  • 命令:git log,可以查看每一次提交的日志
  • 命令:git log --oneline 表示使用簡(jiǎn)潔的形式輸出提交日志

版本回退

  • 命令:git reset --hard Head~1

    • 這是將代碼回退到上上一次提交時(shí)的狀態(tài)
  • 命令:git reset --hard Head~2

    • 回退到上上上次
  • 命令:git reset --hard Head~0

    • 回退到上次提交時(shí)的狀態(tài),~0可以省略
  • 命令:git reset --hard 版本號(hào)

    • 通過(guò)每次提交時(shí)生成的版本號(hào)來(lái)回退版本
  • 通過(guò)git reflog命令可以查看之前所有版本切換的操作記錄,可以通過(guò)這個(gè)命令得到的版本號(hào)回退到指定的版本。

創(chuàng)建分支

  • 命令:git branch [分支名]
    • 創(chuàng)建一個(gè)新分支 分支名一般是 自己姓名的拼音或首字母+需求號(hào)
  • 命令:git branch
    • 查看當(dāng)前所有的分支

切換分支

  • 命令:git checkout [分支名]

    • 切換分支后可以在切換后的分支中進(jìn)行正常的操作

    創(chuàng)建和切換合在一起操作:'git checkout -b [分支名]'

合并分支

  • 命令:git merge [分支名]
    • 合并分支前先切換到主分支 master 然后在合并
    • git會(huì)將指定的分支合并到當(dāng)前分支.

刪除分支

  • 命令:git branch -d [分支名]
    • 刪除指定分支,-d參數(shù)表示要執(zhí)行刪除操作

git提交中的沖突

  • 如果git不能自動(dòng)合并分支,就會(huì)有沖突,我們需要手動(dòng)解決沖突,然后再次提交
  • 同一個(gè)文件的同一行在兩個(gè)分支中不一樣

github

github與git

  • git 版本管理工具
  • github 就是一個(gè)網(wǎng)站,只是這個(gè)網(wǎng)站提供git服務(wù)器的功能

上傳代碼到git服務(wù)器(push)

  • 命令:git push [遠(yuǎn)程服務(wù)器地址] [遠(yuǎn)程服務(wù)器的分支]

    • 示例:git push https://github.com/xxxxxxx.git master
  • 上傳時(shí)可以使用一些簡(jiǎn)化的命令

    • 將遠(yuǎn)程服務(wù)器地址寫(xiě)成變量的形式
      • git remote add [變量名] [遠(yuǎn)程服務(wù)器地址]
      • 示例:git remote add origin https://github.com/xxxxxxxxx.git
      • 這樣之后就可以直接使用origin來(lái)代替git push 后面寫(xiě)的地址了
        git push origin master
  • 還可以盡一步簡(jiǎn)化

    • 在push時(shí)加上-u參數(shù),就會(huì)默認(rèn)建立本地當(dāng)前分支與遠(yuǎn)程指定分支的關(guān)聯(lián),下一次push時(shí)就不需要輸入分支名了git push origin;

git使用ssh方式上傳代碼與github

  • git生成公鑰和私鑰
    • 命令:ssh-keygen -t rsa生成的公鑰與私鑰文件會(huì)在當(dāng)用戶目錄的.ssh目錄下.

把代碼push到服務(wù)器時(shí)需要先pull一下

  • 在pull之后如果遠(yuǎn)程的代碼與本地的代碼有沖突,git會(huì)先自動(dòng)合并沖突,如果不能自動(dòng)合并,就必需我們手動(dòng)去處理沖突。

從服務(wù)器上pull代碼到本地

  • 如果本地沒(méi)有.git目錄,需要先初始化一下。
  • 命令:git pull [遠(yuǎn)程服務(wù)器地址] [遠(yuǎn)程的分支]
    • 把遠(yuǎn)程庫(kù)的代碼更新到工作臺(tái) git pull
    • 強(qiáng)制把遠(yuǎn)程庫(kù)的代碼更新到當(dāng)前分支上面git pull --rebase origin master

gh-pages分支-搭建博客.

  • 需要把自已博客的網(wǎng)頁(yè)代碼上傳到github上的gh-pages分支
  • 然后就直接訪問(wèn)了
    • 訪問(wèn)的url形式: [github用戶名].github.io/[倉(cāng)庫(kù)的名字]/[具體的頁(yè)面]

1) 遠(yuǎn)程倉(cāng)庫(kù)相關(guān)命令

檢出倉(cāng)庫(kù):$ git clone git://github.com/jquery/jquery.git
查看遠(yuǎn)程倉(cāng)庫(kù):$ git remote -v
添加遠(yuǎn)程倉(cāng)庫(kù):$ git remote add [name] [url]
刪除遠(yuǎn)程倉(cāng)庫(kù):$ git remote rm [name]
修改遠(yuǎn)程倉(cāng)庫(kù):$ git remote set-url --push [name] [newUrl]
拉取遠(yuǎn)程倉(cāng)庫(kù):$ git pull [remoteName] [localBranchName]
推送遠(yuǎn)程倉(cāng)庫(kù):$ git push [remoteName] [localBranchName]

*如果想把本地的某個(gè)分支test提交到遠(yuǎn)程倉(cāng)庫(kù),并作為遠(yuǎn)程倉(cāng)庫(kù)的master分支,或者作為另外一個(gè)名叫test的分支,如下:
$git push origin test:master // 提交本地test分支作為遠(yuǎn)程的master分支
$git push origin test:test // 提交本地test分支作為遠(yuǎn)程的test分支

2)分支(branch)操作相關(guān)命令

查看本地分支:$ git branch
查看遠(yuǎn)程分支:$ git branch -r
創(chuàng)建本地分支:$ git branch [name] ----注意新分支創(chuàng)建后不會(huì)自動(dòng)切換為當(dāng)前分支
切換分支:$ git checkout [name]
創(chuàng)建新分支并立即切換到新分支:$ git checkout -b [name]
刪除分支:$ git branch -d [name] ---- -d選項(xiàng)只能刪除已經(jīng)參與了合并的分支,對(duì)于未有合并的分支是無(wú)法刪除的。如果想強(qiáng)制刪除一個(gè)分支,可以使用-D選項(xiàng)
合并分支:$ git merge [name] ----將名稱為[name]的分支與當(dāng)前分支合并
創(chuàng)建遠(yuǎn)程分支(本地分支push到遠(yuǎn)程):$ git push origin [name]
刪除遠(yuǎn)程分支:$ git push origin :heads/[name] 或 $ gitpush origin :[name]

*創(chuàng)建空的分支:(執(zhí)行命令之前記得先提交你當(dāng)前分支的修改,否則會(huì)被強(qiáng)制刪干凈沒(méi)得后悔)
$git symbolic-ref HEAD refs/heads/[name]
$rm .git/index
$git clean -fdx

3)版本(tag)操作相關(guān)命令

查看版本:$ git tag
創(chuàng)建版本:$ git tag [name]
刪除版本:$ git tag -d [name]
查看遠(yuǎn)程版本:$ git tag -r
創(chuàng)建遠(yuǎn)程版本(本地版本push到遠(yuǎn)程):$ git push origin [name]
刪除遠(yuǎn)程版本:$ git push origin :refs/tags/[name]
合并遠(yuǎn)程倉(cāng)庫(kù)的tag到本地:$ git pull origin --tags
上傳本地tag到遠(yuǎn)程倉(cāng)庫(kù):$ git push origin --tags
創(chuàng)建帶注釋的tag:$ git tag -a [name] -m 'yourMessage'

4) 子模塊(submodule)相關(guān)操作命令

添加子模塊:$ git submodule add [url] [path]
如:$git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs
初始化子模塊:$ git submodule init ----只在首次檢出倉(cāng)庫(kù)時(shí)運(yùn)行一次就行
更新子模塊:$ git submodule update ----每次更新或切換分支后都需要運(yùn)行一下
刪除子模塊:(分4步走哦)

  1. $ git rm --cached [path]
  2. 編輯“.gitmodules”文件,將子模塊的相關(guān)配置節(jié)點(diǎn)刪除掉
  3. 編輯“ .git/config”文件,將子模塊的相關(guān)配置節(jié)點(diǎn)刪除掉
  4. 手動(dòng)刪除子模塊殘留的目錄

5)忽略一些文件、文件夾不提交

在倉(cāng)庫(kù)根目錄下創(chuàng)建名稱為“.gitignore”的文件,寫(xiě)入不需要的文件夾名或文件,每個(gè)元素占一行即可,如
target
bin
*.db

=====================
Git 常用命令
git branch 查看本地所有分支
git status 查看當(dāng)前狀態(tài)
git commit 提交
git branch -a 查看所有的分支
git branch -r 查看本地所有分支
git commit -am "init" 提交并且加注釋
git remote add origin git@192.168.1.119:ndshow
git push origin master 將文件給推到服務(wù)器上
git remote show origin 顯示遠(yuǎn)程庫(kù)origin里的資源
git push origin master:develop
git push origin master:hb-dev 將本地庫(kù)與服務(wù)器上的庫(kù)進(jìn)行關(guān)聯(lián)
git checkout --track origin/dev 切換到遠(yuǎn)程dev分支
git branch -D master develop 刪除本地庫(kù)develop
git checkout -b dev 建立一個(gè)新的本地分支dev
git merge origin/dev 將分支dev與當(dāng)前分支進(jìn)行合并
git checkout dev 切換到本地dev分支
git remote show 查看遠(yuǎn)程庫(kù)
git add .
git rm 文件名(包括路徑) 從git中刪除指定文件
git clone git://github.com/schacon/grit.git 從服務(wù)器上將代碼給拉下來(lái)
git config --list 看所有用戶
git ls-files 看已經(jīng)被提交的
git rm [file name] 刪除一個(gè)文件
git commit -a 提交當(dāng)前repos的所有的改變
git add [file name] 添加一個(gè)文件到git index
git commit -v 當(dāng)你用-v參數(shù)的時(shí)候可以看commit的差異
git commit -m "This is the message describing the commit" 添加commit信息
git commit -a -a是代表add,把所有的change加到git index里然后再commit
git commit -a -v 一般提交命令
git log 看你commit的日志
git diff 查看尚未暫存的更新
git rm a.a 移除文件(從暫存區(qū)和工作區(qū)中刪除)
git rm --cached a.a 移除文件(只從暫存區(qū)中刪除)
git commit -m "remove" 移除文件(從Git中刪除)
git rm -f a.a 強(qiáng)行移除修改后文件(從暫存區(qū)和工作區(qū)中刪除)
git diff --cached 或 $ git diff --staged 查看尚未提交的更新
git stash push 將文件給push到一個(gè)臨時(shí)空間中
git stash pop 將文件從臨時(shí)空間pop下來(lái)


git remote add origin git@github.com:username/Hello-World.git
git push origin master 將本地項(xiàng)目給提交到服務(wù)器中


git pull 本地與服務(wù)器端同步

git push (遠(yuǎn)程倉(cāng)庫(kù)名) (分支名) 將本地分支推送到服務(wù)器上去。
git push origin serverfix:awesomebranch


git fetch 相當(dāng)于是從遠(yuǎn)程獲取最新版本到本地,不會(huì)自動(dòng)merge
git commit -a -m "log_message" (-a是提交所有改動(dòng),-m是加入log信息) 本地修改同步至服務(wù)器端 :
git branch branch_0.1 master 從主分支master創(chuàng)建branch_0.1分支
git branch -m branch_0.1 branch_1.0 將branch_0.1重命名為branch_1.0
git checkout branch_1.0/master 切換到branch_1.0/master分支
du -hs


mkdir WebApp
cd WebApp
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin git@github.com:daixu/WebApp.git
git push -u origin master

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,156評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,401評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,069評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,873評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,635評(píng)論 6 408
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,128評(píng)論 1 323
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,203評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,365評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,881評(píng)論 1 334
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,733評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,935評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,475評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,172評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,582評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,821評(píng)論 1 282
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,595評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,908評(píng)論 2 372

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