Git簡明教程

【git教程】

    http://www.liaoxuefeng.com/ (廖雪峯博客)

    http://rogerdudler.github.io/git-guide/index.zh.html (Git簡明教程)




【常用命令】

    PS:在MacOS系統環境下的git命令。


工作流

    你的本地倉庫由 git 維護的三棵“樹”組成。

    > 工作區,它持有實際文件夾。

    > 暫存區(Stage),它像個緩存區域,臨時保存你的改動。

    > HEAD,它指向你最後一次提交的結果。

wKiom1TyrgaCJVD2AAC5zyGygMg610.jpg


配置本機git的用戶名和郵箱 | config

    在剛剛在本機安裝完git後,需要配置的信息。

git config --global user.name "shahdza"

git config --global user.email [email protected]


初始化git倉庫 | init

# 創建文件夾,並進入 Demo 目錄

mkdir Demo

cd Demo


# 初始化git倉庫(將 Demo 文件夾變成git倉庫)

git init


添加並提交 | add、commit

    都是在本地的git倉庫進行操作,不會改動遠程倉庫的版本。

# 添加文件到倉庫(放在暫存區)

git add readme.txt

git add *


# 提交添加到暫存區的文件到倉庫

git commit -m "提交信息"


克隆倉庫 | clone

# 克隆遠程倉庫到本地倉庫

git clone https://github.com/shahdza/Demo.git


# 克隆本地倉庫到本地另一個路徑

git clone /localpath


遠程推送 | remote、push

# 將本地倉庫與一個遠程庫關聯

git remote add origin https://github.com/shahdza/Demo.git


# 第一次推送master分支的所有內容

git push -u origin master

# 推送最新修改內容到master分支(也可以推送其它分支)

git push origin master


查看提交信息 | status、diff、log、reflog

# 查看倉庫當前狀態

git status


# 查看文件被修改過的內容(在還未commit時,工作區和本地git倉庫的差異)

git diff readme.txt


# 查看從最近到最遠的提交歷史

## 注意:比如有100個版本,通過reset回退到了第50個版本,那麼log只會顯示1~50的提交日誌

## 會顯示版本號、提交日期、提交信息

git log

git log --pretty=oneline


# 查看操作命令的歷史(記錄了每一次的操作命令)

git reflog


版本回退 | reset --hard

# 上一個版本、上上個版本、往上100個版本

git reset --hard HEAD^

git reset --hard HEAD^^

git reset --hard HEAD~100


# 回退到指定版本(通過版本號)

git reset --hard 3628164


丟棄工作區的修改 | checkout --

# 一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

# 一種是readme.txt已經添加到暫存區後,又作了修改,現在,撤銷修改就回到添加到暫存區後的狀態。

# 總之,就是讓這個文件回到最近一次[git commit]或[git add]時的狀態。

git checkout -- readme.txt


撤銷暫存區的修改(unstage),重新放回工作區 | reset HEAD

# 執行後,暫存區是乾淨的,工作區有修改

git reset HEAD readme.txt


 刪除倉庫中的某個文件(工作區文件也會刪除) | rm

# 刪除文件會放入暫存區,可以使用[git reset HEAD file]和[git checkout -- file]撤銷刪除

git rm readme.txt


分支管理 | branch

# 創建分支

git branch <name>

# 切換分支

git checkout <name>

# 創建+切換分支

git checkout -b <name>


# 合併某分支到當前分支

git merge <name>


# 刪除分支

git branch -d <name>

# 強行刪除

git branch -D <name>


# 查看分支

git branch

# 查看分支合併圖

git log --graph --pretty=oneline


標籤管理 | tag

# 給分支打上標籤

## 當前版本打上標籤

git tag v1.0

## 某個版本打上標籤

git tag v0.9 6224937


# 推送標籤到遠程倉庫

## 推送某個標籤

git push origin <tagname>

## 推送所有標籤

git push origin --tag


# 刪除標籤

git tag -d v0.1


# 刪除遠程標籤

## 需要先本地刪除,然後再遠程刪除

git tag -d v0.9

git push origin :refs/tags/v0.9


# 查看所有標籤

git tag


# 查看某個標籤信息

git show <tagname>


忽略特殊文件 | .gitignore

    1、在 Git工作區的根目錄創建一個特殊的 .gitignore 文件。

    2、在 .gitignore 文件中,添加需要忽略的文件。

    3、特殊文件大全:https://github.com/github/gitignore 

    例如:編寫Unity3D項目的 .gitignore 文件

=============== 
Unity generated
===============
Temp/
Library/

=====================================
Visual Studio / MonoDevelop generated
=====================================
ExportedObj/
obj/
*.svd
*.userprefs
/*.csproj
*.pidb
*.suo
/*.sln
*.user
*.unityproj
*.booproj

============
OS generated
============
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db


多人協作

    master分支:用於管理正式版本。

    dev分支:用於管理正在開發版本。

    bob分支:bob自己創建的分支,bob在這個分支下工作,然後合併到dev分支上。

    michael分支:michael自己創建的分支,在這個分支下工作,然後合併到dev分支上。

wKioL1TzJkXAJExvAACWU4ShLWA947.jpg


# 抓取分支

## 從遠程庫clone時,默認情況下,只能看到本地的master分支。

git clone https://github.com/shahdza/Demo.git


# 在本地創建和遠程分支對應的dev分支

git checkout -b dev origin/dev


# 建立本地dev分支和遠程dev分支的關聯

git branch --set-upstream dev origin/dev


# 更新分支

## 當小夥伴已經向origin/dev分支推送了他的提交。

## 而碰巧你也對同樣的文件作了修改,並試圖推送。

## 推送失敗,因爲小夥伴的最新提交和你試圖推送的提交有衝突

## 需要把最新的提交從origin/dev抓下來

## 然後,在本地合併,解決衝突,再推送

git pull



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