Git使用小結

在剛工作的時候,肯定要接觸到版本控制系統,版本控制系統對於大型項目的開發還是很重要的。

畢業工作後,第一個接觸的版本控制系統就是svn,這個使用也的確簡單,不過用的是圖形化的軟件,只是點點什麼的,使用起來很方便。由於svn的限制,不能本地離線的commit。

後來移動項目逐步遷移到了git上,那時候接觸git。從svn轉到git還是非常不適應的,變化很大,而且感覺git很不好用,那時候的想法是比svn差多了。於是開始用sourcetree的圖形化軟件來操作git。那時候一個人負責一個項目,於是平時也就是add,commit,push之類的,使用起來也沒碰到什麼問題。

換了新環境後,還是用的git,而且多人負責一個項目,conflict的場景就出現了。於是那時候查了很多資料,覺得git是個好東西,只是入門有點兒痛苦,於是那時候乾脆放棄sourcetree,開始全部用命令行版本來進行操作,現在想來是個明確的決定。

用熟悉了git後,感覺git真是個好東西,還能支持本地倉庫的版本管理,於是自己開發的項目全部用這個來管理了,再也不用複製粘貼,每次更新了後怕出問題找不到問題。

下面我就按我熟悉命令的時間段來以我個人的觀點來記錄下常用的git命令吧,當然肯定不會非常正確,而且使用場景也只是簡單的場景,複雜的參數我這兒也不涉及,只是涉及到常用的一些參數,只是我的想法而已,歡迎拍磚。

工作區 暫存區 本地倉庫

工作區就是我們操作修改的文件,可見

暫存區就是將修改提交的某個臨時區域

本地倉庫就是我們最終commit到的地方,這個倉庫可以和遠程倉庫進行提交或者拉取

git clone

克隆一個遠程的git倉庫到本地,並且創建本地的倉庫與遠程倉庫進行關聯,簡單的說就是clone後,你就可以在commit到本地的倉庫並且push到遠程倉庫了。

git branch

查看當前git倉庫的分支,列一下常用的一些參數

  • git branch -a 常看所有的分支,包括本地和遠程的
  • git branch -vv 可以查看本地分支是否關聯到了遠程分支
  • git branch 無參數,查看本地分支
  • git branch -d 刪除某個分支

git checkout

這是一個很常用的命令,對於不同的參數也有不同的處理方法,比較複雜,但是也非常的常用。

  • git checkout

    可以在不同的分支之間進行切換,參數跟的是分支名

  • git checkout

    可以恢復文件到工作區中。這個恢復是從暫存區中恢復的,也就是你提交了某個文件到了暫存區,然後又對這個文件進行了修改,然後進行checkout操作,那麼你將會回滾到暫存區中的文件內容,而你沒有存到暫存區中,checkout則直接恢復到本地倉庫中的內容。當然你假如希望跳過暫存區直接恢復到原始內容,請使用git checkout HEAD

  • git checkout -b

    創建一個新的分支,並且將新的分支和遠程分支進行跟蹤關聯。當你忽略remote-branch的時候,則是從當前分支拷貝一個副本作爲分支,不跟蹤任何遠程分支。

    這個使用也很多,開發某個版本的時候,創建一個本地分支來進行開發,然後將這個本地分支merge到當前的分支下,再進行提交,這個是常用的開發步驟。

git rm

  • git rm

    刪除一個版本跟蹤的文件,並且提交到暫存區

git reset

  • git reset

    丟棄暫存區中的某個文件,不會影響工作區的內容

git status

  • git status

    查看當前git倉庫的狀態,修改的文件,新增的文件,版本是否最新等等

git commit

  • git commit

    提交到本地分支上

git push

  • git push

    提交到遠程git倉庫上,默認是當前分支跟蹤的遠程分支,可以指定遠程分支

git pull

  • git pull

    拉取最新遠程倉庫的內容到本地倉庫中,會影響本地倉庫,工作區,並自動進行合併,有可能有衝突,無法自動解決衝突的話,必須手動解決並且提交。

git merge

  • git merge

    將branch-name的分支合併到當前的分支上

git fetch

  • git fetch :

    這是一個比較複雜的命令,這裏有幾個基本的用法。

    git fetch origin dev

    拉取origin dev的最新的內容到本地,應該是作爲分支存在的,但是用branch命令是無法查看到的,但是可以通過origin/dev來訪問。於是我們在執行了這個命令後,我們可以使用

    git diff origin/dev來查看哪些文件被修改了,確定好後,我們就可以使用 git mergy origin/dev來把最新的分支合併到當前分支上了

    git fetch origin dev:temp

    這個比較好理解,就是上面的origin/dev分支變成了temp分支,就是遠程最新的內容了,我們就可以執行合併什麼的操作,然後可以branch -d來把這個分支給刪除了。

    總結一下就是不加local branch就是生成了一個系統的分支,隱形的(待考證),我們可以將這個當做分支來進行操作

    git fetch + git merge = git pull

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章