Git使用

猴子都能懂的git

https://backlog.com/git-tutorial/cn/

git和SVN的簡(jiǎn)單對(duì)比
SVN必須聯(lián)網(wǎng)才能正常工作阶淘,git支持本地版本控制工作
分布式和集中式的最大區(qū)別在于:在分布式下
開發(fā)者可以本地提交
每個(gè)開發(fā)者機(jī)器上都有一個(gè)服務(wù)器的數(shù)據(jù)庫(kù)
git的工作原理掘鄙,
工作區(qū)(Working Directory):倉(cāng)庫(kù)文件夾里除.git目錄以外的內(nèi)容
版本庫(kù)(Repository):.git目錄墨林,用于存儲(chǔ)記錄版本信息

暫緩區(qū)(stage)
分支(master):git自動(dòng)創(chuàng)建的第一個(gè)分支
HEAD指針:用于指向當(dāng)前分支

git add :把文件修改添加到暫存區(qū)
git commit :把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支

SourceTree
下載地址:http://www.sourcetreeapp.com/download

git常用指令

git help :git指令幫助手冊(cè)
查看其他指令的做法:git help 其他指令

git init : 初始化本地倉(cāng)庫(kù)
git config :git的配置信息相關(guān)(修改的是.git/config文件)
配置用戶名:git config user.name 用戶名(用于跟蹤修改記錄)
配置郵箱:git config user.email 郵箱(用于多人開發(fā)間的溝通)
查看配置信息:git config –l
編輯配置信息:git config –e(用vim編輯月弛,:wq是退出vim編輯器)
設(shè)置指令的別名:git config alias.別名 原指令名稱
設(shè)置帶參數(shù)指令的別名:git config alias.別名 “原指令名稱 參數(shù)”
將此設(shè)置應(yīng)用到整個(gè)系統(tǒng)中:git config ––gloabal
----

git status :查文件的狀態(tài)
查看某個(gè)文件的狀態(tài):git status 文件名
查看當(dāng)前路徑所有文件的狀態(tài):git status

git log :查看文件的修改日志
查看某個(gè)文件的修改日志:git log 文件名
查看當(dāng)前路徑所有文件的修改日志:git log
用一行的方式查看簡(jiǎn)單的日志信息:git log ––pretty=oneline
查看最近的N次修改:git log –N(N是一個(gè)整數(shù))

git reflog 簡(jiǎn)單log

git diff :查看文件最新改動(dòng)的地方
查看某個(gè)文件的最新改動(dòng)的地方:git diff 文件名
查看當(dāng)前路徑所有文件最新改動(dòng)的地方:git diff
------------

git init :初始化一個(gè)空的本地倉(cāng)庫(kù)浮禾,生成一個(gè).git目錄糠馆,用于維護(hù)版本信息
在當(dāng)前路徑初始化倉(cāng)庫(kù):git init
在其他路徑初始化倉(cāng)庫(kù):git init 倉(cāng)庫(kù)路徑

git add :將工作區(qū)的文件保存到暫緩區(qū)
保存某個(gè)文件:git add 文件名
保存所有文件:git add .

git commit :將暫緩區(qū)的文件提交到當(dāng)前分支
提交某個(gè)文件到分支:git commit -m ”注釋” 文件名
保存當(dāng)前路徑的所有文件到分支:git commit -m ”注釋” 
------------
git reset :版本回退(建議加上––hard參數(shù)娄涩,git支持無(wú)限次后悔)
回退到上一個(gè)版本:git reset ––hard HEAD^
回退到上上一個(gè)版本:git reset ––hard HEAD^^
回退到上N個(gè)版本:git reset ––hard HEAD~N(N是一個(gè)整數(shù))
回退到任意一個(gè)版本:git reset ––hard 版本號(hào)(版本號(hào)用7位即可)

git rm:刪除文件(刪完之后要進(jìn)行commit操作嘲驾,才能同步到版本庫(kù))
------------

git clone:下載遠(yuǎn)程倉(cāng)庫(kù)到本地
下載遠(yuǎn)程倉(cāng)庫(kù)到當(dāng)前路徑:git clone 倉(cāng)庫(kù)的URL
下載遠(yuǎn)程倉(cāng)庫(kù)到特定路徑:git clone 倉(cāng)庫(kù)的URL 存放倉(cāng)庫(kù)的路徑

git pull:下載遠(yuǎn)程倉(cāng)庫(kù)的最新信息到本地倉(cāng)庫(kù)
git push:將本地的倉(cāng)庫(kù)信息推送到遠(yuǎn)程倉(cāng)庫(kù)

5. 備注補(bǔ)充
文件狀態(tài)(git status)
 > 顏色含義
     紅色: 代表被添加或者修改的文件沒(méi)有被添加到暫緩區(qū)
     綠色: 代表文件在暫緩區(qū),等待提交
 > 版本號(hào)的含義
     版本號(hào)是一個(gè)由SHA1生成的40位哈希值
     這樣做的目的是保證版本號(hào)的唯一

日志查看配置, 命令如下: 
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"

Git版本備份/分支管理

git tag -a v1.0 -m “標(biāo)記1.0版本”
git push origin v1.0
touch main.c 創(chuàng)建main.c文件
git 直接打標(biāo)簽系忙, 通過(guò)控制head指向诵盼,來(lái)回到任一版本

> 進(jìn)入文件夾后,初始化共享庫(kù)
git init ——bare

> 進(jìn)入文件夾后
git clone 共享庫(kù)絕對(duì)路徑
> 進(jìn)入工作區(qū),配置姓名,郵箱
git config user.name “manager”
git config user.email “manager@qq.com”      
> 給此版本打標(biāo)簽,并將標(biāo)簽上傳到共享庫(kù)
git tag -a v1.0 -m “標(biāo)記1.0版本”
git push origin v1.0

———至此,分支修復(fù)bug結(jié)束,下面合并分支———
從共享庫(kù)更新代碼到本地庫(kù)
git pull
查看當(dāng)前服務(wù)器都有哪些分支
git branch -r
切換到master分支后,將v1.0fixbug分支合并過(guò)來(lái)
git checkout master
git merge origin/v1.0fixbug -m “合并分支”
合并完成后提交到共享庫(kù)
git add .
git commit -m “合并分支”
git push
合并完成后,可以刪除共享庫(kù)的分支
git branch -r -d origin/v1.0fixbug
查看版本標(biāo)簽,至此結(jié)束!!
git tag

git push 只能提交代碼,不能連同標(biāo)記一起提交
git push origin v1.0 提交標(biāo)簽

tag指向一次commit的id银还,通常用來(lái)給開發(fā)分支做一個(gè)標(biāo)記
查看標(biāo)簽 : git tag
查看某兩次tag之間的commit:git log --pretty=oneline tagA..tagB
查看某次tag之后的commit: git log --pretty=oneline tagA..

5.常用命令
git show # 顯示某次提交的內(nèi)容 git show $id
git add <file> # 將工作文件修改提交到本地暫存區(qū)
git rm <file> # 從版本庫(kù)中刪除文件
git reset <file> # 從暫存區(qū)恢復(fù)到工作文件
git reset HEAD^ # 恢復(fù)最近一次提交過(guò)的狀態(tài)风宁,即放棄上次提交后的所有本次修改
git diff <file> # 比較當(dāng)前文件和暫存區(qū)文件差異 git diff
git log -p <file> # 查看每次詳細(xì)修改內(nèi)容的diff
git branch -r # 查看遠(yuǎn)程分支
git merge <branch> # 將branch分支合并到當(dāng)前分支
git stash # 暫存
git stash pop #恢復(fù)最近一次的暫存
git pull # 抓取遠(yuǎn)程倉(cāng)庫(kù)所有分支更新并合并到本地
git push origin master # 將本地主分支推到遠(yuǎn)程主分支

分支的使用

一、查看有多少個(gè)分支?
    1.git branch 可以查看當(dāng)前版本庫(kù)中有多少個(gè)分支
    1.如果當(dāng)前的版本庫(kù)是空的, 那么無(wú)法查看
    2.分支前面有*號(hào)代表當(dāng)前的HEADER指針指向哪一個(gè)分支, 我們提交的代碼就會(huì)提交到指向的分支中

二蛹疯、如何創(chuàng)建一個(gè)分支
    git branch 分支名稱 來(lái)創(chuàng)建一個(gè)新的分支
    在哪個(gè)分支中創(chuàng)建了新的分支, 那么創(chuàng)建出來(lái)的新的分支就會(huì)繼承當(dāng)前分支的所有狀態(tài)
    例如:
    在master分支中做了兩個(gè)操作, 然后在master分支中創(chuàng)建了Dev分支
    那么創(chuàng)建出來(lái)的Dev分支就會(huì)繼承master分支中的這兩個(gè)操作
    注意點(diǎn):
    一旦分支被創(chuàng)建出來(lái)之后, 分支就是獨(dú)立的, 分支之間不會(huì)相互影響

三戒财、切換分支?
    1.通過(guò)git switch 分支名稱 來(lái)修改HEADER指針的指向
    注意點(diǎn): 只要HEADER指針的指向發(fā)生了改變, 那么commit的代碼就會(huì)發(fā)生改變
    HEADER指針指向誰(shuí)commit提交的代碼就提交到誰(shuí)里面

四、如何將分支提交到遠(yuǎn)程服務(wù)器
    1.通過(guò)git branch -r 來(lái)查看遠(yuǎn)程服務(wù)器上有多少個(gè)分支
    2.首先需要在本地切換到新建的分支中, 然后通過(guò)git push指令提交新建的分支到遠(yuǎn)程的服務(wù)器
    git push --set-upstream origin Dev

五捺弦、如何合并分支
    可以通過(guò) git merge 分支名稱 來(lái)合并分支
    例如:
    在master分支中執(zhí)行  git merge Dev 就代表需要將Dev分支中的代碼都合并到master分支中
    例如:
    在Dev分支中執(zhí)行 git merge master 就代表需要將master分支中的代碼都合并到Dev分支中

六饮寞、如何刪除分支
    1.可以通過(guò)git branch -d 分支名稱 來(lái)刪除本地的分支
    2.可以通過(guò)git push origin --delete 分支名稱 來(lái)刪除遠(yuǎn)程服務(wù)器的分支
1、
什么是“git cherry-pick”列吼?
命令 git cherry-pick 通常用于把特定提交從存儲(chǔ)倉(cāng)庫(kù)的一個(gè)分支引入到其他分支中幽崩。
常見(jiàn)的用途是從維護(hù)的分支到開發(fā)分支進(jìn)行向前或回滾提交。

這與其他操作(例如:合并(merge)寞钥、變基(rebase))形成鮮明對(duì)比慌申,
后者通常是把許多提交應(yīng)用到其他分支中。
小結(jié):git cherry-pick <commit-hash>

2理郑、
如何從 git 中刪除文件蹄溉,而不將其從文件系統(tǒng)中刪除?
如果你在 git add 過(guò)程中誤操作您炉,你最終會(huì)添加不想提交的文件柒爵。
但是,git rm 則會(huì)把你的文件從你暫存區(qū)(索引)和文件系統(tǒng)(工作樹)中刪除赚爵,這可能不是你想要的餐弱。

上面意思是宴霸,git reset <paths> 是 git add <paths> 的逆操作。

3膏蚓、
什么時(shí)候使用“git rebase”代替“git merge”瓢谢?
這兩個(gè)命令都是把修改從一個(gè)分支集成到另一個(gè)分支上,它們只是以非常不同的方式進(jìn)行驮瞧。
參考:
http://blog.jobbole.com/114297/
https://blog.csdn.net/pushiqiang/article/details/79068449
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840038939c291467cc7c747b1810aab2fb8863508000
Vim編輯器簡(jiǎn)單使用.jpeg
命令模式:等待編輯命令輸入;所有輸入的內(nèi)容都被當(dāng)做命令來(lái)執(zhí)行
插入模式:輸入的所有內(nèi)容都被顯示,并被當(dāng)做文件內(nèi)容處理
命令行模式:執(zhí)行待定命令(保存文件并退出vim : wq   ; 強(qiáng)制退出不保存: q! )
git常用命令速查表.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末氓扛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子论笔,更是在濱河造成了極大的恐慌采郎,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狂魔,死亡現(xiàn)場(chǎng)離奇詭異蒜埋,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)最楷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門整份,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人籽孙,你說(shuō)我怎么就攤上這事烈评。” “怎么了犯建?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵讲冠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我适瓦,道長(zhǎng)竿开,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任玻熙,我火速辦了婚禮否彩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘揭芍。我一直安慰自己胳搞,他們只是感情好卸例,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布称杨。 她就那樣靜靜地躺著,像睡著了一般筷转。 火紅的嫁衣襯著肌膚如雪姑原。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天呜舒,我揣著相機(jī)與錄音锭汛,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛唤殴,可吹牛的內(nèi)容都是我干的般婆。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼朵逝,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蔚袍!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起配名,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤啤咽,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后渠脉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宇整,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年芋膘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鳞青。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡索赏,死狀恐怖盼玄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情潜腻,我是刑警寧澤埃儿,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站融涣,受9級(jí)特大地震影響童番,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜威鹿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一剃斧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧忽你,春花似錦幼东、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至糟秘,卻和暖如春简逮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背尿赚。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工散庶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蕉堰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓悲龟,卻偏偏與公主長(zhǎng)得像屋讶,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子须教,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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

  • 前言 Git是什么 官方話:Git是一個(gè)免費(fèi)的開源分布式版本控制系統(tǒng)丑婿,旨在快速高效地處理從小型到大型項(xiàng)目的所有事務(wù)...
    梅先森森森森森森閱讀 2,011評(píng)論 1 3
  • git init .初始化,表示把這個(gè)文件變成Git可以管理的倉(cāng)庫(kù)没卸。初始化后打開隱藏的文件可以看到有一個(gè).git文...
    wzhixin閱讀 888評(píng)論 0 0
  • Git是什么 官方得話:Git是一個(gè)免費(fèi)開源分布式得版本控制系統(tǒng)羹奉,快速得處理從小型到大型得所有事務(wù)。能幫我們更好的...
    Zane_Samuel閱讀 555評(píng)論 1 0
  • 世界很遠(yuǎn) ~巴赫曼世界很遠(yuǎn)约计,從一個(gè)國(guó)家到另一個(gè)國(guó)家的道路漫長(zhǎng)诀拭,世界上的地方很多,我卻都認(rèn)得煤蚌,我在所有的高塔上耕挨,見(jiàn)過(guò)...
    劉博奇閱讀 117評(píng)論 0 0
  • 加入007已經(jīng)好幾個(gè)月了筒占,每次寫東西的時(shí)候都是發(fā)愁,我該怎么辦呢蜘犁,我難道要一直這樣下去嗎翰苫?還是我一直沒(méi)有認(rèn)真的...
    悅享同學(xué)閱讀 159評(píng)論 0 0