Basic Operation
-
分支管理
- 切換分支
git checkout <branch name>
git checkout -b <branch name> #branch name 當前不存在 - 查詢當前所有分支
git branch - 新建分支
git branch <branch name> - 分支重命名
git branch -m <old_branch> <new_branch> - 刪除分支
git branch -d <BranchName> #本地分支
git push origin --delete <BranchName> #遠程分支
git push origin :<BranchName> #遠程分支
- 切換分支
檢查當前git工作區狀態
git status將修改添加到暫存區(文件的信息添加到索引庫)
git add [file]提交本次更改記錄
git commit
我們這里用的是git cz查看commit log
git loggit隱藏操作(stash)
對當前工作區已修改文件進行臨時存儲,適合于代碼未提交但是其他git操作需要當前工作區提交的場景
git status
恢復工作區
git status popgit提交
git push origin master #提交本地master到遠程的master分支
git push origin test:test #提交本地test分支作為遠程的test分支-
遠程倉庫相關
- 添加遠程倉庫
git remote add <name> <url>
例如: git remote add upstream https://github.com/xxxx/yyyy.git - 查看遠程庫詳情
git remote -v - 同步遠程庫
git fetch <name>
git fetch upstream
- 添加遠程倉庫
與遠程庫upstream同步
git fetch upstream
git checkout master #master與遠程庫upstream同步
git rebase upstream/mastergit比較兩個分支的文件的差異
git diff branch1 branch2 --stat //顯示出所有有差異的文件列表
git diff branch1 branch2 文件名(帶路徑) //顯示指定文件的詳細差異
git diff branch1 branch2 //顯示出所有有差異的文件的詳細差異-
兩個分支cherry-pick
git log 獲取某一分支需要cherry-pick到其他分支的commit id
git checkout xxx 切換到需要合入commit的分支
git cherry_pick <start-commit-id>…<end-commit-id> # start-commit-id 到 end-commit-id 之間所有的 commit,不包含start-commit-id
git cherry_pick <start-commit-id>^…<end-commit-id> # start-commit-id 到 end-commit-id 之間所有的 commit,包含start-commit-idgit cherry_pick commit_id1 commit_id2 與git cherry_pick commit_id2 commit_id1執行效果不同
Trouble Shooting
rebase常見問題
rebase過程中如果出現沖突,解決沖突后,執行git add后繼續執行git rebase --continue
取消已在進行中的rebase操作,執行git rebase --abort,版本回退到執行rebase操作前的狀態-
push無法成功
一般是由于本地代碼與遠程倉庫代碼不一致導致,有兩種解決辦法pull遠程倉庫,修改沖突后再提交
git pull
查看編輯沖突后再 git pull一下,就合并了。
git status
把本地分支test push到遠端分支
git push本地代碼覆蓋遠端代碼
git push --force
遠端分支多人使用情況下執行,有可能將他人的commit覆蓋刪除