git用戶文檔1 — git基礎

1. git基礎

1.1 分佈式

  1. 我們把遠端倉庫(雲端的倉庫)稱爲repo,repo必須有一個master分支,就是主分支。
  2. repo除了有一個master分支,還有很多其他的分支,若干個分支之間存儲的數據一版都是不一樣的
  3. 本地可以git clone下來repo的master分支,也可以git clone下來repo的其他的分支,因爲repo各個分支數據不一樣,本地clone下來的數據對應的也不一樣
  4. 從以上三點,我們可以理解一個問題,其實repo也可以理解成一個用戶管理的一個倉庫,只不過這個倉庫是一個公共的倉庫
  5. 本地倉庫管理的時候,一般開發一個功能的時候,會創建一個分支,開發完成之後,可以先提交到本地,並做記錄(git add,git commit)。我們可以選擇把本地的分支上傳到遠程的一個分支

1.2 git配置

Linux用戶首先需要安裝git,centos用戶一般使用yum install方式進行安裝
git的配置分爲兩個層面,一個是配置全局的,這個配置供全部的本地倉庫使用,一個是針對某一個特定的倉庫所做的配置,後者的配置會覆蓋前者的配置
git的配置的兩種方式:通過編寫配置文件和通過git config指令(git config –help查看配置幫助)

1.2.1 配置用戶

如果配置好了之後,輸入git log指令,我們可以看到用戶,郵箱等相關信息
配置用戶信息

$ git config --global user.name "Your Name"
$ git config --global user.email "Your Email"

例如

$ git config --global user.name "Neil"
$ git config --global user.email "[email protected]"

上面的指令中 –global表示配置的一個全局的選項,意思就是,這個配置對該用戶的所有本地倉庫都是有效的
全局的配置信息會被git保存在本地的~/.gitconfig文件中

1.2.2 配置顏色

配置git顏色之後,比如在查看本地diff的時候,會顯示不同的顏色,或者查看本地branch(分支)的時候,所在的分支會高亮顯示
使用下面指令進行顏色配置,下面的顏色配置基本可以滿足大多數用戶的需求,如果想要更多的配置,可以自行查閱

$ git config --global color.ui true

git基本命令

1.3.1 git clone

用於從克隆一個遠程倉庫,clone完成後,本地倉庫就有了遠程倉庫的完整副本

1.3.2 git init

除非是新建項目,基本不使用這個指令,該指令用於初始化一個git倉庫,主要是生成了git倉庫的一些配置文件

1.3.3 git add/rm

將本地的修改添加到staged狀態,可以這樣子理解本地倉庫裏面有很多數據,每次修改數據之後,首先要使用git add/rm將修改的數據添加到一個等待記錄區裏面,等待記錄區裏面的數據,要經過git commit -m記錄之後,才能夠進入到本地倉庫

1.3.4 git status

展示本地倉庫的一個狀態,此時會列出已經修改但是沒有提交到等待記錄區的文件,不屬於倉庫的新增的文件,還有已經存在等待記錄區的文件

1.3.5 git commit

將等待記錄區的文件,記錄一下,保存在本地倉庫,這一步的目的實際上是給每個修改做一個標記,方便快速的查找

1.3.6 git reset

一般用於修改本地git的歷史文件,一般有下面幾種情況
- git reset –hard ,直接拋棄新的commit和他的修改,將指針指向,慎用
- git reset –soft ,直接拋棄新的commit,但是將修改的內容,放入到了等待記錄區,一般用於修改最後提交的commit
- git reset,將等待記錄區所有內容全部移除,但是本地修改的文件沒有改動
實例1:本地最後一個commit是做測試用的,現在已經不需要了,可以直接刪除最後一個commit

git reset --hard HEAD~1

實例2:希望將本地的最後兩個commit合併成一個,可以先將最後一次的放入到等待記錄區,然後一起提交

git reset --soft HEAD~1 // 移除最後一個 commit,並且將修改放入 staged 區
git commit --amend --no-edit // 修改最後一個 commit(因爲上一個已經刪除最後一個 commit 了),並且添加 staged 中的內容
1.3.7 git branch

多人蔘與項目的時候,有各種分支,git branch就是用來處理分支的
git branch展示當前本地的所有分支,且高亮當前分支
git branch -a展示所有的本地分支和遠程分支
git branch -m重命名分支
git branch -D刪除分支

1.3.8 git checkout

一般使用git clone克隆代碼之後,開發的時候一般在分支上面開發
git checkout 分支名,切換分支
git checkout -b 新的分支名,新建分支

1.3.9 git remote

使用git clone之後,本地的項目就是remote(遠程),這個遠程是相對於雲端代碼庫來講的。我們把本地的這個remote叫做origin,這就可以理解git push origin master的含義了吧,就是把本地的origin遠程,推送到雲端的master。我們還可以寫git push origin hahah,這個hahah是雲端的分支名

查看本地的remote使用

git remote
git remote -v
1.3.10 git pull/fecth/push

pull是將雲端的remote和本地的分支進行merge
fetch是拉去雲端的remote,但是不會和本地分支merge,而是拉去到了FETCH_HEAD
push將本地的推送到雲端

1.3.11 git rebase/merge

當前用戶的分支是,需要將A推送rebase到B分支上面,執行

git rebase B

rebase首先會找到A和B的共同祖先的commit,然後把A分支上面的所有修改一點點加到B上面,如果有衝突則需要解決衝突,如果沒有就rebase成功了

這裏的B一般代表的公共開發的分支,比如一個任務,交給了幾個同學共同開發,此時會先建一個分支B,然後大家往B上面推送代碼,一旦B有更新,就需要將本地A的分支,rebase到B上面

rebase之後,B最後進行commit,這樣子非常清晰

但是merge不一樣,merge會按照時間順序合併兩個分支,會導致合併後的內容比較混亂,一般使用rebase而不適用merge

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