Git入門與開發

從頭開始複習git,熟悉git常見指令,安裝,操做等node

參考廖雪峯的教程git

廖雪峯git教程

安裝

Mac

有兩種方法github

  • brew安裝git
brew官網

brew使用教程app

  • Xcode安裝git
Xcode7.0後的版本默認安裝了git,在終端直接輸入git,看是否已安裝。

Windows

git官網

命令

建立版本庫

git init 建立倉庫ssh

git add file 添加到git中(放入暫存區)ui

git add . 一次性所有添加到暫存區this

git commit -m 'commit description' 提交修改好的文件到本地加密

git log 打印提交日誌.net

git log —oneline 打印提交日誌的簡寫版日誌

git diff --name-only HEAD~1 查看最近一次提交修改的文件

版本管理

git reset —hard HEAD^ 回滾到上一個版本(HEAD表明當前版本,HEAD^表明上一個版本,HEAD^^表明上兩個版本,依次類推)

git reflog 查看用戶全部的提交記錄

git reset —hard 1231234(提交id)回滾到1231234的提交版本

git checkout — file.txt 放棄工做區中對file文件的修改,不論暫存區是否有該文件的修改記錄,即該命令不會放棄暫存區的修改,只放棄工做區的修改

git reset HEAD file.txt 放棄暫存區的內容(即放棄上一次add的內容),退回到工做區,此時的工做區並非最新版本,而是在最新版本的基礎上用戶修改過的內容

關聯遠程倉庫

已github爲例,假設有兩種狀況:

1.本地已有git倉庫或項目文件,想在github進行關聯

  • 在github新建項目,不要勾選Initialize this repository with a README,默認建立便可
  • 關聯github,在本地倉庫終端輸入git remote add origin git@github.com:dwfrost/GitStudy.git ,注意origin後的內容(SSH)能夠從github上覆制
  • 推送內容到github git push -u origin master

2.本地是空文件,想從已有的github項目克隆

  • 打開github項目,複製SSH
  • 在本地倉庫終端輸入git clone git@github.com:dwfrost/GitStudy.git
  • 若是是加入已有的項目,須要檢出目標分支到本地,以便推送時本地分支和遠程分支同名

git remote rm origin 刪除已關聯的遠程倉庫(通常用不到)

git remote 查看關聯的遠程倉庫

一個本地庫能夠同時關聯github和碼雲:

git remote add github git@github.com:dwfrost/GitStudy.git

git remote add gitee git@gitee.com:dwfrost/GitStudy.git

注意,遠程倉庫名稱不是origin

而後分別推送

git push github dev

git push gitee dev

分支管理

git branch 查看當前所在的分支

建立

git branch dev 建立dev分支

切換

git checkout dev 切到dev分支

git checkout -b dev 建立並切換到dev分支

合併

git merge dev 將dev分支合併到當前分支

刪除

git branch -d dev 刪除dev分支(合併後才能刪除,且當前分支不能爲dev)

git branch -D dev 沒有合併時,強制刪除dev分支

暫存

git stash 將修改內容(stash)移到貯藏區
git stash pop 還原並刪除最新的暫存

git stash list 查看貯藏區的內容(stash)

恢復貯藏區有2種辦法:

1.git stash apply恢復貯藏區,但貯藏區依舊保留修改內容(stash),若是想刪除,使用git stash drop

2.git stash pop恢復貯藏區的同時刪除修改內容(stash)

推送

git push origin dev 將dev分支推送到遠程倉庫(origin)的dev分支上

標籤管理

git tag v1.0 新建標籤

git tag 查看標籤

git show v1.0 查看標籤信息

git tag v0.9 7ff4f56 給某次提交打上標籤

git tag -a v0.9 -m "version 0.9 released" 7ff4f56 -a後面是標籤名,-m後面是標籤說明

git tag -d v1.0刪除標籤

git push origin v1.0 推送標籤到遠程

git push origin --tags 一次性推送所有標籤

git push origin :refs/tags/v1.0 刪除遠程標籤(要先刪本地)

添加SSH

常見的遠程倉庫有github,碼雲等,爲了方便本地和遠程提交代碼,須要配置SSH加密,以下:

1.建立SSH key。

建立前,看一下有沒有。在用戶目錄下(mac),終端輸入ls -ah查看隱藏文件,發現存在.ssh文件夾,cd .ssh->open .,看到存在id_rsaid_rsa.pub兩個文件,說明已經有了SSH key。

若是沒有,就須要建立。

$ ssh-keygen -t rsa -C "youremail@example.com"

一路回車,建立成功。

2.添加公鑰

id_rsa:密鑰是用戶保管的

id_rsa.pub:公鑰是放在遠程倉庫,用於和密鑰配對使用。

複製id_rsa.pub文件中的內容,打開github,在帳戶管理選項中添加SSH key。

概念

工做區

工做區就是git可以管理到的工做區域,也就是該倉庫下的全部文件,包括正在修改的和已經存在的文件。

暫存區

暫存區是git記錄的修改狀態,用戶在工做區修改文件後,能夠用git add file將文件修改放入暫存區。

注意,若是用戶沒有把修改操做放入暫存區,而後直接提交,那git是不會提交用戶的操做的,git只提交暫存區中的修改操做。因此在開發過程當中,咱們一般以下操做:

* 寫代碼,寫代碼……

 * 一個小功能或模塊完成,直接提交

 * 若是代碼很少,先放入暫存區,而後接着寫代碼
 * 以爲ok了,放入暫存區,不ok千萬別放

* 全部的改動一次性提交

另外,若是暫存區存在文件,是不能直接pull的。若是工做區存在修改文件,能夠pull代碼。

配置

.gitignore

有些文件的變更或者信息是不須要提交的,好比node_modulesdist以及系統產生的垃圾文件等。示例以下:

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini

# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build

# My configurations:
db.ini
deploy_key_rsa

如何讓系統記住密碼(https方式)

git config --global credential.helper store 在用戶主目錄下.gitconfig文件生成下面的配置

[credential]
    helper = store

之後就不用每次都輸入帳號密碼了

配置別名

git config --global alias.st status 全局配置,用st代替status

去掉--global,那配置別名的文件存在於本倉庫的.git/config中。

全局配置的文件在用戶主目錄下的隱藏文件.gitconfig中。

若是想刪除別名,直接刪除[alias]下對應的行便可。

舉個栗子

刪除文件

  • git rm file 至關於 rm file,而後git add file
  • 是否真的刪除?
  • 是,git commit -m 'delete file'
  • 否,git reset HEAD file + git checkout -- file

多人協做

  • 查看遠程庫信息,使用git remote -v
  • 從本地推送分支,使用git push origin branch-name,若是推送失敗,先用git pull抓取遠程的新提交;
  • 在本地建立和遠程分支對應的分支,使用git checkout -b branch-name origin/branch-name,本地和遠程分支的名稱最好一致;
  • 創建本地分支和遠程分支的關聯,使用git branch --set-upstream branch-name origin/branch-name;若是使用sourcetree,右鍵origin,選擇檢出分支,便可在本地複製遠程分支。
  • 從遠程抓取分支,使用git pull,若是有衝突,要先處理衝突。

提交規範

每次代碼的提交是有意義的,常見的提交標記以下:

  • fea:新特性,新功能
  • fix:修改bug
  • doc:修改文檔
  • prod:構建
相關文章
相關標籤/搜索