《git常用命令》
創建新的倉庫
-
新建文件夾,打開,執行
git init
檢出倉庫
-
創建一個本地倉庫克隆版本
git clone /path/to/repository -
創建遠程服務器上的倉庫
git clone username@host:/path/to/repository
Git工作流
一個本地倉庫由git維護的3客”樹”組成。
work flow:working dic –add– ==> Index –commit– ==>HEAD
添加和提交
-
添加到暫存區
git add <filename> git add * git add . -
提交到HEAD
git commit -m 'some comment' git commit -m "some comment" -
添加提交二合一
git commit -a -m 'some comment'
查看倉庫修改狀態
git status推送更改
-
現在的改動已經提交到本地倉庫的HEAD中,提交到遠程倉庫
git push
格式git push (remote) (branch),
第一次push必須這樣寫 git push origin master:master
推送到具體某一分支
git push origin someBranch分支操作
-
查看分支
git branch -
查看分支最后提交狀態
git branch -v--merged 與 --no-merged 這兩個有用的選項可以過濾這個列表中已經合并或尚未合并到當前分支的分支。 如果要查看哪些分支已經合并到當前分支,可以運行 git branch --merged
aBranchiss53 * master -
新建分支
git branch aBranch -
切換到aBranch分支
git checkout aBranch -
新建切換分支2合一
git checkout - b aBranch -
刪除分支
git branch -d aBranch
如果將要刪除的分支還有沒有合并的內容,刪除將會失敗,使用-D強制刪除
error: The branch 'testBranch' is not fully merged. If you are sure you want to delete it, run 'git branch -D testBranch'.-
分支重命名
git branch -m oldBranchName newBranchName
分支操作實例
master是默認的分支。在其他分支上進行開發,完成后再將他們合并到主分支上。
創建一個叫“feature_x”的分支,并切換過去
git checkout -b feature_x切換回主分支:
git checkout master刪除新建分支
git branch -d feature_x將分支推送到遠程倉庫
git push origin <branch>更新與合并
-
更新你的本地倉庫到最新改動
git pull
會在你的工作目錄 抓取fetch并合并merge遠端的改動
-
合并aBranch分支回master分支
git checkout master git merge aBranch
這種方式叫做直接合并(straight merge)
注意沒參數的情況下merge是fast-forward的,即Git將master分支的指針直接移到aBranch的最前方。
換句話說,如果順著一個分支走下去可以到達另一個分支的話,那么Git在合并兩者時,只會簡單移動指針,所以這種合并成為快進式(Fast-forward)
如何避免每次輸入密碼
如果你正在使用 HTTPS URL 來推送,Git 服務器會詢問用戶名與密碼。 默認情況下它會在終端中提示服務器是否允許你進行推送。
如果不想在每一次推送時都輸入用戶名與密碼,你可以設置一個 credential cache。 最簡單的方式就是將其保存在內存中幾分鐘,可以簡單地運行 git config --global credential.helper cache 來設置它。
壓合合并squashed commits
將一條分支上的若干個提交條目壓合成一個提交條目,提交到另一條分支的末梢。
把aBranch分支上的所有提交壓合成主分支上的一個提交,即壓合提交:
git checkout master git merge --squash aBranch此時,aBranch上的所有提交已經合并到當前工作區并暫存,但還沒有作為一個提交,可以像其他提交一樣,把這個改動提交到版本庫中:
git commit -m 'some comment'揀選合并cherry-picking
揀選另一條分支上的某個提交條目的改動帶到當前分支上。
每一次提交都會產生一個全局唯一的提交名稱,利用這個名稱就可以進行揀選提交。
比如在dev上的某個提交叫:321d76f
把它合并到master中:
git checkout master git cherry-pick 321d76f要揀選多個提交,可以給git cherry-pick命令傳遞-n選項,比如:
git cherry-pick –n 321d76f這樣在揀選了這個改動之后,進行暫存而不立即提交,接著可以進行下一個揀選操作,一旦揀選完需要的各個提交,就可以一并提交。
如果發生沖突,解決沖突完后執行git cherry-pick --continue繼續揀選合并。
解決沖突(conflicts)
查看遠程分支的完整列表
git ls-remote獲取遠程分支更多信息
git remote show新建遠程分支
git push --set-upstream origin newBranch提交分支數據到遠程服務器
git push origin <local_branch_name>:<remote_branch_name>刪除遠程分支
git push origin :develop git push origin --delete develop標簽
創建一個1.0.0的標簽
git tag 1.0.0 1b2e1d63ff1b2e1d63ff是你想要標記的提交ID的前10位字符,可使用下列命令獲取提交ID
git log替換本地改動
git checkout -- <filename>此命令會使用HEAD中的最新內容替換掉你的工作目錄中的文件。已添加到暫存區的改動以及新文件都不會受到影響。
假如你想丟棄你在本地的所有改動與提交,可以到服務器上獲取最新的版本歷史,并將你本地主分支指向它
git fetch orgin git reset --hard origin/master參考鏈接
- Git - 簡明指南
- Git社區參考指南
- Github Help
- 圖解Git
- Think like a git
總結
- 上一篇: dart - 如何制作新数组嵌套排序映射
- 下一篇: 跨平台技术栈