git命令詳解

這里推薦廖雪峰的git教程土全,淺顯易懂酷含,循序漸進(jìn)邦泄。
https://www.liaoxuefeng.com/wiki/896043488029600
還有對git與svn的比較
https://www.cnblogs.com/Sungeek/p/9152223.html

1. 創(chuàng)建版本庫

通過git init把某個(gè)目錄變?yōu)镚it可以管理的倉庫这难,執(zhí)行完會發(fā)現(xiàn)目錄下多了.git文件仔燕。這個(gè)文件記錄著該工作區(qū)的版本庫造垛。

$ git init
2.修改文件后嘗試提交版本庫
$ git status //查看文件變更狀態(tài)
$ git diff HEAD -- <file> //查看本地工作區(qū)和版本庫最新版本的區(qū)別
$ git add <file>  //提交到暫存區(qū)
$ git commit -m "xxxxx"     //提交到版本庫,-m后面輸入的是本次提交的說明

若要丟棄某些修改

$ git checkout -- <file>  //丟棄工作區(qū)的修改
//這里有兩種情況:
//1.自修改后還沒有被放到暫存區(qū)晰搀,撤銷修改就回到和版本//庫一模一樣的狀態(tài)五辽;
//2. 已經(jīng)添加到暫存區(qū)后,又作了修改外恕,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)
$ git reset HEAD <file> //丟棄暫存區(qū)的修改杆逗,將修改撤回的工作區(qū)
3. 版本回退

查看版本庫信息

$ git log  //查看版本庫信息
$ git log --pretty=oneline  //查看版本庫信息,以一行顯示
$ git reflog //記錄每一次命令鳞疲,包括記錄和回退

回退
在Git中罪郊,用HEAD表示當(dāng)前版本,上一個(gè)版本就是HEAD^尚洽,上上一個(gè)版本就是HEAD^^悔橄,當(dāng)然往上100個(gè)版本可寫成HEAD~100

$ git reset --hard HEAD^ //回退到上一個(gè)版本
$ git reset --hard 1094a  //回退到某一個(gè)版本,commit ID的前幾位
4.將本地文件推送到遠(yuǎn)程github倉庫
//首先在github上建立一個(gè)learngit遠(yuǎn)程庫,再與本地關(guān)聯(lián)癣疟。
$ git remote add orign git@github.com:xxxxx/learngit.git
//orign遠(yuǎn)程倉庫的名字挣柬,默認(rèn)
//com:個(gè)人賬戶名
$ git push -u name master // 將本地庫推送到遠(yuǎn)程庫orign上的master分支,
//第一次加-u參數(shù)

從遠(yuǎn)程克隆倉庫到本地

$ git clone git@github.com:michaelliao/gitskills.git  //使用ssh
$ git clone https://github.com/michaelliao/gitskills.git  //使用http

更新遠(yuǎn)程倉庫的代碼

git pull
5.分支管理
$ git branch //查看分支

$ git branch <name> //創(chuàng)建分支

$ git checkout <name>//切換分支
$ git switch <name> //切換分支

$ git checkout -b <name> //創(chuàng)建+切換分支
$ git switch -c <name> //創(chuàng)建+切換分支

$ git branch -d <name>  //刪除分支
$ git merge <name> //合并某分支到當(dāng)前分支
$ git merge --no-ff -m "merge with no-ff" dev 
//強(qiáng)制禁用Fast forward模式

$ git push origin <name>// 將本地分支推送到遠(yuǎn)程
6.解決沖突

假設(shè)master分支要合并dev分支睛挚,但發(fā)生沖突邪蛔。這時(shí)候Git用<<<<<<<,=======扎狱,>>>>>>>標(biāo)記出不同分支的內(nèi)容侧到,如:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> dev

手動修改沖突后,在master分支上上傳淤击,之后再進(jìn)行merge床牧。
可以使用帶參數(shù)的git log 來看分支情況。

$ git log --graph --pretty=oneline --abbrev-commit
7. Bug分支

假設(shè)接到一個(gè)bug或其他任務(wù)遭贸,但當(dāng)前工作還未做完戈咳,可以先將當(dāng)前修改儲存,等修完bug壕吹,再釋放出來著蛙。

$ git stash //執(zhí)行完后,git status工作區(qū)就是干凈的耳贬。
$ git stash list //查看存儲了那些stash
$ git stash pop //釋放并刪除stash

如果只想復(fù)制某次commit踏堡,而不想merge整個(gè)項(xiàng)目。

$ git cherry-pick <commit>  //將某次commit復(fù)制到當(dāng)前分支
8.標(biāo)簽
$ git tag <tagname>  //給當(dāng)前分支打一個(gè)標(biāo)簽
$ git show <tagname> //查看該標(biāo)簽的信息
$ git tag -a <tagname> -m "xxxxxx" 1094adb 
//給某次commit創(chuàng)建帶有說明的標(biāo)簽咒劲,
//-a創(chuàng)建標(biāo)簽顷蟆,-m添加說明
$ git tag -d <tagname> //刪除標(biāo)簽
$ git push origin <tagname> //將某個(gè)標(biāo)簽推送到遠(yuǎn)程
$ git push origin :refs/tags/<tagname>//可以刪除一個(gè)遠(yuǎn)程標(biāo)簽。

標(biāo)簽總是和某個(gè)commit掛鉤腐魂。如果這個(gè)commit既出現(xiàn)在master分支帐偎,又出現(xiàn)在dev分支,那么在這兩個(gè)分支上都可以看到這個(gè)標(biāo)簽蛔屹。

9. 忽略某些文件

在倉庫目錄下新建一個(gè)名為.gitignore的文件,并推送到遠(yuǎn)程削樊,則該倉庫的開發(fā)者共享一套忽略規(guī)則。
注意:一定要在push文件之前創(chuàng)建好.gitignore文件兔毒,不然一些文件已經(jīng)上傳了漫贞,git就無法忽略了。

'#' 以'#'開始的行育叁,被視為注釋.      
 
# 忽略掉所有文件名是 foo.txt的文件.
foo.txt
# 忽略所有生成的 html文件,
*.html
# foo.html是手工維護(hù)的迅脐,所以例外.
!foo.html
# 忽略所有.o和 .a文件.
*.[oa]

配置語法:
以斜杠“/”開頭表示目錄;
以星號“*”通配多個(gè)字符豪嗽;
以問號“?”通配單個(gè)字符
以方括號“[]”包含單個(gè)字符的匹配列表谴蔑;
以嘆號“!”表示不忽略(跟蹤)匹配到的文件或目錄豌骏;

有時(shí)候想添加某些文件發(fā)現(xiàn)添加不了,可能是被忽略了树碱】鲜剩可以強(qiáng)制添加或者去檢驗(yàn).gitignore的規(guī)則

$ git add -f App.class
$ git check-ignore -v App.class
.gitignore:3:*.class    App.class  #表示第三行規(guī)則忽略了.class文件
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末变秦,一起剝皮案震驚了整個(gè)濱河市成榜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蹦玫,老刑警劉巖赎婚,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異樱溉,居然都是意外死亡挣输,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門福贞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撩嚼,“玉大人,你說我怎么就攤上這事挖帘⊥昀觯” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵拇舀,是天一觀的道長逻族。 經(jīng)常有香客問我,道長骄崩,這世上最難降的妖魔是什么聘鳞? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮要拂,結(jié)果婚禮上抠璃,老公的妹妹穿的比我還像新娘。我一直安慰自己脱惰,他們只是感情好鸡典,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著枪芒,像睡著了一般彻况。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上舅踪,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天纽甘,我揣著相機(jī)與錄音,去河邊找鬼抽碌。 笑死悍赢,一個(gè)胖子當(dāng)著我的面吹牛决瞳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播左权,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼皮胡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赏迟?” 一聲冷哼從身側(cè)響起屡贺,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锌杀,沒想到半個(gè)月后甩栈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡糕再,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年量没,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片突想。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡殴蹄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出猾担,到底是詐尸還是另有隱情袭灯,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布垒探,位于F島的核電站妓蛮,受9級特大地震影響睡蟋,放射性物質(zhì)發(fā)生泄漏歼狼。R本人自食惡果不足惜勾哩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一搏明、第九天 我趴在偏房一處隱蔽的房頂上張望唐片。 院中可真熱鬧绞绒,春花似錦散吵、人聲如沸凯砍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至箱歧,卻和暖如春矾飞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背呀邢。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工洒沦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人价淌。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓申眼,卻偏偏與公主長得像瞒津,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子括尸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

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