Git常用命令及問題

Git常用命令及問題

  1. 列舉工作中常用的幾個git命令?

    顯示某次提交的內容 :git show $id

    新增文件的命令:git add file或者git add .

    提交文件的命令:git commit –m或者git commit –a

    查看工作區狀況:git status –s

    push到遠程倉庫:git push origin 分支名

    拉取合併遠程分支的操作:git fetch/git merge或者git pull

    查看提交記錄命令:git reflog

  2. 能不能說一下git fetch和git pull命令之間的區別?
    簡單來說:git fetch branch是把名爲branch的遠程分支拉取到本地;而git pull branch是在fetch的基礎上,把branch分支與當前分支進行merge;因此pull = fetch + merge。

  3. 如果本次提交誤操作,如何撤銷?

    在工作區刪除修改:git checkout – file(用版本庫中的文件替換修改)
    在暫存區刪除修改:git reset HEAD file 回退到工作區,再git checkout – file
    刪除版本庫修改:版本回退git reset –hard HEAD(HEAD指向當前版本,HEAD指向上一版本,HEAD^^指向上上版本)

  4. 爲什麼會產生衝突?

    ​ 因爲在合併分支的時候,master分支和dev分支恰好有人都修改了一個文件,Git不知道應該以哪一個人的文件爲準,所以就產生衝突了。

    如何解決?

    ​ 發生衝突,在IDE裏面一般都是對比本地文件和遠程分支的文件,然後把遠程分支上文件的內容手工修改到本地文件,然後再提交衝突的文件使其保證和遠程分支的文件一致。這樣纔會消除衝突,然後提交自己修改的部分。特別要注意下,修改本地衝突文件使其與遠程倉庫的文件保持一致後,需要提交後才能消除衝突,否則無法繼續提交。必要時可與同事交流,消除衝突。

    發生衝突,也可以使用命令

    1. 通過git stash命令,把工作區的修改提交到棧區,目的時保存工作區的修改;
    2. 通過git pull命令,拉取遠程分支上的代碼併合併到本地分支,目的是消除衝突;
    3. 通過git stash pop命令,把保存在棧區的修改部分合併到最新的工作空間中。
  5. git的分支管理策略是什麼?

    **master主分支:**最爲穩定功能比較完善的隨時可以發佈的代碼,請注意永遠不要在 master 分支上直接開發和提交代碼,以確保 master 上的代碼一直可用;

    **dev開發分支:**用做平時開發的主分支,並一直存在,用於時功能最新最全的分支,包含所有要發佈到下一個 release 的代碼,主要用於合併其他分支

    feature功能開發分支:用來開發新的功能。

    bugfix線上維護Bug分支

    **release預發佈分支(測試分支):**用於發佈準備的專門分支。當開發進行到一定程度,或者說快到了既定的發佈日,可以發佈時,建立一個 release 分支並指定版本號(可以在 finish 的時候添加)。開發人員可以對 release 分支上的代碼進行集中測試和修改bug。全部完成經過測試沒有問題後,將 release 分支上的代碼合併到 master 分支和 develop 分支

    steady分支(版本發佈分支)

  6. 新建git功能分支的步驟?

    git branch name 創建名字爲name的branch

    git checkout xxx_dev 切換到名字爲xxx_dev的分支

    git pull 從遠程分支拉取代碼到本地分支

    Git checkout -b main_furture_xxx 創建並切換到 main_furture_xxx 分支

    Git push origin main_furture_xxx 執行推送的操作,完成本地分支向遠程分支的同步

    在執行git pull的時候,提示當前branch沒有跟蹤信息:
    
    01: git pull origin  遠程分支名稱
    
    02:git branch --set-upstream-to=origin/遠程分支名稱 本地分支名       (先建立遠程分支與本地分支的連接,再pull)
    git pull    再pull
    
  7. 說明Git合併的兩種方法以及區別?

    git merge和git rebase

    git merge branch會把branch分支的差異內容pull到本地,然後與本地分支的內容一併形成一個committer對象提交到主分支上,合併後的分支與主分支一致;
    git rebase branch會把branch分支優先合併到主分支,然後把本地分支的commit放到主分支後面,合併後的分支就好像從合併後主分支又拉了一個分支一樣,本地分支本身不會保留提交歷史。

  8. git fetch、git merge、git pull的區別?

    git pull相當於git fetch和git merge,即更新遠程倉庫的代碼到本地倉庫

    git fetch:相當於從遠程獲取最新版本到本地。不會自動merge

    git merge:將內容合併到當前分支

    git pull:相當於是從遠程獲取最新版本並merge到本地

  9. 你使用過git stash命令嗎?你一般什麼情況下會使用它?

    git stash:是把工作區修稿下內容存儲在棧區

    以下情況會使用:

    • 解決衝突文件時,會先執行git stash,然後解決衝突;
    • 遇到緊急開發任務但目前任務不能提交時,會先執行git stash,然後進行緊急任務的開發,通過git stash pop取出棧區的內容繼續開發;
    • 切換分支時,當前工作空間內容不能提交時,會先執行git stash再進行分支切換。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章