git branch <branch name>
在本地建立一個新的分支名爲<branch name>
, 此時在遠端看不到該分支, 須要將該分支推送到遠端。查看本身本地分支: git branch
查看剛纔新建立的分支java
git checkout <branch name>
進行本地分支的切換,切換至上述新建的分支<branch name>
git
git checkout -
切換至上一個分支,命令效果等同於cd -
github
git push --set-upstream origin <branch name>
推送該分支到遠端,並創建關聯。所謂關聯是指後續全部提交到該分支,如git push
, 若是不進行次操做,git 會進行提示vim
git branch -c
該命令等同於上述1.2步,新建立分支同時會進行切換到新分支緩存
git branch -r
: git branch
: git branch -a
上述都查看分支, 查看遠端分支, 查看本地分支, 查看全部分支,操做者當前所在分支用 * 號標記。ide
git branch -d <branch name>
刪除一個本地分支,切換至別的分支,不然刪除不了。svn
git push origin --delete <branch name>
刪除遠端分支函數
git status
查看當前分支工做區、暫存區的工做狀態,post
git status -sb
以簡潔的方式顯示工做區文件狀態fetch
git add <filename>
將該文件加入暫存區
git add . || git add -A
將全部的新建立的文件加入暫存區, 執行git add命令的時候,git首先會經過hash函數算出文件名A.java對應的sha-1值, 該值是32位16進值,git 取前兩位在.git 目錄objects目錄下建立一個之後30爲文件名的文件。
git diff xxx
查看文件的修改
git commit -m "<message>" <filename>
提交該文件至本地倉庫, 若是提交全部文件能夠使用git commit .
命令
git commit || git commit -a
提交全部文件修改,並打開vim界面,填寫 message , 做用是規範提交的 message,效果等同於arc。 能夠參照Angular 團隊的規範。修改本身本地提交 message 參照優雅的提交你的 Git Commit Message。
git pull
更新遠端的代碼並與本地進行合併, 若是本身修改了代碼, 獲取別人時會產生一次無用的 merge
提交記錄。
git pull --rebase
一樣的拉取遠端代碼,並與本地代碼自動合併,但不會產生上述無用的 commit , 讓分支節點迭代更加優美、清晰
git fetch
拉取遠端代碼,但不會進行 merge , 須要本身手動執行 git merge <filename>
進行合併
git push
將本地代碼修改推送至遠端
git log -x
查看最近X的提交日誌
git log -x --pretty=oneline
去除提交日誌裏的 date 以及 author, 顯示爲一行
git show --stat
顯示最近一次的提交日誌,並顯示修改的文件
git show <commit-id>
查看對應的 commit-id 修改詳情, 具體的修改內容查看。
git log HEAD~1
HEAD 指針指向的最後一次提交,也能夠查看最後一次提交的log
git show HEAD~1
查看最近一次的修改內容詳情
git checkout <filename>
前置條件沒有 commit 到本地倉庫,撤銷filename文件在工做區的修改到最近一次git add 或 git commit時的內容,就是清空當前工做區的修改
git reset --mixed <commit-id>
沒有 push 到遠端以前,回滾到指定 commit-id , mixed 是git默認的回滾方式,會清空暫存區保留工做區。如回滾前有兩個 commit-id
回滾後以下圖:
文件顯示沒有被 add 到緩存區,可是保留了該文件, 並將 commit-id 擦除,擦除的 commit-id 能夠恢復reflog
git reset --soft <commit-id>
reflog
git reset --hard <commit-id>
該命令會同時清除工做區和暫存區,並將 commit-id 擦除,擦除的 commit-id 能夠恢復reflog
git revert <commit-id>
在已經將代碼 push 到遠端後,回滾時使用該命令,注意指定的是要回滾的 commit-id , 回退結束後任何內容都不會保留。git reset 是把HEAD向後移動了一下,而git revert是HEAD繼續前進,只是新的commit的內容和要revert的內容正好相反,可以抵消要被revert的內容。
git merge <branchname>
開始前請切換你的 target 分支 ,執行該命令會將 <source branch> 代碼合併。缺點:git 默認是以 fast-forward 方式進行合併,屬於「快進方式」,這種狀況若是刪除分支,則會丟失分支信息。由於在這個過程當中沒有建立commit。
git merge --no-ff <branch name>
和上一條命令的區別在於下圖
tag 的做用是對某個提交點打上標籤,發佈版本後打tag,便於之後回滾特定版本。tag 是對某一版本的記錄,tag就是一個只讀的 branch ,通常爲每個可發佈的里程碑版本打一個tag
git tag v1.1.0
在本地對當前分支打 tag
git push origin --tag
將建立的 tag 提交至遠端
git tag -d v1.0.0
刪除本地tag
git push --delete origin v1.0.0
刪除遠端的 tag
git show <tag name>
SVN | Git | 說明 |
---|---|---|
svn checkout | git clone | 檢出項目 |
svn update | git pull git fetch | 更新 |
svn commit | git commit git push | 提交 |
svn add | git add | 添加 |
svn mv | git mv | 移動 |
svn rm | git rm | 刪除 |
svn status | git status | 查看狀態 |
svn log | git log | 查看log |
svn diff | git diff | 查看差別 |
svn revert | git checkout git reset git revert | 回滾 、撤銷 |
svn copy | git branch | 且分支 |
svn switch | git checkout | 切換分支 |
svn copy | git tag | 建立tag |
svn merge | git merge | 合併分支 |
參考文檔