1. 程式人生 > >廖雪峰的git學習筆記

廖雪峰的git學習筆記

建立 tab sta ssh xxxx 放棄 系統 方式 哪些

安裝完後,每個機器都要自報家門

Config--配置 global--全局參數

配置全局用戶名

$git config --global user.name “Your Name”

配置郵箱地址

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

創建版本庫

Mkdir --建立一個新的子目錄

創建一個名為learngit的文件夾

$mkdir learngit

進入learngit文件夾裏面

$cd learngit

顯示當前目錄

$pwd

把當前目錄變成git可管理的倉庫

$git init

把文件添加到倉庫

Commit --...交托給

把文件添加到緩存區

$git add readme.txt / $git add .(添加全部已修改的文件)

對本次提交做一個提交說明

$git commit -m “xxxx”

查看歷史修改

查看是否有已改動的文件

$git status

查看被修改的內容

$git diff readme.txt / $git diff .

查看版本控制系統的歷史紀錄

$git log

包括(commit版本號,提交的人,修改的日期與修改的那內容說明)

$git log --pretty=oneline

回退版本:在git中,用HEAD表示當前版本,上一個版本就是HEAD^,上上一個版本就是HEAD^^,當然往上100個版本寫100個數不過來,可以寫成HEAD~100

回退到上一個版本

$git reset --hard HEAD^

查看當前版本readme.txt的內容

$cat readme.txt

回退版本後,使用$git log查看,發現回退前的最新版本已經不見了。

想要回到之前的最新版本,條件是,回退 時的命令行窗口還未被被關閉,然後使用

$git reset --hard 1234567

1234567為之前最新的版本號的前7位,以查出來的為準

如果之前的命令行窗口已經關閉了,又找不到新版本的commit id。那就用下面的命令

$git reflog

git提供一個命令git reflog來記錄你的每一次命令

可以看到之前最新的版本的那行append GPL 相對應的commit id

現在,你依然可以回到最新版本了

Branch --分支 tracked --跟蹤

Git checkout -- file命令中的“--”很重要,沒有“--”就變成了“創建一個新分支”命令

放棄當前工作區的修改

$git status

$git checkout -- readme.txt

把放在緩存區的文件撤銷,放回到工作區

$git reset HEAD readme.txt

$git add test.txt

$git commit -m “add test.txt” ---(添加文件)

$rm test.txt

$git status ---(提示你哪些文件被刪除了)

選擇一

$git rm text.txt

$git commit -m “remove test.txt” --把文件從版本庫裏刪除掉

選擇二

$git checkout -- test.txt ---一鍵還原

創建遠程倉庫

(先有本地庫,後有遠程庫)

1,去github.com官網註冊github賬號,

2,再電腦本機創建密鑰,.ssh文件夾裏有倆個文件,id_rsa和id_rsa.pub

3,在github裏找到設置ssh key的頁面選項(版本不同位置不同),然後點“add SSh key” ,填上任意title,在key文本框裏粘貼id_rsa.pub文件的內容,然後確定添加

4,開始添加遠程庫,

假設本機已有名為”abc”的項目,將”abc”設為本地倉庫。

在github裏創建同名項目”abc”

在本地倉庫”abc”裏右鍵打開base運行命令

創建密鑰

$ssh-key -t rsa -C “[email protected]

密鑰創建後就會告訴你密鑰的路徑。一般情況默認路徑是

C:\Users\Administrator

把本地倉庫與遠程倉庫相關聯的內容推送到github倉庫

$git remote add origin [email protected]:youname/abc.git

youname為你的github賬號的用戶名

Git的遠程庫默認名為origin

abc為你本地項目的項目名

把本地庫的所有內容推送到遠程庫上

$git push -u origin master

git push命令,實際上是把當前分支master推送到遠程。由於遠程是空,我們第一次推送master分支時,加上-u參數,在推送的同時,把本地的master分支和遠程的master分支關聯起來,在以後的推送或者拉取就可以簡化命令,之後的提交命令可以省略-u了,如下:

$git push origin master

(先有遠程庫,後有本地庫)

1,在github創建項目的時候同時創建readme.txt文件

2,用命令克隆一個遠程庫到本地

$git clone [email protected]:youname/bbb.git

youname為你的github賬號的用戶名

bbb為你在github上創建的項目名

創建後會在本地生成同名文件夾

$cd bbb

$ls

ls命令是查看當前文件夾裏有什麽文件

(分支管理)

創建分支

$git checkout -b dev

Dev為分支名

Git checkout 命令加上-b參數表示創建並切換,相當於以下兩條命令

$git branch dev //創建分支

$git checkout dev //切換分支

查看分支

$git branch

切換回主分支

$git checkout master

切換分支

合並分支

$git merge dev

dev分支的工作成果合並到master分支上

刪除分支

$git branch -d dev

合並後,就可以刪除dev分支了。

刪除後最好再查看一次當前分支

解決沖突

(假設分支”dev”與主分支”master”起沖突,現在我們在master分支上

合並分支

$git merge dev

Git告訴我們,readme.txt文件存在沖突,必須手動解決

查看被修改的內容

$git status

也提示有沖突

查看文件內容

$cat README.md

我們可以看到起沖突的部分是哪裏

這個時候我們就要找到該文件,手動修改。修改後才能進行下一步操作

提交並上傳已修改好的文件

$git add .

$git commit -m “”

查看分支合並的情況

$git log --graph --pretty=oneline --abbrev-commit

刪除分支

$git branch -d dev

通常合並分支時,Git會用”Fast forward”模式,這種模式下,刪除分支後會丟掉分支信息

如果禁用”Fast forward”模式,Git就會在merge時生成一個新的commit,這樣,就可以從分支的歷史上查看分支信息

分支管理策略( --no-ff方式的merge 表示禁用“Fast forward”)

$git checkout -b dev

修改文件

$git add .

$git commit -m “”

合並分支,註意--no-ff參數,表示禁用“Fast forward

$git checkout master

$git merge --no-ff -m “” dev

查看分支歷史

$git log --graph --pretty=oneline --abbrev-commit

分支策略

Bug分支

當你接到一個代號101bug的任務要立即處理時時,很自然的就想創建一個分支。但是假如你正在dev的分支上進行的工作還沒提交。這怎麽辦?

我們可以把當場工作現場“儲存”起來,等恢復現場後繼續工作

$git status //查看目前改動了什麽

$git stast //存儲工作現場

$git status //再查看一次 會發現工作區很幹凈

$git checkout master //回到主分支

$git checkout -b issue-101 //創建新分支

然後修復bug

提交並推送

$git add .

$git commit -m “”

修復完後回到主分支,合並並刪除

$git checkout master

$git merge --no-ff -m “” issue-101

$git branch -d issue-101

刪除後,回到dev分區

$git checkout dev

$git status //發現工作區是幹凈的

$git stash list //查看工作現場存到哪了

恢復現場並刪除stash內容,回到現場工作

$git stash pop

$git stash list //再查看一遍就看不到任何stash內容了

如果想恢復制定stash的話,可以

$git stash apply stash@{0}

Feature分支

在已有的項目裏添加一個新功能的時候,最好新建一個feature分支。

當要丟棄一個沒有被合並過的分支時,可以使用以下命令強行刪除

$git branch -D feature-vulcan

feature-vulcan為分支的分支名

多人協作

查看遠程庫信息

$git remote $git remote -v

推送分支

$git push origin master //推送主分支

$git push origin dev //推送其他分支

把最新的版本拉去下來

$git pull

                                    項目常用git命令:

$git status

查詢項目是否有改動

$git add .

將改動的地方添加道緩存區

$git commit -am “xx”

將緩存區的信息進行提交並註明提交信息

$git fetch

拉取項目最新版本

$git rebase origin/developer

將本地的改動提交到遠程項目

$git push origin developer

把本地庫的所有內容推送到遠程庫上

$gitk

查詢

廖雪峰的git學習筆記