1. 程式人生 > >Git常用命令與問題

Git常用命令與問題

目錄

Git常用命令:

  1. 檢視遠端分支: git branch –a
  2. 檢視本地分支: git branch *表示當前所在分支)
  3. 建立分支    : git branch  namenew
  4. 刪除分支    : git branch -d [branch-name]
  5. 切換分支    : git checkout namebranch
  6. git checkout -b  namebranch 新建並切換到本地 namebranch 分支
  7. git pull origin  namebranch 本地分支與遠端分支相關聯
  8. 顯示工作目錄和暫存區的狀態: git status
  9. 提交檔案到本地git程式碼庫: git commit
  10. 程式碼提交到遠端對應分支: git push <遠端主機名> <本地分支名>:<遠端分支名>
  11. git fetchgit pull的區別
  • git fetch:相當於是從遠端獲取最新版本到本地,不會自動合併。
  • git pull:相當於是從遠端獲取最新版本並merge到本地
  • git pull origin master:命令其實相當於git fetch git merge;在實際使用中,git fetch更安全一些,因為在merge前,我們可以檢視更新情況,然後再決定是否合併。
  • Git pull
    的作用是,從遠端庫中獲取某個分支的更新,再與本地指定的分支進行自動merge。完整格式是:git pull <遠端庫名> <遠端分支名>:<本地分支名
  1. git reset #撤回快取中的程式碼, 或撤回git commit 命令誤將程式碼提交到本地倉庫;
  • git reset mixed:此為預設方式,不帶任何引數的git reset,即時這種方式,它回退到某個版本,只保留原始碼,回退commitindex資訊
  • git reset --soft + 版本號:回退到某個版本,只回退了commit的資訊,不會恢復到index file一級,回退到某個版本,只回退了
    commit
    的資訊,不會改變已經修改過的程式碼。如果還要提交,直接commit即可
  • git reset --hard + 版本號:徹底回退到某個版本,本地的原始碼也會變為上一個版本的內容(這個要特別注意,因為原生代碼會修改)
  • git reset  --hard +版本號(commit id)
  • git reset --hard 1c388***** 撤回制定版本號(不是最新的那個版本號)
  1. git stash #儲存當前工作進度,會把暫存區和工作區的改動儲存起來。執行完這個命令後,在執行git status命令,就會發現當前是一個乾淨的工作區,沒有任何改動。使用git stash save 'message...'可以新增一些註釋
  2. git clean 命令用來從你的工作目錄中刪除所有沒有tracked過的檔案.
  3. git diff filename      #比較工作區和暫存區
  4. git log                #檢視本地git程式碼的日誌資訊:
  5. 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 addgit commit 後再切換

注:沒有add,也沒有commit,切換分支,修改的內容也會切到另一個分支。

Step3:git status