Git 常用命令

Git 簡(jiǎn)介

  • 一個(gè)開(kāi)源的分布式版本控制系統(tǒng)
  • 版本控制饲漾?比如我在 A1贫堰,A2A3死陆,A4 處分別修改了文件次慢,那我可以隨時(shí)隨地回到任意 AX

Git 安裝和配置(windows)

  • 下載安裝exe,官網(wǎng)太慢翔曲,所以建議用淘寶鏡像
  • 安裝完畢,找到 Git -> Git Bash 劈愚,打開(kāi)
  • 全局配置用戶名和郵箱
    • $ git config --global user.name "Your Name"
    • $ git config --global user.email "email@example.com"
    • 局部配置把 --global 去掉即可

Git 的 工作區(qū) 瞳遍、 暫存區(qū)、 master

工作區(qū)即打代碼的地方菌羽,暫存區(qū)又叫stage掠械,index用來(lái)暫時(shí)存放工作區(qū)中修改的內(nèi)容,就是一個(gè)中轉(zhuǎn)站注祖,master是項(xiàng)目主分支猾蒂,HEAD是指針



我最常用的命令

git add .
git commit -m 'update'
git push origin master
git fetch origin master

如果 fetch 合并遠(yuǎn)程庫(kù)報(bào)錯(cuò),提示 error: Your local changes to the following files would be overwritten by merge 說(shuō)明文件有改變是晨,解決:

  • 如果想改變本地庫(kù)肚菠,保留遠(yuǎn)程庫(kù),執(zhí)行 $ git reset --head 罩缴,徹底回退上一個(gè)版本蚊逢,使用 $ git pull 將遠(yuǎn)程庫(kù)覆蓋本地庫(kù)
  • (未測(cè)試過(guò))如果想保留遠(yuǎn)程庫(kù)的修改,只將本地庫(kù)的新內(nèi)容添加至遠(yuǎn)程庫(kù)箫章,執(zhí)行 $ git stash烙荷,$ git pull,$ git stash pop

Git 常用命令

文件夾中打開(kāi)Git方式: 文件夾中右鍵 -> Git Bash Here

  1. 初始化

    • $ git init 初始化檬寂,將這個(gè)目錄變成Git可管理的倉(cāng)庫(kù) 终抽,.git文件夾 - 用來(lái)跟蹤管理版本庫(kù)
    • ?windows系統(tǒng)自帶的記事本在開(kāi)頭添加了0xefbbbf字符(16進(jìn)制字符),所以網(wǎng)頁(yè)打開(kāi)第一行可能會(huì)顯示一個(gè) '?' ,所以能不用盡量別用
  2. 增加昼伴、刪除文件

    • $ git add [file1] [file2] 添加指定文件到暫存區(qū)
    • $ git add [dir] 添加指定目錄到暫存區(qū) ( 包括子目錄 )
    • $ git add . 添加修改和新建的文件到暫存區(qū)匾旭,但不包括被刪除的文件
    • $ git add -u 更新所有變化的文件,即提交工作區(qū)所有變化的文件到暫存區(qū)
    • $ git add -A 提交已被修改和已被刪除的文件亩码,但不包括新的文件
    • $ git rm [file1] [file2] 刪除工作區(qū)文件季率,并把它放入暫存區(qū)
    • $ git rm --cached [file] 停止跟蹤指定文件,該文件在工作區(qū)位置不變
    • $ git mv [file] [file-rename] 重命名文件描沟,并把改名操作放入暫存區(qū)
  3. 提交

    • $ git commit [file1] [file2] -m "message" 提交暫存區(qū)中指定文件到倉(cāng)庫(kù)中
    • $ git commit -m "message" 提交暫存區(qū)所有內(nèi)容至倉(cāng)庫(kù)中
    • $ git commit -a 提交工作區(qū)自上一次commit以后的變化文件飒泻,至倉(cāng)庫(kù)中
    • $ git commit --amend -m "message" 用新的commit,替代上一次提交和提交信息
    • $git commit -v 提交時(shí)顯示diff(文件差異)信息
  4. 分支

    • $ git branch 顯示分支列表和當(dāng)前分支(帶*號(hào)的)
    • $ git branch -a 顯示本地分支列表和遠(yuǎn)程分支列表和當(dāng)前分支(帶*號(hào)的)
    • $ git branch [branch] 新建分支
    • $ git checkout [branch] 切換分支
    • $ git checkout -b [branch] 新建并切換分支
    • $ git checkout - 切換至上一個(gè)分支
    • $ git merge [branch] 合并指定分支到當(dāng)前分支
    • $ git merge --no-ff -m "message" [branch] 用普通模式合并吏廉,合并后的歷史中有分支信息泞遗,而fast forward ( 默認(rèn) ) 合并在歷史中是看不出曾經(jīng)做過(guò)合并
    • $ git branch -d [branch] 刪除一個(gè)分支
    • $ git rebase 作用 : 使提交歷史干凈,整潔

合并分支時(shí)席覆,如果沒(méi)有文件沖突可正常合并史辙,如果有沖突文件(比如兩個(gè)一樣的),Git會(huì)告訴我們佩伤,Automatic merge failed; fix conflicts and then commit the result 文件合并沖突聊倔,必須手動(dòng)解決以后再提交,這時(shí)在Git會(huì)在文檔中用<<<<<<<生巡,=======耙蔑,>>>>>>>標(biāo)記出不同分支的內(nèi)容,孤荣,修改時(shí)注意他們只能留一個(gè)甸陌,箭頭和等號(hào)要?jiǎng)h除。然后提交盐股,合并完成钱豁。

  1. 撤銷
    • $ git checkout [file] 撤掉暫存區(qū)指定文件到工作區(qū)
    • $ git checkout . 撤銷暫存區(qū)所有文件到工作區(qū)
    • $ git reset [file] 重置暫存區(qū)指定文件,與上一次commit一致疯汁,但工作區(qū)不變
    • $ git reset --hard 重置暫存區(qū)與工作區(qū)牲尺,與上一次commit一致
    • $ git reset --hard [HEAD] 回退到某個(gè)版本,同時(shí)也會(huì)重置暫存區(qū)和工作區(qū)幌蚊,HEAD代表指針秸谢,其值可以是,HEAD^ 上一個(gè)版本霹肝,HEAD^^ 上兩個(gè)版本估蹄, ... ,HEAD~100 上100個(gè)版本沫换,或者指定版本號(hào) 8817bcf
    • $ git stash 用于保存工作進(jìn)度臭蚁,暫存區(qū)和工作區(qū)的改動(dòng)將保存起來(lái)最铁,當(dāng)前將是一個(gè)干凈的工作區(qū),比如用于修復(fù)bug時(shí)垮兑,把文件先保存起來(lái)冷尉,這時(shí)可以在另外的分支或當(dāng)前分支處理bug
    • $ git stash list 查看stash隊(duì)列
    • $ git stash apply 恢復(fù)隊(duì)列中第一個(gè)記錄 $ git stash drop 刪除stash里的內(nèi)容 $ git stash pop 恢復(fù)并stash里的內(nèi)容
    • $ git stash apply [stash] 恢復(fù)指定的記錄,可以在列表中查看系枪,比如: stash@[0] 雀哨,把 apply 換成 pop 可以恢復(fù)并刪除

當(dāng)你改亂了工作區(qū)某個(gè)文件時(shí),想要撤銷修改可使用 $ git checkout [file]
當(dāng)你不但改亂了工作區(qū)某個(gè)文件私爷,還添加到了暫存區(qū)時(shí)雾棺,想要撤銷時(shí)分兩步,重置暫存區(qū)文件 $ git reset [file] 衬浑,撤銷工作區(qū)修改$ git checkout [file]捌浩,或者一步到位重置暫存區(qū)與工作區(qū) $ git reset --hard
當(dāng)你改亂了,還添加到暫存區(qū)工秩,還提交到倉(cāng)庫(kù)了尸饺,想要撤銷需要使用版本回退,比如回退到上一個(gè)版本 $ git reset --hard HEAD^

  1. 查看信息

    • $ git status 獲取倉(cāng)庫(kù)當(dāng)前狀態(tài)
    • $ git log 查看當(dāng)前分支的版本歷史
    • $ git reflog 查看所有版本號(hào)助币,由此可以穿梭未來(lái)浪听,回到過(guò)去
    • $ git log -S [keyword] 根據(jù)關(guān)鍵詞,搜索提交歷史
    • $ git log -[n] --pretty --oneline 以簡(jiǎn)寫的形式顯示過(guò)去n次的提交信息眉菱,顯示所有去掉 -[n]迹栓,顯示完整的版本號(hào) --pretty=oneline
    • $ git diff 顯示暫存區(qū)和工作區(qū)的代碼差異
  2. 遠(yuǎn)程倉(cāng)庫(kù)

    • $ git remote 查看遠(yuǎn)程庫(kù)信息,后面加 -v 查看詳細(xì)信息
    • $ git remote add origin git@github.com:username/projectname.git 把本地項(xiàng)目與遠(yuǎn)程項(xiàng)目關(guān)聯(lián)
    • $ git push origin [branch-name] 把本地項(xiàng)目推送至遠(yuǎn)程項(xiàng)目對(duì)應(yīng)的分支上倍谜,origin是默認(rèn)的主機(jī)名,第一次使用會(huì)提示驗(yàn)證叉抡,輸入yes即可
    • $ git push origin --delete [branch] 刪除遠(yuǎn)程分支
    • $ git clone git@github.com:username/projectname.git 把遠(yuǎn)程項(xiàng)目克隆至本地尔崔,git支持多種協(xié)議,默認(rèn)的git://使用ssh協(xié)議褥民,也可使用https協(xié)議季春,但傳輸速度要慢
    • $ git checkout -b [branch-name] origin/[branch-name] 在本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支,使用時(shí)消返,本地和遠(yuǎn)程分支的名稱最好一致
    • 如果與遠(yuǎn)程庫(kù)相連载弄? 1. 在 c盤 -> user > .ssh > 找到 id_rsa.pub 這是公鑰,還有一個(gè)是秘鑰撵颊,右鍵記事本打開(kāi)復(fù)制宇攻,粘貼到 github -> 設(shè)置 -> ssh key -> 新建一個(gè) 名稱隨意,內(nèi)容粘貼倡勇。如果沒(méi)有秘鑰使用 $ ssh-keygen -t rsa -C 'YourEmail@example.com' 生成逞刷,再?zèng)]有卸載Git重裝 2. 項(xiàng)目關(guān)聯(lián)或者克隆隨意 3. 公鑰的位置要在環(huán)境變量中配置好才能生效,所以生成秘鑰最好在默認(rèn)的位置。
    • 關(guān)聯(lián)失斂淝场仑最? 可能是遠(yuǎn)程庫(kù)創(chuàng)建時(shí)生成了RENAME文件造成內(nèi)容與本地庫(kù)不符,使用 $ git pull origin master 抓取遠(yuǎn)程庫(kù)與本地庫(kù)同步
    • 一個(gè)項(xiàng)目關(guān)聯(lián) github 和 gitee 帆喇? 先把公鑰配置好警医,然后刪除現(xiàn)有的origin的遠(yuǎn)程庫(kù) $ git remote rm origin ,再使用 $ git remote add origin git@github.com:username/projectname.git 分別連接 github 和 gitee 坯钦,修改 origin 為 github 執(zhí)行一次预皇,再修改為 origin 為 gitee 再執(zhí)行一次,查看 $ git remote -v 時(shí)可以看到有兩個(gè)遠(yuǎn)程庫(kù)葫笼,推送時(shí)需要給定特殊的名稱深啤,ex:$ git push github master
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市路星,隨后出現(xiàn)的幾起案子溯街,更是在濱河造成了極大的恐慌,老刑警劉巖洋丐,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呈昔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡友绝,警方通過(guò)查閱死者的電腦和手機(jī)堤尾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)迁客,“玉大人郭宝,你說(shuō)我怎么就攤上這事≈朗” “怎么了粘室?”我有些...
    開(kāi)封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)卜范。 經(jīng)常有香客問(wèn)我衔统,道長(zhǎng),這世上最難降的妖魔是什么海雪? 我笑而不...
    開(kāi)封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任锦爵,我火速辦了婚禮,結(jié)果婚禮上奥裸,老公的妹妹穿的比我還像新娘险掀。我一直安慰自己,他們只是感情好湾宙,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布迷郑。 她就那樣靜靜地躺著枝恋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嗡害。 梳的紋絲不亂的頭發(fā)上焚碌,一...
    開(kāi)封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音霸妹,去河邊找鬼十电。 笑死,一個(gè)胖子當(dāng)著我的面吹牛叹螟,可吹牛的內(nèi)容都是我干的鹃骂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼罢绽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼畏线!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起良价,我...
    開(kāi)封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎明垢,沒(méi)想到半個(gè)月后抵蚊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贞绳,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡豺裆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蔑歌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片次屠。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡裸违,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出怔昨,到底是詐尸還是另有隱情,我是刑警寧澤矮烹,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布唯欣,位于F島的核電站蟀拷,受9級(jí)特大地震影響问芬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜挡鞍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一翘县、第九天 我趴在偏房一處隱蔽的房頂上張望锈麸。 院中可真熱鬧狗热,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春倒信,著一層夾襖步出監(jiān)牢的瞬間优妙,已是汗流浹背瘾带。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抄罕,地道東北人允蚣。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像呆贿,于是被迫代替她去往敵國(guó)和親嚷兔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

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