git介紹 介紹
git是分布式版本控制系統 集中式vs分布式,svn vs git i. svn和git主要的區別在於歷史版本維護的位置 ii. git本地倉庫包含**庫還有歷史庫,在本地的環境開發就可以記錄歷史而svn的歷史庫存在於**倉庫,每次對比與提 交**都必須連線到**倉庫才能進行。 iii. 這樣的好處在於: 自己可以在離線環境檢視開發的版本歷史。 多人開發時如果充當**倉庫的git倉庫掛了,可以隨時建立乙個新的**倉庫然後同步就立刻恢復了**庫。
git命令 命令
git配置 配置
$ git config --global user.name "your name" $ git config --global user.email "[email protected]"
git config 命令的 --global 引數,表明這台機器上的所有git倉庫都會使用這個配置,也可以對某個倉庫指定不同的使用者名稱和郵箱 位址。
建立版本庫 建立版本庫
初始化乙個 初始化乙個git倉庫 倉庫
$ git init
新增檔案到 新增檔案到git倉庫 倉庫
包括兩步:
$ git add $ git commit -m "description"
git add 可以反覆多次使用,新增多個檔案, git commit 可以一次提交很多檔案, -m 後面輸入的是本次提交的說明,可以輸入任 意內容。
檢視工作區狀態 檢視工作區狀態
$ git status
檢視修改內容 檢視修改內容
$ git diff
$ git diff --cached
$ git diff head --
git diff 可以檢視工作區(work dict)和暫存區(stage)的區別 git diff --cached 可以檢視暫存區(stage)和分支(master)的區別 git diff head -- 可以檢視工作區和版本庫裡面最新版本的區別
檢視提交日誌 檢視提交日誌
$ git log
簡化日誌輸出資訊
$ git log --pretty=oneline
檢視命令歷史 檢視命令歷史
$ git reflog
版本回退 版本回退
$ git reset --hard head^
以上命令是返回上乙個版本,在git中,用 head 表示當前版本,上乙個版本就是 head^ ,上上乙個版本是 head^^ ,往上100個版本 寫成 head~100 。
回退指定版本號 回退指定版本號
$ git reset --hard commit_id
commit_id是版本號,是乙個用sha1計算出的序列
工作區、暫存區和版本庫 工作區、暫存區和版本庫
工作區:在電腦裡能看到的目錄; 版本庫:在工作區有乙個隱藏目錄 .git ,是git的版本庫。 git的版本庫中存了很多東西,其中最重要的就是稱為stage(或者稱為index)的暫存區,還有git自動建立的 master ,以及指 向 master 的指標 head 。
進一步解釋一些命令:
git add 實際上是把檔案新增到暫存區 git commit 實際上是把暫存區的所有內容提交到當前分支
撤銷修改 撤銷修改
丟棄工作區的修改 丟棄工作區的修改
$ git checkout --
該命令是指將檔案在工作區的修改全部撤銷,這裡有兩種情況:
1. 一種是file自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態; 2. 一種是file已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。
總之,就是讓這個檔案回到最近一次git commit或git add時的狀態。
丟棄暫存區的修改 丟棄暫存區的修改
分兩步: 第一步,把暫存區的修改撤銷掉(unstage),重新放回工作區:
$ git reset head
第二步,撤銷工作區的修改
$ git checkout --
小結:1. 當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令 git checkout -- 。
2. 當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令 git reset head ,就回到了第一步,第二步按第一步操作。
3. 已經提交了不合適的修改到版本庫時,想要撤銷本次提交,進行版本回退,前提是沒有推送到遠端庫。
刪除檔案 刪除檔案
$ git rm
git rm 相當於執行
$ rm $ git add
進一步的解釋 進一步的解釋
q:比如執行了 rm text.txt 誤刪了怎麼恢復? a:執行 git checkout -- text.txt 把版本庫的東西重新寫回工作區就行了 q:如果執行了 git rm text.txt 我們會發現工作區的text.txt也刪除了,怎麼恢復? a:先撤銷暫存區修改,重新放回工作區,然後再從版本庫寫回到工作區
$ git reset head text.txt $ git checkout -- text.txt
q:如果真的想從版本庫裡面刪除檔案怎麼做? a:執行 git commit -m "delete text.txt" ,提交後最新的版本庫將不包含這個檔案
遠端倉庫 遠端倉庫
建立 建立ssh key
$ ssh-keygen -t rsa -c "[email protected]"
關聯遠端倉庫 關聯遠端倉庫
$ git remote add origin
推送到遠端倉庫 推送到遠端倉庫
$ git push -u origin master
-u 表示第一次推送master分支的所有內容,此後,每次本地提交後,只要有必要,就可以使用命令 git push origin master 推送 最新修改。
從遠端轉殖 從遠端轉殖
$ git clone
分支 分支
建立分支 建立分支
$ git branch
檢視分支 檢視分支
$ git branch
git branch 命令會列出所有分支,當前分支前面會標乙個*號。
切換分支 切換分支
$ git checkout
建立 建立+切換分支 切換分支
$ git checkout -b
合併某分支到當前分支 合併某分支到當前分支
$ git merge
刪除分支 刪除分支
$ git branch -d
檢視分支合併圖 檢視分支合併圖
$ git log --graph
當git無法自動合併分支時,就必須首先解決衝突。解決衝突後,再提交,合併完成。用 git log --graph 命令可以看到分支合併 圖。
普通模式合併分支 普通模式合併分支
$ git merge --no-ff -m "description"
因為本次合併要建立乙個新的commit,所以加上 -m 引數,把commit描述寫進去。合併分支時,加上 --no-ff 引數就可以用普通模 式合併,能看出來曾經做過合併,包含作者和時間戳等資訊,而fast forward合併就看不出來曾經做過合併。
儲存工作現場 儲存工作現場
$ git stash
檢視工作現場 檢視工作現場
$ git stash list
恢復工作現場 恢復工作現場
$ git stash pop
丟棄乙個沒有合併過的分支 丟棄乙個沒有合併過的分支
$ git branch -d
檢視遠端庫資訊 檢視遠端庫資訊
$ git remote -v
在本地建立和遠端分支對應的分支 在本地建立和遠端分支對應的分支
$ git checkout -b branch-name origin/branch-name,
本地和遠端分支的名稱最好一致;
建立本地分支和遠端分支的關聯 建立本地分支和遠端分支的關聯
$ git branch --set-upstream branch-name origin/branch-name;
從本地推送分支 從本地推送分支
$ git push origin branch-name
如果推送失敗,先用git pull抓取遠端的新提交;
從遠端抓取分支 從遠端抓取分支
$ git pull
如果有衝突,要先處理衝突。
標籤 標籤
tag就是乙個讓人容易記住的有意義的名字,它跟某個commit綁在一起。
新建乙個標籤 新建乙個標籤
$ git tag
命令 git tag 用於新建乙個標籤,預設為head,也可以指定乙個commit id。
指定標籤資訊 指定標籤資訊
$ git tag -a -m
or commit_id
git tag -a -m "blablabla..." 可以指定標籤資訊。
pgp簽名標籤 簽名標籤
$ git tag -s -m
or commit_id
git tag -s -m "blablabla..." 可以用pgp簽名標籤。
檢視所有標籤 檢視所有標籤
$ git tag
推送乙個本地標籤 推送乙個本地標籤
$ git push origin
推送全部未推送過的本地標籤 推送全部未推送過的本地標籤
$ git push origin --tags
刪除乙個本地標籤 刪除乙個本地標籤
$ git tag -d
刪除乙個遠端標籤 刪除乙個遠端標籤
$ git push origin :refs/tags/
Git基本操作
1.初始化倉庫 git init 2.配置作者資訊 git config global user.email youremail corp.com git config global user.name yourname 3.新增檔案到暫存區 git add git add 新增所有檔案到暫存區 4...
git基本操作
1.先建乙個資料夾 mikdir gittest 這時就會有乙個gittest資料夾,cd gittest 進入這個資料夾 ls一下,就會看到gittest下沒有東西 2.生成乙個git git init cat git 顯示一下所有git 3.建乙個檔案 touch readme.md 這時git...
Git基本操作
21 nov,錦州 同生活中的許多偉大事件一樣,git 誕生於乙個極富紛爭大舉創新的年代。linux 核心開源專案有著為數眾廣的參與者。絕大多數的 linux 核心維護工作都花在了提交補丁和儲存歸檔的繁瑣事務上 1991 2002年間 到 2002 年,整個專案組開始啟用分布式版本控制系統 bitk...