Git常用命令與問題
目錄
Git常用命令:
- 檢視遠端分支: git branch –a
- 檢視本地分支: git branch (*表示當前所在分支)
- 建立分支 : git branch namenew
- 刪除分支 : git branch -d [branch-name]
- 切換分支 : git checkout namebranch
- git checkout -b namebranch 新建並切換到本地 namebranch 分支
- git pull origin namebranch 本地分支與遠端分支相關聯
- 顯示工作目錄和暫存區的狀態: git status
- 提交檔案到本地git程式碼庫: git commit
- 程式碼提交到遠端對應分支: git push <遠端主機名> <本地分支名>:<遠端分支名>
- git fetch和git pull的區別
- git fetch:相當於是從遠端獲取最新版本到本地,不會自動合併。
- git pull:相當於是從遠端獲取最新版本並merge到本地
- git pull origin master:命令其實相當於git fetch 和 git merge;在實際使用中,git fetch更安全一些,因為在merge前,我們可以檢視更新情況,然後再決定是否合併。
- Git pull
- git reset #撤回快取中的程式碼, 或撤回git commit 命令誤將程式碼提交到本地倉庫;
- git reset –mixed:此為預設方式,不帶任何引數的git reset,即時這種方式,它回退到某個版本,只保留原始碼,回退commit和index資訊
- git reset --soft + 版本號:回退到某個版本,只回退了commit的資訊,不會恢復到index file一級,回退到某個版本,只回退了
- git reset --hard + 版本號:徹底回退到某個版本,本地的原始碼也會變為上一個版本的內容(這個要特別注意,因為原生代碼會修改)
- git reset --hard +版本號(commit id)
- git reset --hard 1c388***** 撤回制定版本號(不是最新的那個版本號)
- git stash #儲存當前工作進度,會把暫存區和工作區的改動儲存起來。執行完這個命令後,在執行git status命令,就會發現當前是一個乾淨的工作區,沒有任何改動。使用git stash save 'message...'可以新增一些註釋
- git clean 命令用來從你的工作目錄中刪除所有沒有tracked過的檔案.
- git diff filename #比較工作區和暫存區
- git log #檢視本地git程式碼的日誌資訊:
- git show [commit_id] #檢視某次歷史提交資訊的完整資訊
Git提交程式碼流程:
注:程式碼編譯同並且驗證通過後才可提交程式碼!
Step1: git pull #作用是:取回遠端主機某個分支的更新,再與本地的指定分支合併。
Step2: git status #檢視當前分支的修改狀態:
- Untracked: 未跟蹤, 此檔案在資料夾中, 但並沒有加入到git庫, 不參與版本控制. 通過git add 狀態變為Staged.
- Modified: 檔案已修改, 僅僅是修改, 並沒有進行其他的操作.
- deleted: 檔案已刪除,本地刪除,伺服器上還沒有刪除.
- renamed:
Step3: git add file1 file2… #將狀態改變的程式碼提交快取;注:git add .要慎用,修改那個檔案就add那個檔案。
Step4: git commit -m “註釋部分”#將程式碼提交到本地庫中
Step5: git push #將程式碼推送到伺服器;
格式:git push localbranach: origin remotebranch
Step6:提交後要@審閱程式碼的人
Git基本概念:
工作區:git clone 或 git init之後,目錄下看到看到一個.git隱藏資料夾,這個資料夾就是版本庫,目錄及其子目錄就是工作區,程式碼修改儲存後,在可以直接編譯,執行。
暫存區:git add 把檔案從工作區被提交到暫存區,但此時檔案並沒有真正進入到版本庫當中,檔案目前只處於一箇中間狀態。
本地版本庫:git commit這個命令將處於中間狀態的檔案(暫存區的檔案)提交到本地的版本庫中。
遠端版本庫:git push這個命令將處於本地版本庫提交到遠端版本庫中。
git commit --amend使用:
如果的程式碼已經提交到遠端git庫,reviewer稽核時候發現程式碼有點問題,需要修改,通常有2種方法:
方法1:reviewer將你提交的所有程式碼 abandon,然後你回去 通過git reset …將程式碼回退到你程式碼提交之前的版本,然後你修改出問題的程式碼,然後 git add commit,最後git push
方法2:reviewer不abandon程式碼,回去之後,可以直接修改出問題的檔案,修改好之後,git add 該出問題檔案,然後 git commit --amend ,最後git push。這種方式可以比較方便的保持原有的Change-Id,推薦使用。
新建本地分支並拉取遠端指定分支:
git checkout –b newbranch origin/remotebranch
注意事項:防止本地其他分支code的干擾,建完新分支後,執行
- git status
- git reset -hard
- git clean -df
切換分支注意事項:
Step1:make clean #清除make產生的中間檔案
Step2:git stash 或者git add、git commit 後再切換
注:沒有add,也沒有commit,切換分支,修改的內容也會切到另一個分支。
Step3:git status