咳咳夺姑,有如此完美的可視化界面不用墩邀,偏偏要用命令行,何必呢盏浙!
命令行這東西磕蒲,按需獲取留潦,當(dāng)你遇到需要完成的操作無從下手時(shí),可以過來看看辣往,沒必要全部記下來。
老司機(jī)專屬鏈接:Git 常用命令列表
零基礎(chǔ):倉庫初長成
Scene1: 我是項(xiàng)目的創(chuàng)建者殖卑,在git上已經(jīng)創(chuàng)建了一個(gè)新的倉庫站削,我要怎么推送本地代碼到遠(yuǎn)端倉庫?
1. git init // 在項(xiàng)目的根目錄執(zhí)行孵稽,初始化本地倉庫
2. git remote add [rmt_name] [git_url] // 構(gòu)建遠(yuǎn)程倉庫連接
3. git push [rmt_name] master // 將本地代碼推送到遠(yuǎn)端的master分支
Scene2: 我是項(xiàng)目的參與者许起,git上已經(jīng)有了代碼倉庫,我要怎么參與開發(fā)菩鲜?
git clone [git_url] // 復(fù)制遠(yuǎn)程倉庫到本地
入門:貢獻(xiàn)自己一份力
Scene1: 我對(duì)本地倉庫進(jìn)行了修改园细,我要怎么提交到遠(yuǎn)端倉庫?
1. git status // 查看哪些文件被修改了接校,發(fā)現(xiàn)所有的文件修改都是你所希望的
2. git add . // 將所有的文件修改都添加到暫存區(qū)
3. git commit -m "本次提交的信息" // 將暫存區(qū)的內(nèi)容提交到本地倉庫
4. git pull [origin] [branch_name] // 拉取并合并遠(yuǎn)端的倉庫,發(fā)現(xiàn)沒有任何沖突,太開心了
5. git push [origin] [branch_name] // 將本地倉庫提交到遠(yuǎn)端倉庫
Scene2: 我想撤銷對(duì)某些文件的修改(還沒有add)
1. git status // 查看哪些文件被修改了枢步,發(fā)現(xiàn)有些文件不應(yīng)該被修改
2. git checkout [file_name] // 撤銷對(duì)原有文件的修改嘉竟,如果有多個(gè)文件,重復(fù)執(zhí)行此操作
// 2. 如果想撤銷所有修改诽凌,git checkout .
3. git clean -df // 恢復(fù)新增的或刪除的文件
Scene3: 我想撤回add操作(已經(jīng)add但是還沒commit)
git reset // 把a(bǔ)dd的文件全部從暫存區(qū)取出來毡熏,如果只想取出單個(gè)文件,后面可以跟文件名
Scene4: 我想撤回commit操作(已經(jīng)commit但是還沒有進(jìn)行push)
1. git log // 查看所有的提交日志侣诵,復(fù)制上一次commit的commit_id
2. git reset --soft [commit_id] // 撤銷此次commit并保留所有的修改
Scene5: 我進(jìn)行了commit操作痢法,但是我發(fā)現(xiàn)我的標(biāo)簽寫錯(cuò)了,怎么辦杜顺?
1. git commit --amend // 執(zhí)行后編輯信息保存即可(你可能需要一些簡單的vim知識(shí))
2. git commit --amend --reset-author // 修改上一次提交的作者信息
Scene6: 我想回滾到之前的某一個(gè)版本
1. git log // 查看提交日志财搁,復(fù)制你想要回滾到的那一次提交的commit_id
// 注意:此次回滾為強(qiáng)制回滾,這之后的所有修改都不會(huì)被保存
// 如果你后悔了哑舒,只需要到遠(yuǎn)端倉庫中復(fù)制當(dāng)前head的commit_id再執(zhí)行一遍此操作即可
2. git reset --hard [commit_id]
// 此操作紅色報(bào)警妇拯,不到萬不得已千萬不要用!O赐摇越锈!
3. git push -f [rmt_name] [branch_name] // 強(qiáng)制覆蓋遠(yuǎn)端倉庫,即進(jìn)行遠(yuǎn)端倉庫的回滾膘滨,此操作不可逆
Scene7: 最不想看到的結(jié)果甘凭,pull或者merge的時(shí)候發(fā)生沖突了
1. 根據(jù)合并結(jié)果對(duì)所有的沖突進(jìn)行手動(dòng)處理
2. git add .
3. git commit -m "合并信息" // 重新提交一遍
4. git push [rmt_name] [branch_name]
Scene8: 想查看某個(gè)文件具體的修改內(nèi)容?
git diff [file_name] // 對(duì)比該文件修改前后的區(qū)別火邓,如果無文件名將對(duì)比所有文件的修改
Scene9:我想查看所有的提交記錄
1. git log // 查看所有的提交記錄
2. git log [branch_name] // 查看某分支的提交記錄
3. glog // 等價(jià)于 git log --oneline丹弱,簡化日志德撬,一次提交占一行,有利于全局觀察
進(jìn)階:花里胡哨的一份力
Scene1: 我要新建一個(gè)分支
1. git branch [new_branch_name] // 創(chuàng)建一個(gè)新的分支
2. git checkout [new_branch_name] // 如果需要切換到新分支請(qǐng)執(zhí)行此命令
// 上面兩個(gè)步驟可以合并為 git checkout -b [branch_name]
Scene2: 我要查看現(xiàn)有的所有分支
git branch // 查看分支
Scene3: 分支開發(fā)完了躲胳,我要合并到主分支master上
1. git checkout master // 切換到master
2. git merge [branch_name] // 合并分支到master蜓洪,如果有沖突,你懂的
3. git merge --patch [branch_name] [file_name] // 只合并單個(gè)文件到master上坯苹,比較少用
Scene4: 分支開發(fā)完了隆檀,也就沒有存在的必要了
1. git branch -d [branch_name] // 刪除本地分支, -d會(huì)判斷是否合并,-D會(huì)強(qiáng)制刪除
2. git push rmt --delete [branch_name] // 刪除遠(yuǎn)程倉庫的分支
大師:優(yōu)化提交記錄 - rebase
- 超高能警報(bào)4馀取恐仑!雖然rebase可以簡化提交記錄,如果你用的是
Source Tree
等可視化工具为鳄,那么點(diǎn)一下就可以了裳仆,如果是用的命令行,請(qǐng)?jiān)谑炀毷褂眠^rebase
命令的高手陪伴下使用該命令9虑铡F缯濉!否則K狙怠9辜瘛!后果你承擔(dān)不起?遣隆9椿铡!
普通的提交最大的問題统扳,就是有太多的
commit
喘帚,當(dāng)參與人數(shù)較多時(shí),會(huì)出現(xiàn)大量的如merge這種無用的commit日志咒钟,而且在查看提交記錄圖時(shí)吹由,會(huì)有很多從分支上合并到主分支的線條,看起來不美觀朱嘴。
// 下面的流程會(huì)把本地的commit一一粘貼到master上倾鲫,而不是merge
// 2、3步驟可以合并為 git pull -rebase orgin master
1. git commit -m ''
2. git fetch orgin/master
3. git rebase orgin/master
4. git push orgin master
無卵用:不常用但是一定會(huì)用到的命令
Scene1: 管理現(xiàn)有的倉庫鏈接
1. git remote // 查看現(xiàn)有的遠(yuǎn)程倉庫鏈接名
2. git remote -v // 相比于上一條多了url信息萍嬉,更加詳細(xì)
3. git remote rm [rmt_name] // 刪除一個(gè)現(xiàn)有鏈接
Scene2: 配置本地git的信息
1. git config --global user.name [user_name] // 配置用戶名
2. git config --global user.email [user_email] // 配置郵箱
打標(biāo)簽(tag)
1. git tag v1.0 commit_id // 給某一此commit添加tag
2. git push origin master --tags // 把本地的標(biāo)簽push到遠(yuǎn)程倉庫
<span id="list"></span>
Git 常用命令列表
1. git init // 初始化本地倉庫
2. git remote add [rmt_name] [git_url] // 構(gòu)建遠(yuǎn)程倉庫連接
3. git pull [rmt_name] [branch_name] // 拉取遠(yuǎn)程分支并自動(dòng)合并
4. git push [rmt_name] [branch_name] // 將本地代碼推送到遠(yuǎn)端的master分支
5. git fetch [rmt_name] [branch_name] // 拉取遠(yuǎn)程分支乌昔,但不自動(dòng)
6. git clone [git_url] // 拷貝遠(yuǎn)程倉庫到本地
7. git status // 查看哪些文件被修改了,發(fā)現(xiàn)所有的文件修改都是你所希望的
8. git add . // 將所有的文件修改都添加到暫存區(qū)
9. git commit -m "本次提交的信息" // 將暫存區(qū)的內(nèi)容提交到本地倉庫
10. git checkout [file_name] // 撤銷對(duì)原有文件的修改壤追,如果有多個(gè)文件磕道,重復(fù)執(zhí)行此操作
11. git checkout . // 撤銷本次所有的修改
12. git clean -df // 恢復(fù)新增的或刪除的文件
13. git reset // 把a(bǔ)dd的文件全部從暫存區(qū)取出來,如果只想取出單個(gè)文件行冰,后面可以跟文件名
14. git reset --soft [commit_id] // 撤銷此次commit并保留所有的修改
15. git reset --hard [commit_id] // 撤銷此次commit并刪除所有的修改
16. git log // 查看所有的提交日志
17. git log --oneline // 查看所有的提交日志(簡化版)
18. git log [branch_name] // 查看某分支的提交記錄
19. git commit --amend // 修改上一次提交的信息(未push)
20. git commit --amend --reset-author // 修改上一次提交的作者信息(未push)
21. git push -f [rmt_name] [branch_name] // 強(qiáng)制覆蓋遠(yuǎn)端倉庫溺蕉,即進(jìn)行遠(yuǎn)端倉庫的回滾伶丐,此操作不可逆
22. git diff [file_name] // 對(duì)比該文件修改前后的區(qū)別,如果無文件名將對(duì)比所有文件的修改
23. git branch [new_branch_name] // 創(chuàng)建一個(gè)新的分支
24. git checkout [new_branch_name] // 切換到新分支
25. git branch // 查看分支
26. git merge [branch_name] // 合并分支
27. git merge --patch [branch_name] [file_name] // 只合并單個(gè)文件
28. git branch -d [branch_name] // 刪除本地分支, -d會(huì)判斷是否合并疯特,-D會(huì)強(qiáng)制刪除
29. git push rmt --delete [branch_name] // 刪除遠(yuǎn)程倉庫的分支
30. git remote // 查看現(xiàn)有的遠(yuǎn)程倉庫鏈接名
31. git remote -v // 相比于上一條多了url信息哗魂,更加詳細(xì)
32. git remote rm [rmt_name] // 刪除一個(gè)現(xiàn)有鏈接
33. git config --global user.name [user_name] // 配置用戶名
34. git config --global user.email [user_email] // 配置郵箱
35. git tag v1.0 commit_id // 給某一此commit添加tag
36. git push origin master --tags // 把本地的標(biāo)簽push到遠(yuǎn)程倉庫