Git本地操作
一、Git 用戶信息配置
這裏的name和email記得換成自己在Github上註冊的!
# 設置全局用戶名和郵箱
$ git config --global user.name "xxx"
$ git config --global user.email "[email protected]"
二、Git的基本使用
1. 創建一個新倉庫並初始化 git init
git會把所有文件以及歷史記錄直接記錄成一個文件夾保存在你的項目中。
創建一個新的倉庫,首先要去到項目路徑下,執行git init。
這時Git會創建一個隱藏的文件夾.git,所有的歷史和配置信息都儲存在其中。
- 首先,選擇你的項目所在存放的位置,創建一個空目錄:並使用Git Bash進入該目錄
- 第二步,通過git init命令把這個目錄變成Git可以管理的倉庫:
$ git init
Git就把倉庫建好了,而且告訴你是一個空的倉庫(empty Git repository),當前目錄下多了一個.git的目錄,這個目錄是Git來跟蹤管理版本庫的。(不可手動修改這個目錄裏面的文件)如果你沒有看到.git目錄,那是因爲這個目錄默認是隱藏的。
2. 暫存文件 git add命令
在我們的firstGit目錄下新建一個readme.md
文件,內容隨意
- 第一步,用命令git add告訴Git,把文件添加到倉庫:
git add 文件名 添加單獨某一個文件到倉庫
$ git add readme.md
git add . 添加所有修改的文件
$ git add .
執行上面的命令,沒有任何顯示,說明添加成功。
- 第二步,用命令git commit告訴Git,把文件提交到倉庫:
## 提交修改
$ git commit -m "init file"
git commit命令,-m後面輸入的是本次提交的說明,可以輸入任意內容,當然最好是有意義的,這樣你就能從歷史記錄裏方便地找到改動記錄。
Git遠程倉庫
遠程倉庫地址:https://github.com/littlepan/firstGit.git
到目前爲止,我們的操作都是在本地的。(只存在於.git文件中)爲了能夠協同開發,我們需要把代碼部署到遠程倉庫服務器上。
1.鏈接遠程倉庫 – git remote add
遠程倉庫GitHub的地址爲:https://github.com/littlepan/firstGit.git
把本地倉庫鏈接到Github上,在命令行執行以下命令:
$ git remote add origin https://github.com/littlepan/firstGit.git
一個項目可以同時擁有好幾個遠程倉庫,爲了區分通常會起不同的名字。通常主要的遠程倉庫被稱爲origin。
2.上傳到服務器 – git push
把本地的提交傳送到服務器的動作叫做push。每次我們要提交修改到服務器上時,都會使用到git push。
git push命令有兩個參數,遠程倉庫的名字,以及分支的名字:
$ git push -u origin master
取決於你使用的服務器,push過程中你可能需要驗證身份(輸入用戶名、密碼)。
出現下面這個界面就表示ok了
3.克隆倉庫 – git clone
其他人可以看到你放在Github上的開源項目,他們可以用git clone命令下載到本地。
$ git clone https://github.com/littlepan/firstGit.git
本地也會創建一個新的倉庫,並自動將github上的版本設爲遠程倉庫。
4.從服務器上獲得修改 – git pull
如果你更新了遠程倉庫上的內容,其他人可以通過git pull命令拉取你的變動:
#查看當前分支
$ git branch
#查看本地和遠程的所有分支
$ git branch -a
#拉取遠程提交內容併合併到當前工作區
$ git pull
分支
當你在做一個新功能的時候,最好是在一個獨立的區域上開發(原始項目的拷貝),通常稱之爲分支。分支之間相互獨立,並且擁有自己的歷史記錄,直到你決定把他們合併到一起。這樣做的原因是:
已經可以運行的穩定版本的代碼不會被破壞
不同的功能可以由不同開發者同時開發
開發者可以專注於自己的分支,不用擔心被其他人破壞
在不確定哪個版本更好之前,同一個特性可以在不同的分支上創建多個版本,便於比較
1.創建新分支 – git branch
每一個倉庫的默認分支都叫master, 創建新分支可以用git branch <name>命令:
$ git branch dev
#查看本地和遠程的所有分支
$ git branch -a
創建了一個名爲dev的新分支,它目前和master分支是一樣的內容。
2.切換分支 – git checkout
使用git branch,可以查看分支狀態:
*
號表示當前活躍分支爲master,現在我們想在新分支上開發新的特性,使用git checkout切換分支。
有一個參數表示要切換到的分支。
$ git checkout dev
3.在新分支上修改代碼並提交
- 首先,我們修改firstGit項目中的index.html,並添加新的文件如home.html
- 第二步,我們需要新修改的代碼添加到倉庫中
# 添加新修改的內容到本地
$ git add .
# 提交修改到本地
$ git commit -m "add home.html and update index.html"
## 推送到遠程,因爲現在遠程還沒有dev分支,所以需要set-upstream
## 這樣,在遠程倉庫就有了dev分支,之後可以直接push
$ git push --set-upstream origin dev
這個過程可能會讓你輸入驗證信息
完成操作如下:
- 第三步,將代碼合併到master分支上
## devt解決後,把修改合併會master,並刪除dev分支
## 切換到主分支
$ git checkout master
## 把dev分支的內容合併到主分支master
$ git merge dev
此時代碼master 分支和dev分支代碼完全同步,如果需要刪除dev分支,可以使用
##刪除分支dev
$ git branch -d dev
此時本地的dev 分支被刪除了,但是遠程的並沒有被刪除,可以使用以下命令,刪除遠程的dev分支
## push
$ git push
## 刪除遠程分支
$ git push origin :dev
4. pull他人提交的代碼以及衝突的解決
在我們完成了某項功能的修改,需要push的遠程的時候,協作者可能已經提交了他們的修改,這時,我們需要先把最新的提交拉取下來,加入我們的修改,再重新提交上去。
由於我們前面的dev分支被刪除了,我們再遠程新建一個分支名爲dev,然後在本地建立分支拉去遠程dev分支上的代碼
#查看所有的分支,包含本地和遠程的
$ git branch -a
git branch不帶參數,列出本地已經存在的分支,並且在當前分支的前面用*標記,加上-a參數可以查看所有分支列表,包括本地和遠程,遠程分支一般會用紅色字體標記出來
- 首先,新建分支並切換到指定分支
$ git checkout -b dev origin/dev
# git checkout -b 本地分支名 origin/遠程分支名
- 第二步,我們使用另一個賬號在遠程dev分支上修改一些代碼
- 第三步,在本地的dev分支上修改一些代碼,讓本地和遠程有一些衝突
- 第四步,將本地的代碼使用git add 和git commit提交到本地倉庫
- 第五步,嘗試使用git push到遠程dev分支
$ git push -u origin dev:dev
# git push <遠程主機名> <本地分支名>:<遠程分支名>
push被駁回了,因爲有其他人已經提交了更新
- 第六步,拉取遠程的代碼
# 拉取遠程dev分支的代碼
$ git pull origin dev
#git pull origin 遠程分支的名字
git嘗試自動merge,但是失敗了,所以需要我們手動merge。此時,git已經把可能衝突的地方都寫進了文件
- 修改index.html,修改好後,使用git add 和git commit 提交
$ git add .
$ git commit -m "resolve confict in index.html"
- 最後,推送到遠程分支即可
$ git push -u origin dev:dev
- 此時就push成功了。
- 剩下的就是合併分支啦。
$ git checkout master
$ git merge dev
$ git push