廖雪峰的git學習筆記
安裝完後,每個機器都要自報家門 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分支 當你接到一個代號101的bug的任務要立即處理時時,很自然的就想創建一個分支。但是假如你正在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學習筆記