GIT 學(xué)習(xí)筆記 1 - HOW TO GIT

Git 的基本用法

設(shè)置姓名和地址

$ git config --global user.name "Your Name"
$ git config --global user.email "your_email@email.com"
  • 可以設(shè)置多用用戶,就不要用--global,具體用法以后在研究。

提高可讀性

$ git config --global color.ui auto

Mac OSX 上的vim設(shè)置

$ git config --global core.editor /usr/bin/vim -f
  • 如不設(shè)置會報錯:"There was a problom with the editor 'vi'."

設(shè)置 SSH Key

$ ssh-keygen -t rsa -C "your_email@email.com"
$ cat ~/.ssh/id_rsa.pub
# 把id_rsa.pub內(nèi)容添加到github.com
# 然后測試
$ ssh -T git@github.com

初始化倉庫

$ mkdir git-tutorial
$ cd git-tutorial
$ git init

查看倉庫的狀態(tài)

$ git status

十分常用,務(wù)必牢記!

向暫存區(qū)中添加文件

$ git add <file>
$ git status   # 查看發(fā)生的變化

保存?zhèn)}庫的歷史記錄

$ git commit -m "First commit"

git add 和 git commit 可以合拼成如下命令:

$ git commit -am "Your commit"
  • -m 參數(shù)后加“提交信息”
  • 不加參數(shù)可以記述詳細提交信息,格式如下:

第一行簡述內(nèi)容
第二行空行
第三行以后,記述更改的原因和詳細內(nèi)容

查看提交日志

$ git log
$ git log --pretty-short  # 只顯示簡述
$ git log <path|file>     # 只顯示指定目錄或文件
$ git log -p              # 顯示提交前后差異
$ git log -p <file>       # 只顯示改文件的差異

查看更改前后的差別

$ git diff
$ git diff HEAD           # 查看工作樹和最新提交的差別
  • 養(yǎng)成良好習(xí)慣:在執(zhí)行g(shù)it commit 之前先執(zhí)行 git diff HEAD 查看本次提交與上次提交的差別。
  • HEAD 時指向當(dāng)前分支中最新一次提交的指針。

顯示分支一覽表

$ git branch
\* master
   feature-A
  • 帶‘*’號表示當(dāng)前分支

創(chuàng)建、切換分支

$ git checkout -b <branch_name>

也可以分開成兩個命令:

$ git branch <branch_name>      # 創(chuàng)建分支
$ git checkout <branch_name>    # 切換分支
$ git checkout -                # 切換回上一個分支

合并分支

$ git merge --no-ff <branch_name>
  • 為了在歷史記錄中明確記錄下本次分支合并,需要創(chuàng)建合并提交,合并時加上參數(shù)--no-ff。

以圖表形式查看分支

$ git log --graph
  • 可以以圖片形式輸出提交日志,非常直觀,務(wù)必牢記。

回溯歷史版本

$ git reset
$ git reset --hard <HASH>
  • 要讓倉庫的HEAD、暫存區(qū)、當(dāng)前工作樹回溯到指定狀態(tài),需要用到git reset --hard
  • 只要提供目標(biāo)時間點的哈希值。

推進歷史狀態(tài)

$ git reflog
$ git reset --hard <HASH>
  • git reflog 查看當(dāng)前倉庫執(zhí)行過得操作日志
  • 即便開發(fā)者錯誤執(zhí)行了git 的操作,基本也可以利用git reflog來恢復(fù)到原先的狀態(tài)。

消除沖突

README.md

# git-toturial

<<<<<<<< HEAD
    - feature-A
========
    - fix-B
>>>>>>>> fix-B
  • =========以上部分是當(dāng)前HEAD的內(nèi)容,以下部分是要合并的fix-B分支的內(nèi)容。

修改提交信息

$ git commit --amend

壓縮歷史

$ git rebase -i
$ git rebase -i HEAD~2  # 最新的兩次歷史
  • pick改成fixup,原來的pick部分就會從歷史中抹去。
  • 一般用于拼寫錯誤等小修改。

推送至遠程倉庫

在github上新建一個倉庫。倉庫名最好與本地倉庫保持一致。

  • 創(chuàng)建時不要勾選README選項,因為github自動生成的README文件與本地倉庫失去了整合性。

添加遠程倉庫

$ git remote add origin git@github.com:<username>/<repository_name>.git
  • 執(zhí)行上述命令后,git會自動將遠程倉庫的名稱設(shè)置成origin

推送至master分支

$ git push -u origin master
  • -u 參數(shù)可以在推送的同時,將origin倉庫的master分支設(shè)置為本地倉庫當(dāng)前分支的upstream(上游)。
  • 添加了這個參數(shù),將來運行git pull從遠程倉庫獲取內(nèi)容時,本地倉庫的這個分支就可以直接從origin的master分支獲取內(nèi)容,省去了另外添加參數(shù)的麻煩。

推送至master以外的分支

$ git checkout <branch_name>
$ git push -u origin <branch_name>
  • 這樣就可以把分支push給遠程倉庫并保持分支名稱不變。

從遠程倉庫獲取

$ git clone git@github.com:<username>/<repository_name>.git

查看當(dāng)前分支的相關(guān)信息

$ git branch -a
  • -a 參數(shù)可以同時顯示本地倉庫和遠程倉庫的分支信息。

獲取遠程的分支

$ git checkout -b <branch_name> origin/<branch_name>
  • -b 參數(shù)后是本地倉庫中新建分支的名稱。
  • 再后面是獲取來源的分支名稱。

獲取最新的遠程倉庫分支

$ git pull origin <branch_name>
  • 這樣就可以將本地<brach_name>的分支更新到最新狀態(tài)。

備注

$ git config --global push.defalt matching
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,852評論 9 163
  • Git是目前最流行的版本管理系統(tǒng),也是最先進的分布式版本控制系統(tǒng)(distributed version cont...
    pro648閱讀 5,970評論 1 17
  • 1、可能有人會說,當(dāng)然是采購厲害!現(xiàn)在是買方市場,不管三七二十一,、先砍他 一刀,不行就買別人的,所以那些銷售都拼...
    勁祥閱讀 2,556評論 0 0
  • 這雨算是除舊的吧,下雨啥都阻下了;在被窩里躺了半天尸。過一天泡面生活,聽了一下午歌。給媽媽打了電話。 我已經(jīng)很努力...
    司馬蒙遜閱讀 144評論 0 1
  • 睡不著,哈兒。 今天,你又沒有理我,我又開始慌了,心情和上幾次你不理我的時候是一樣的。 不會又有啥子事情要發(fā)生哈!...
    xiao錢錢閱讀 289評論 0 0

友情鏈接更多精彩內(nèi)容