Git 最核心的一個概念就是工作流。工作區(Workspace)是電腦中實際的目錄;暫存區(Index)像個緩存區域,臨時保存你的改動;最後是版本庫(Repository),分為本地倉庫和遠程倉庫。下圖真是一圖勝千言啊,就無恥盜圖了。
git remote add origin git@server-name:path/repo-name.git #添加一個遠程庫
git remote #要查看遠程庫的信息 git remote -v #顯示更詳細的信息
git push origin master #推送到遠程master分支
git clone git@server-name:path/repo-name.git #克隆遠程倉庫到本地(能看到master分支) git checkout -b dev origin/dev #創建遠程origin的dev分支到本地,並命名為dev git pull origin master #從遠程分支進行更新 git fetch origin master #獲取遠程分支上的數據
$ git branch --set-upstream branch-name origin/branch-name
,可以建立起本地分支和遠程分支的關聯,之後可以直接git pull
從遠程抓取分支。
另外,git pull
= git fetch
+ merge
to local
$ git push origin --delete bugfix To https://github.com/wuchong/jacman - [deleted] bugfix
git log --pretty=oneline filename #一行顯示 git log -p -2 #顯示最近2次提交內容的差異 git show cb926e7 #查看某次修改
git reset --hard HEAD^ #回退到上一個版本 git reset --hard cb926e7 #回退到具體某個版 git reflog #查看命令歷史,常用於幫助找回丟失掉的commit
用HEAD表示當前版本,上一個版本就是HEAD^
,上上一個版本就是HEAD^^
,HEAD~100
就是上100個版本。
git status #查看工作區、暫存區的狀態 git checkout -- <file> #丟棄工作區上某個文件的修改 git reset HEAD <file> #丟棄暫存區上某個文件的修改,重新放回工作區
git diff #查看未暫存的文件更新 git diff --cached #查看已暫存文件的更新 git diff HEAD -- readme.txt #查看工作區和版本庫裡面最新版本的區別 git diff <source_branch> <target_branch> #在合並改動之前,預覽兩個分支的差異
使用內建的圖形化git:gitk
,可以更方便清晰地查看差異。當然 Github 客戶端也不錯。
git rm <file> #直接刪除文件 git rm --cached <file> #刪除文件暫存狀態
git stash #儲藏當前工作 git stash list #查看儲藏的工作現場 git stash apply #恢復工作現場,stash內容並不刪除 git stash pop #恢復工作現場,並刪除stash內容
git branch develop #只創建分支 git checkout -b master develop #創建並切換到 develop 分支
git checkout master #切換到主分支 git merge --no-ff develop #把 develop 合並到 master 分支,no-ff 選項的作用是保留原分支記錄 git branch -d develop #刪除 develop 分支
git tag #列出現有標簽 git show <tagname> #顯示標簽信息
git tag v0.1 #新建標簽,默認位 HEAD git tag v0.1 cb926e7 #對指定的 commit id 打標簽 git tag -a v0.1 -m 'version 0.1 released' #新建帶注釋標簽
git checkout <tagname> #切換到標簽 git push origin <tagname> #推送分支到源上 git push origin --tags #一次性推送全部尚未推送到遠程的本地標簽 git tag -d <tagname> #刪除標簽 git push origin :refs/tags/<tagname> #刪除遠程標簽
設置 commit 的用戶和郵箱
git config user.name "xx" #設置 commit 的用戶 git config user.email.com "[email protected]" #設置 commit 的郵箱 git config format.pretty oneline #顯示歷史記錄時,每個提交的信息只顯示一行