git常用命令備忘

Refer:廖雪峰的Git教程

git init    # 初始化
git add  # 添加文件
git commit -m "first version"  # 提交

git status  # 查看當前狀態(tài)
git diff file.name  # 查看文件修改情況
git log --pretty=oneline  # 查看日志

git reset --hard HEAD^  # 強制回退到上一版本
git reset --hard 543264  # 回退到某一版本
git reflog   # git命令記錄

工作區(qū)與暫存區(qū)

需要注意的是:
第一次修改 -> git add -> 第二次修改 -> git add -> git commit

git checkout -- file.name    # 放棄工作區(qū)修改

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作區(qū)的修改全部撤銷亚情,這里有兩種情況:

  • readme.txt自修改后還沒有被放到暫存區(qū)蛔趴,現(xiàn)在,撤銷修改就回到和版本庫一模一樣的狀態(tài)浪慌;
  • readme.txt已經(jīng)添加到暫存區(qū)后萌京,又作了修改,現(xiàn)在,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)颜及。

總之,就是讓這個文件回到最近一次git commit或git add時的狀態(tài)蹂楣。

用命令git reset HEAD file可以把暫存區(qū)的修改撤銷掉(unstage)俏站,重新放回工作區(qū)。

rm file.name    # 刪除文件
git rm file.name    # 在git中刪除文件
checkout -- file.name  # 恢復文件

git remote add https://github.com/jlshix/flaskweb.git  # 添加遠程庫
git push -u origin master  # 第一次推送至遠程庫
git push origin master    # 推送至遠程庫
git clone https://github.com/jlshix/flaskweb.git    # 克隆遠程庫
# Git支持多種協(xié)議痊土,包括https肄扎,但通過ssh支持的原生git協(xié)議速度最快
head & master
Dev
git checkout -b dev    # 新建并切換到dev分支  相當于以下兩條
git branch dev
git checkout dev

git branch # 查看分支
git checkout master  # 切換回master分支
git merge dev  #   將dev分支合并
git branch -d dev  # 刪除dev分支

merge conflict

合并分支時若出現(xiàn)沖突需要手動合并,然后
git add git commit 解決沖突

使用git log --graph --pretty=oneline --abbrev-commit查看分支圖

分支管理赁酝,禁用fastforward

$ git checkout -b dev
Switched to a new branch 'dev'

$ git add readme.txt 
$ git commit -m "add merge"
[dev 6224937] add merge
 1 file changed, 1 insertion(+)

$ git checkout master
Switched to branch 'master'

$ git merge --no-ff -m "merge with no-ff" dev
Merge made by the 'recursive' strategy.
 readme.txt |    1 +
 1 file changed, 1 insertion(+)

$ git log --graph --pretty=oneline --abbrev-commit
*   7825a50 merge with no-ff
|\
| * 6224937 add merge
|/
*   59bc1cb conflict fixed
no fastforward

在實際開發(fā)中犯祠,我們應該按照幾個基本原則進行分支管理:

首先,master分支應該是非常穩(wěn)定的酌呆,也就是僅用來發(fā)布新版本衡载,平時不能在上面干活;

那在哪干活呢隙袁?干活都在dev分支上痰娱,也就是說弃榨,dev分支是不穩(wěn)定的,到某個時候梨睁,比如1.0版本發(fā)布時鲸睛,再把dev分支合并到master上,在master分支發(fā)布1.0版本坡贺;

你和你的小伙伴們每個人都在dev分支上干活官辈,每個人都有自己的分支,時不時地往dev分支上合并就可以了.

所以拴念,團隊合作的分支看起來就像這樣:

group programming

使用git stash命令可以保存當前工作空間

$ git stash
Saved working directory and index state WIP on dev: 6224937 add merge
HEAD is now at 6224937 add merge


$ git stash list
stash@{0}: WIP on dev: 6224937 add merge
git stash pop
$ git stash apply stash@{0}

開發(fā)一個新feature钧萍,最好新建一個分支褐缠;

如果要丟棄一個沒有被合并過的分支政鼠,可以通過git branch -D <name>強行刪除。

關(guān)于協(xié)作

  • 查看遠程庫信息队魏,使用git remote -v
  • 本地新建的分支如果不推送到遠程公般,對其他人就是不可見的
  • 從本地推送分支,使用git push origin branch-name胡桨,如果推送失敗官帘,先用git pull抓取遠程的新提交
  • 在本地創(chuàng)建和遠程分支對應的分支,使用git checkout -b branch-name origin/branch-name昧谊,本地和遠程分支的名稱最好一致
  • 建立本地分支和遠程分支的關(guān)聯(lián)刽虹,使用git branch --set-upstream branch-name origin/branch-name
  • 從遠程抓取分支,使用git pull呢诬,如果有沖突涌哲,要先處理沖突

標簽管理

打標簽

  • 命令git tag <name>用于新建一個標簽,默認為HEAD尚镰,也可以指定一個commit id
  • git tag -a <tagname> -m "blablabla...可以指定標簽信息
  • git tag -s <tagname> -m "blablabla...可以用PGP簽名標簽
  • 命令git tag可以查看所有標簽

操作標簽

  • 命令git push origin <tagname>可以推送一個本地標簽
  • 命令git push origin --tags可以推送全部未推送過的本地標簽
  • 命令git tag -d <tagname>可以刪除一個本地標簽
  • 命令git push origin :refs/tags/<tagname>可以刪除一個遠程標簽

附贈:Git Cheat Sheet

git-cheat-sheet
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末阀圾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子狗唉,更是在濱河造成了極大的恐慌初烘,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件分俯,死亡現(xiàn)場離奇詭異肾筐,居然都是意外死亡,警方通過查閱死者的電腦和手機缸剪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門局齿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人橄登,你說我怎么就攤上這事抓歼〖ゴ耍” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵谣妻,是天一觀的道長萄喳。 經(jīng)常有香客問我,道長蹋半,這世上最難降的妖魔是什么他巨? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮减江,結(jié)果婚禮上染突,老公的妹妹穿的比我還像新娘。我一直安慰自己辈灼,他們只是感情好份企,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著巡莹,像睡著了一般司志。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上降宅,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天骂远,我揣著相機與錄音,去河邊找鬼腰根。 笑死激才,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的额嘿。 我是一名探鬼主播瘸恼,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼岩睁!你這毒婦竟也來了钞脂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤捕儒,失蹤者是張志新(化名)和其女友劉穎冰啃,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刘莹,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡阎毅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了点弯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扇调。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖抢肛,靈堂內(nèi)的尸體忽然破棺而出狼钮,到底是詐尸還是另有隱情碳柱,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布熬芜,位于F島的核電站莲镣,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏涎拉。R本人自食惡果不足惜瑞侮,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鼓拧。 院中可真熱鬧半火,春花似錦、人聲如沸季俩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽种玛。三九已至藐鹤,卻和暖如春瓤檐,著一層夾襖步出監(jiān)牢的瞬間赂韵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工挠蛉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留祭示,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓谴古,卻偏偏與公主長得像质涛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子掰担,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

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