轉(zhuǎn)載顏海鏡的文章
轉(zhuǎn)自segmentfault
這篇文章記錄個人常用的一些命令见妒,和記不住的一些命令颗管。
《GotGitHub》github入門
《git詳解》系列文章
安裝
在 Windows 上安裝 Git 同樣輕松,有個叫做 msysGit 的項目提供了安裝包:
完成安裝之后寝蹈,就可以使用命令行的 git 工具(已經(jīng)自帶了 ssh 客戶端)了兑障,另外還有一個圖形界面的 Git 項目管理工具侄非。
配置
首先是配置帳號信息
config
git config --globaluser.name yanhaijinggit config --globaluser.email yanhaijing@yeah.netgit config --list#查看配置的信息
help
githelpconfig#獲取幫助信息
配置自動換行(自動轉(zhuǎn)換坑太大)
git config --globalcore.autocrlf input#提交到git是自動將換行符轉(zhuǎn)換為lf
配置密鑰
ssh-keygen -t rsa -Cyanhaijing@yeah.net#生成密鑰ssh -Tgit@github.com#測試是否成功
新建倉庫
init
gitinit#初始化
status
gitstatus#獲取狀態(tài)
add
gitadd file#.或*代表全部添加
commit
gitcommit -m"message"#此處注意亂碼
remote
gitremote add origin git@github.com:yanhaijing/test.git#添加源
push
gitpush-u origin master#push同事設(shè)置默認跟蹤分支
從現(xiàn)有倉庫克隆
gitclonegit://github.com/yanhaijing/data.js.gitgitclonegit://github.com/schacon/grit.git mypro#克隆到自定義文件夾
本地
add
gitadd *#跟蹤新文件git add -u [path]#添加[指定路徑下]已跟蹤文件
rm
rm *&git rm *#移除文件git rm-f*#移除文件git rm --cached *#取消跟蹤git mv file_from file_to#重命名跟蹤文件git log#查看提交記錄
commit
gitcommit#提交更新gitcommit-m'message'gitcommit-a#跳過使用暫存區(qū)域,把所有已經(jīng)跟蹤過的文件暫存起來一并提交gitcommit--amend#修改最后一次提交
reset
gitresetHEAD *#取消已經(jīng)暫存的文件gitreset--mixed HEAD *#同上gitreset--soft HEAD *#重置到指定狀態(tài)旺垒,不會修改索引區(qū)和工作樹gitreset--hard HEAD *#重置到指定狀態(tài)彩库,會修改索引區(qū)和工作樹gitreset-- files#重置index區(qū)文件git revert HEAD#撤銷前一次操作git revert HEAD~#撤銷前前一次操作git revert commit##撤銷指定操作
checkout
git checkout-- file#取消對文件的修改(從暫存區(qū)——覆蓋worktree file)git checkout branch|tag|commit-- file_name#從倉庫取出file覆蓋當前分支git checkout-- .#從暫存區(qū)取出文件覆蓋工作區(qū)
diff
git diff file#查看指定文件的差異git diff --stat#查看簡單的diff結(jié)果git diff#比較Worktree和Index之間的差異git diff --cached#比較Index和HEAD之間的差異git diff HEAD#比較Worktree和HEAD之間的差異git diff branch#比較Worktree和branch之間的差異git diff branch1 branch2#比較兩次分支之間的差異git diff commit commit#比較兩次提交之間的差異
log
gitlog#查看最近的提交日志gitlog--pretty=oneline#單行顯示提交日志gitlog--graph --pretty=oneline --abbrev-commitgitlog-num#顯示第幾條log(倒數(shù))
stash
git stash#將工作區(qū)現(xiàn)場(已跟蹤文件)儲藏起來,等以后恢復(fù)后繼續(xù)工作先蒋。git stash list#查看保存的工作現(xiàn)場git stash apply#恢復(fù)工作現(xiàn)場git stash drop#刪除stash內(nèi)容git stashpop#恢復(fù)的同時直接刪除stash內(nèi)容git stash apply stash@{0}#恢復(fù)指定的工作現(xiàn)場骇钦,當你保存了不只一份工作現(xiàn)場時。
分支
branch
git branch#列出本地分支git branch -r#列出遠端分支git branch-a#列出所有分支git branch -v#查看各個分支最后一個提交對象的信息git branch --merge#查看已經(jīng)合并到當前分支的分支git branch --no-merge#查看為合并到當前分支的分支git branch test#新建test分支git branch -m old new#重命名分支git branch-dtest#刪除test分支git branch -D test#強制刪除test分支git branch --set-upstream dev origin/dev#將本地dev分支與遠程dev分支之間建立鏈接
checkout
gitcheckout test#切換到test分支git checkout -b test#新建+切換到test分支git checkout -b test dev#基于dev新建test分支竞漾,并切換
merge
gitmergetest#將test分支合并到當前分支gitmerge--squash test ##合并壓縮眯搭,將test上的commit壓縮為一條
cherry-pick
git cherry-pickcommit#揀選合并窥翩,將commit合并到當前分支git cherry-pick -ncommit#揀選多個提交,合并完后可以繼續(xù)揀選下一個提交
rebase
git rebase master#將master分之上超前的提交鳞仙,變基到當前分支git rebase --onto master169a6#限制回滾范圍寇蚊,rebase當前分支從169a6以后的提交git rebase --interactive#交互模式git rebase --continue# 處理完沖突繼續(xù)合并git rebase --skip# 跳過git rebase --abort# 取消合并
遠端
git fetch origin remotebranch[:localbranch]# 從遠端拉去分支[到本地指定分支]git merge origin/branch#合并遠端上指定分支git pull origin remotebranch:localbranch# 拉去遠端分支到本地分支gitpushorigin branch#將當前分支,推送到遠端上指定分支gitpushorigin localbranch:remotebranch#推送本地指定分支棍好,到遠端上指定分支gitpushorigin :remotebranch#刪除遠端指定分支git checkout -b [--track] test origin/dev#基于遠端dev分支仗岸,新建本地test分支[同時設(shè)置跟蹤]
源
git是一個分布式代碼管理工具,所以可以支持多個倉庫借笙,在git里扒怖,服務(wù)器上的倉庫在本地稱之為remote。
個人開發(fā)時业稼,多源用的可能不多盗痒,但多源其實非常有用。
git remote add origin1 git@github.com:yanhaijing/data.js.gitgit remote#顯示全部源git remote -v#顯示全部源+詳細信息git remoterenameorigin1 origin2#重命名git remote rm origin#刪除git remote show origin#查看指定源的全部信息
標簽
當開發(fā)到一定階段時低散,給程序打標簽是非常棒的功能俯邓。
git tag#列出現(xiàn)有標簽git tag v0.1#新建標簽git tag -a v0.1-m'my version 1.4'#新建帶注釋標簽git checkout tagname#切換到標簽git push origin v1.5#推送分支到源上git push origin --tags#一次性推送所有分支git tag -d v0.1#刪除標簽git push origin:refs/tags/v0.1#刪除遠程標簽
總結(jié)
啊哈!終于總結(jié)完了熔号,以后不會的時候稽鞭,再也不用到處去找了。
其實還有兩個最有用的命令還未提到跨嘉。
githelp*#獲取命令的幫助信息git status#獲取當前的狀態(tài)川慌,非常有用,因為git會提示接下來的能做的操作