Git常用命令總結(jié)

基本配置

  • 配置用戶名和郵箱
$ git config user.name manager
$ git config user.email manager@gmail.com
以上兩個(gè)命令會(huì)將用戶信息保存在當(dāng)前代碼倉(cāng)庫(kù)中
  • 如果要配置全局的用戶名和郵箱
$ git config --global user.name manager
$ git config --global user.email manager@gmail.com
以上兩個(gè)命令會(huì)將用戶信息保存在用戶目錄下的 .gitconfig 文件中
  • 查看當(dāng)前所有配置
$ git config -l
  • 配置帶顏色的log別名
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"

常用命令

  • Log打印
git log --oneline --graph // 顯示主分支和自分支git日志
git log // 查看git的日志信息
  • 查詢(xún)所有提交點(diǎn)
git reflog   #回退后需要反悔的話使套,需要通過(guò)此命令查找到所有操作的提交點(diǎn)
  • 查看本地添加了哪些遠(yuǎn)程分支地址
git remote -v
  • 本地git倉(cāng)庫(kù)添加遠(yuǎn)程地址
git remote add origin https://xxxxxxxxxxxx.git
  • 創(chuàng)建本地分支
git branch develop
  • 從develop衍生出一個(gè)新分支
git checkout -b some-feature develop
  • 推送本地develop分支到遠(yuǎn)程
git push -u origin develop 
  • 查看本地分支
git branch
  • 查看本地分支和遠(yuǎn)程分支
git branch -a
  • 切換分支
git checkout master// master是要切換的分支名
  • 刪除本地分支
git branch -d develop// develop為要?jiǎng)h除的分支名
  • 刪除遠(yuǎn)程分支
git push origin --delete develop // 一般操作是先刪除本地的分支于宙,再刪除遠(yuǎn)程的分支
  • 添加所有修改的文件到暫緩區(qū)
git add .
  • 查看所有文件狀態(tài)
git status
  • 查看某一個(gè)文件狀態(tài)
git status [filename]
  • 添加某一個(gè)文件到暫緩區(qū)
git add [file1] [file2] ... // 可以有多個(gè)
  • 提價(jià)代碼到本地Git倉(cāng)庫(kù)
git commit -m "本次提交注釋" // 需要先add . 才能提交
  • 修改注釋
git commit --amend
  • 推送本地倉(cāng)庫(kù)代碼到遠(yuǎn)程
git push // 提交之后可以直接push
  • 指定分支推送
git push origin HEAD:refs/for/branch // branch 為指定的分支
  • 更新遠(yuǎn)程代碼
git pull
  • fetch是將遠(yuǎn)程主機(jī)的最新內(nèi)容拉到本地睬罗,不進(jìn)行合并
git fetch origin master
  • pull 則是將遠(yuǎn)程主機(jī)的master分支最新內(nèi)容拉下來(lái)后與當(dāng)前本地分支直接合并 fetch+merge
git pull origin master
  • 如果遠(yuǎn)程分支是與當(dāng)前分支合并猜敢,則冒號(hào)后面的部分可以省略
git pull origin master:develop   #git pull <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名>
  • 比較本地分支與git 主分支差異情況
git diff --stat develop origin/master
  • 在沒(méi)有push之前枷遂,把項(xiàng)目恢復(fù)到最近一次commit或add的狀態(tài)
git checkout -- . // 撤銷(xiāo)所有文件的修改
git checkout -- filename.. // 撤銷(xiāo)單個(gè)文件的修改

注意如果文件修改后還在工作區(qū)的話,執(zhí)行上面命令就會(huì)回到和版本庫(kù)的狀態(tài)讳癌。如果已經(jīng)執(zhí)行add指令了又做了修改渠脉,執(zhí)行上面指令就會(huì)回到添加暫緩區(qū)后的狀態(tài),如果你已經(jīng)commit了就會(huì)回到最近一次的commit版本狀態(tài)

  • 合并分支
git checkout master    #先切換到master分支
git merge develop      #合并分支develop和主干master档叔,合并后的提交點(diǎn)屬于主干master

注意:這里又幾個(gè)參數(shù)需要了解 默認(rèn)為 fast-forward只是簡(jiǎn)單的把指針右移動(dòng)懂从,不過(guò)如果刪除分支的話,會(huì)丟失merge分支信息蹲蒲。–squash把一些不必要commit進(jìn)行壓縮番甩。–no-ff關(guān)閉fast-forward模式,在提交的時(shí)候届搁,會(huì)創(chuàng)建一個(gè)merge的commit信息缘薛,然后合并的和master分支

git merge develop
git merge develop –squash
git merge develop –no-ff
  • 打本地Tag
git tag xxx
  • 刪除本地Tag
git tag -d xxx
  • 推送Tag到遠(yuǎn)程
git push --tags
  • 刪除遠(yuǎn)程Tag
git push origin --delete xxx

版本回退

  • 回退到上一次提交
git reset —head HEAD~1 // 這里的1是上一次,如果寫(xiě)2的話就是回退到上上一次提交

注意:
這里的 --head的意思為:刪除工作空間改動(dòng)代碼卡睦,撤銷(xiāo)commit宴胧,撤銷(xiāo)git add .
注意完成這個(gè)操作后,就恢復(fù)到了上一次的commit狀態(tài)表锻。
--mixed:不刪除工作空間改動(dòng)代碼恕齐,撤銷(xiāo)commit,并且撤銷(xiāo)git add . 操作這個(gè)為默認(rèn)參數(shù),git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一樣的瞬逊。
--soft:不刪除工作空間改動(dòng)代碼显歧,撤銷(xiāo)commit,不撤銷(xiāo)git add .

  • 取消最近一次提交提交
git revert HEAD
  • 撤銷(xiāo)執(zhí)行提交
git revert <commit> 可以撤銷(xiāo)指定的提交确镊, 要撤銷(xiāo)一串提交可以用 <commit1>..<commit2> 語(yǔ)法士骤。 注意這是一個(gè)前開(kāi)后閉區(qū)間,即不包括 commit1蕾域,但包括 commit2

git revert --no-commit f7742cd..551c408

然后重新提交推送到遠(yuǎn)程即可

git rebase使用

場(chǎng)景一:

我修改了代碼準(zhǔn)備推送到遠(yuǎn)端拷肌,但是由于遠(yuǎn)端有代碼更新,git提示我先pull更新代碼旨巷,我pull成功了之后巨缘,會(huì)生成一個(gè)新的提交歷史f63ecbf Merge branch 'master' of 如果你不想分叉的話執(zhí)行下面命令

git rebase // 合并提交
git push // 推送遠(yuǎn)端
或者 pull的時(shí)候加參數(shù)
git pull --rebase

場(chǎng)景二:

不同分支之間的合并。比如你新起一個(gè)分支開(kāi)發(fā)新功能采呐,開(kāi)發(fā)完成后想合并到主分支若锁,但是這個(gè)時(shí)候主分支已經(jīng)不是之前的版本了,這個(gè)時(shí)候你合并必定會(huì)有沖突懈万。你解決完沖突后再次提交合并會(huì)成功拴清,但是提交記錄會(huì)出現(xiàn)分叉的情況。如果不想分叉執(zhí)行下面代碼

在feature分支上執(zhí)行

git rebase master // 這句命令的意識(shí)是:以master為基礎(chǔ)会通,將feature分支上的修改增加到master分支上口予,并生成新的版本。

然后失敗-解決沖突之后執(zhí)行

git add .
git rebase --continue // 通過(guò)git rebase — continue,繼續(xù)完成之前的rebase操作

然后切換到主分支master涕侈,將feather分支上的提交合并過(guò)來(lái)

git checkout master

git merge feature

最后刪除feature分支即可

git branch -d feature
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沪停,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子裳涛,更是在濱河造成了極大的恐慌木张,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件端三,死亡現(xiàn)場(chǎng)離奇詭異舷礼,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)郊闯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)妻献,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人团赁,你說(shuō)我怎么就攤上這事育拨。” “怎么了欢摄?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵熬丧,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我怀挠,道長(zhǎng)析蝴,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任绿淋,我火速辦了婚禮嫌变,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘躬它。我一直安慰自己腾啥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布冯吓。 她就那樣靜靜地躺著倘待,像睡著了一般。 火紅的嫁衣襯著肌膚如雪组贺。 梳的紋絲不亂的頭發(fā)上凸舵,一...
    開(kāi)封第一講書(shū)人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音失尖,去河邊找鬼啊奄。 笑死渐苏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的菇夸。 我是一名探鬼主播琼富,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼庄新!你這毒婦竟也來(lái)了鞠眉?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤择诈,失蹤者是張志新(化名)和其女友劉穎械蹋,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體羞芍,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡哗戈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了荷科。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谱醇。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖步做,靈堂內(nèi)的尸體忽然破棺而出副渴,到底是詐尸還是另有隱情,我是刑警寧澤全度,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布煮剧,位于F島的核電站,受9級(jí)特大地震影響将鸵,放射性物質(zhì)發(fā)生泄漏勉盅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一顶掉、第九天 我趴在偏房一處隱蔽的房頂上張望草娜。 院中可真熱鬧,春花似錦痒筒、人聲如沸宰闰。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)移袍。三九已至,卻和暖如春老充,著一層夾襖步出監(jiān)牢的瞬間葡盗,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工啡浊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留觅够,地道東北人胶背。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像喘先,于是被迫代替她去往敵國(guó)和親钳吟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

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