https://www.cnblogs.com/mjbin/p/5820942.html
Git簡介:
Git是分佈式的,這意味着它並不依賴於中心服務器來保存你文件的舊版本。任何一臺機器都可以有一個本地版本的控制系統,其實就是一個硬盤上的文件,我們稱之爲倉庫(repository)。如果是多人協作的話,你還需要一個線上倉庫,用來同步代碼等信息。
1.安裝Git
2.配置Git(記錄操作誰幹的,到時候好甩鍋)
$ git config --global user.name "My Name"
$ git config --global user.email [email protected]
本地倉庫(repository)操作:
1.創建一個新倉庫 – git init
$ cd Desktop/git_exercise/
$ git init
2.檢查狀態 – git status
Git status是另一個非常重要的命令,它反饋給我們倉庫當前狀態的信息:是否爲最新代碼,有什麼更新等等。
3.暫存 – git add
Git有個概念叫“暫存區“,你可以把它看成一塊空白的畫布,包裹着所有你可能會提交的變動。可以通過 git add 命令添加內容,最後使用 git commit 提交(創建一個快照)。
添加一個文件
git add filename
如果需要提交目錄下的所有內容,可以這樣做:
git add -A
同樣可以做修改和刪除
4.提交 – git commit
一次提交代表着我們的倉庫到了一個新的狀態,就像是一個快照,允許我們像使用時光機一樣回到之前的某個時間點。
創建提交,需要我們至少在到暫存區有一次修改(剛纔我們做了git add,可以是修改,刪除),然後輸入命令:
git commit -m "提交描述."
4.撤銷修改 – git checkout
git checkout功能是本地所有修改的。沒有的提交的,都返回到原來的狀態
遠程倉庫:
1.本地倉庫鏈接遠程倉庫 – git remote add
把本地倉庫鏈接到Github上,在命令行執行以下內容:
$ git remote add origin https://github.com/igeekbar/awesome-project.git
一個項目可以同時擁有好幾個遠程倉庫,爲了區分通常會起不同的名字。通常主要的遠程倉庫被稱爲origin。
https://github.com/igeekbar/awesome-project.git 遠程倉庫地址
2.上傳到服務器 – git push
把本地的提交傳送到服務器的動作叫做push。每次我們要提交修改到服務器上時,都會使用到git push。
$ git push origin master
origin 遠程倉庫名字 master 本地倉庫默認分支名字
3.克隆倉庫 – git clone
其他人下載遠程倉庫項目到本地,他們可以用git clone命令下載到本地。
$ git clone https://github.com/igeekbar/awesome-project.git
https://github.com/igeekbar/awesome-project.git遠程倉庫項目地址
本地會自動創建一個本地倉庫,並創建一個默認分支,名字叫master,並自動將github上的版本設爲遠程倉庫。
4.從服務器上獲得修改 – git pull
更新遠程倉庫的代碼到本地
git pull origin master
origin 遠程倉庫名字 master 本地倉庫默認分支名字
分支
當你在做一個新功能的時候,最好是在一個獨立的區域上開發(原始項目的拷貝),通常稱之爲分支。分支之間相互獨立,並且擁有自己的歷史記錄,直到你決定把他們合併到一起。這樣做的原因是:
- 已經可以運行的穩定版本的代碼不會被破壞
- 不同的功能可以由不同開發者同時開發
- 開發者可以專注於自己的分支,不用擔心被其他人破壞
- 在不確定哪個版本更好之前,同一個特性可以在不同的分支上創建多個版本,便於比較
1.創建新分支 – git branch
每一個本地倉庫的默認分支都叫master, 創建新分支可以用git branch <name>命令:
$ git branch bugs
創建一個叫bugs的分支
2.切換分支 – git checkout
git branch
amazing_new_feature
* master
* 號表示當前活躍分支爲master,現在我們想在新分支上開發新的特性,使用git checkout切換分支。有一個參數表示要切換到的分支。
git checkout amazing_new_feature
3.合併分支 – git merge
我們在“bugs”分支想添加一個lalala.txt。和之前一樣我們來創建文件、添加到暫存區、提交。
git add lalala.txt //添加文件lalala.txt到本地倉庫分支bugs的暫存區
git commit -m "" //將bugs暫存區的文件lalala.txt提交到本地倉庫分支bugs
切換回來本地倉庫的默認分支master,lalala.txt文件沒了
git checkout master
將本地倉庫分支bugs的修改內容合併到默認分支master
git merge bugs
本地倉庫默認分支master有lalala.txt文件了。
1.比對兩個不同提交之間的差別
每次提交都有一個標識id,查看所有歷史提交和他們的id
1.1 git log
commit ba25c0ff30e1b2f0259157b42b9f8f5d174d80d7 //提交id
Author: igeekbar //提交者
Date: Fri July 29 17:15:28 2016 +0300 //提交日期
New feature complete //提交說明
commit bc11c0ff30e1b2f0259157b42b9f8f5d174d80d7 //提交id
Author: igeekbar //提交者
Date: Fri July 29 17:15:28 2016 +0300 //提交日期
New feature complete //提交說明
id很長,但是當使用它的時候你並不需要複製整個字符串,前幾個字符就夠了。
1.2 顯示某次提交的內容:
git show ba25
1.3 git diff [commitid1]..[commitid2]:
git show ba25..bc11
2.回滾某個文件到之前的版本
Git允許我們將某個特定的文件回滾到特定的提交,使用的也是 git checkout命令。
git checkout 09bd8cc1 lalala.txt
//09bd8cc1 =commit id lalala.txt文件名
3.回滾提交
如果你發現最新的一次提交忘記加入某個文件,或是信息輸入的不正確,你可以通過 git commit --amend來改正,它會把最新的提交打回暫存區,並嘗試重新提交。
如果是更復雜的情況,比如不是最新的提交除了問題,你可以使用git revert。
最新的一次提交別名也叫HEAD。
git revert HEAD or 其他版本提交 git revert ba25
4.解決合併衝突
手動解決完,提交到本地倉庫分支,提交到遠端倉庫。
5.配置 .gitignore
大部分項目中,會有些文件、文件夾是我們不想提交的。爲了防止使用git add -A時不小心提交,我們可以利用.gitignore文件:
- 在項目根目錄創建.gitignore文件
- 在文件中列出不需要提交的文件名、文件夾名,每個一行
- .gitignore文件需要像普通文件一樣add、commit和push
*.log // 後綴名是.log的
build/ build文件下的
node_modules/
.idea/
my_notes.txt //my_notes.txt文件
6.git 放棄本地修改,遠程分支強制覆蓋本地
git fetch --all //只是下載代碼到本地,不進行合併操作
git reset --hard origin/分支名如master //把HEAD指向最新下載的版本
git pull //再從服務器拉取下最新的
7.git stash & git stash pop
git stash 代碼改一半,不想提交到本地倉庫分支,又不想放棄修改。暫時提交到棧中緩存。
git stash pop從棧中取出再使用