生活随笔
收集整理的這篇文章主要介紹了
Git理论、原理、操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Git理論、原理、操作
- Git簡介:
一個開源的分布式版本控制系統。用于處理任何大大小小的項目,是一個開放源碼的版本控制軟件。 - Git與SVG的區別:
1、git是分布式的
2、git把內容按元數據方式存儲,svg按文件
3、git分支和svg分支不同。svg中就只是版本庫的另外一個目錄
4、git沒有全局的版本號,svg有
5、git的內容完整性要優于svg - Git安裝:
1、Linux:
2、Window:
安裝包下載地址:https://gitforwindows.org/
3、Mac
下載地址為:http://sourceforge.net/projects/git-osx-installer/ - Git使用前常用配置:
1、 配置個人的用戶名稱和電子郵件地址:
$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com
2、文本編輯器:
git config --global core.editor emacs
3、差異分析工具:
$ git config --global merge.tool vimdiff
4、查看配置信息: git config --list
$ git config --list也可以直接查閱某個環境變量的設定,只要把特定的名字跟在后面即可
$ git config user.name
name
- Git工作流程:
一般工作流程如下:
1、克隆 Git 資源作為工作目錄。
2、在克隆的資源上添加或修改文件。
3、如果其他人修改了,你可以更新資源。
4、在提交前查看修改。
5、提交修改。
6、在修改完成后,如果發現錯誤,可以撤回提交并再次修改并提交。 - Git工作區、暫存區、版本庫:
概念:
工作區:個人電腦里的項目目錄
暫存區index:又叫索引,一般存放在“.git目錄下”
版本庫master:工作區有一個隱藏目錄.git
三者間關系:
- Git創建倉庫:
1、git init
git init //使用當前目錄作為Git倉庫, 執行完后會在當前目錄生成一個 .git 目錄。
git init newrepo // 初始化后,會在 newrepo 目錄下會出現一個名為 .git 的目錄$ git add *.c
$ git add README
$ git commit -m '初始化項目版本'
以上命令將目錄下以 .c 結尾及 README 文件提交到倉庫中
2、git clone:從現有 Git 倉庫中拷貝項目
git clone 時,可以所用不同的協議,包括 ssh, git, https 等,其中最常用的是 ssh,因為速度較快,還可以配置公鑰免輸入密碼。各種寫法如下:
git clone git@github.com:fsliurujie/test.git --SSH協議
git clone git://github.com/fsliurujie/test.git --GIT協議
git clone https://github.com/fsliurujie/test.git --HTTPS協議
// 初始化
$ mkdir runoob // 新建文件夾
$ cd runoob/ // 轉到新文件夾目錄下
$ git init // 初始化
$ ls -a // 查看文件夾目錄
. .. .git
$ cat hello.vue //查看 文件內容$ git clone [url]
// 克隆項目。默認情況下,Git 會按照你提供的 URL 所指示的項目的名稱創建你的本地項目目錄。 通常就是該 URL 最后一個 / 之后的項目名稱。如果你想要一個不一樣的名字, 你可以在該命令后加上你想要的名稱。
$ cd 項目名稱 // 切換到i項目目錄下
$ ls // 查看項目目錄$ git branch //列出本地分支
$ git branch (branchname) // 創建分支
$ git branch -d (branchname) // 刪除分支
$ git checkout (branchname) // 切換分支,當你切換分支的時候,Git 會用該分支的最后提交的快照替換你的工作目錄的內容
$ git checkout -b (branchname) // 創建新分支并立即切換到該分支下$ git status // 查看在你上次提交之后是否有修改
$ git status -s // 獲得簡短的結果輸出將添加或修改提交到緩存:
$ git add README hello.php // 添加多個指定的文件
$ git add . // 添加當前項目的所有文件git diff 有兩個主要場景:
查看執行 git status 的結果的詳細信息;
顯示已寫入緩存與已修改但尚未寫入緩存的改動的區別。
$ git diff // 查看尚未緩存的改動
$ git diff --cached // 查看已緩存的改動
$ git diff HEAD // 查看已緩存的與未緩存的所有改動
$ git diff --stat // 顯示摘要而非整個 diffgit commit將緩存區的內容添加到倉庫
git為了記錄用戶的每一次提交,所以第一步會確認需要配置用戶名和郵箱地址
$ git config --global user.name 'runoob' // 配置用戶名
$ git config --global user.email test@runoob.com // 配置郵箱地址git reset HEAD 命令用于取消已緩存的內容,即之前 git add 添加,但是工作區不受影響
$ git reset HEAD hello.php // 取消其中一個文件的緩存
$ git commit -m '說明' // 再執行 git commit,只會將 剩余的緩存文件的改動提交git rm 刪除文件
git rm <file>
git rm -f <file> //刪除之前修改過并且已經放到暫存區域的話,則必須要用強制刪除選項 -f
git rm --cached <file> //直接從暫存區刪除文件,工作區則不做出改變$ git checkout .
$ git checkout -- <file> // 會用暫存區全部或指定的文件替換工作區的文件。這個操作很危險,會清除工作區中未添加到暫存區的改動。
$ git checkout HEAD .
$ git checkout HEAD <file>
會用 HEAD 指向的 master 分支中的全部或者部分文件替換暫存區和以及工作區中的文件。這個命令也是極具危險性的,因為不但會清除工作區中未提交的改動,也會清除暫存區中未提交的改動。$ git merge (branchname) // 合并分支$ git push origin [branch] // 推送到遠程倉庫$ git log // 查看提交歷史
$ git log --oneline // 查看歷史記錄的簡潔的版本
$ git log --graph // 查看歷史中什么時候出現了分支、合并
$ git log --reverse // 逆向顯示所有日志
$ git log --author //只查找指定用戶的提交日志$ git tag -a v1.0 // 打標簽。比如說,我們想為我們的 runoob 項目發布一個"1.0"版本。 我們可以用 git tag -a v1.0 命令給最新一次提交打上(HEAD)"v1.0"的標簽。
-a 選項意為"創建一個帶注解的標簽"。 不用 -a 選項也可以執行的,但它不會記錄這標簽是啥時候打的,誰打的,也不會讓你添加個標簽的注解。$ git remote //查看當前配置有哪些遠程倉庫
$ git remote -v // 加上 -v 參數,你還可以看到每個別名的實際鏈接地址。
$ git remote rm [別名] // 刪除遠程倉庫$ git remote add origin2 git@github.com:tianqixin/runoob-git-test.git //添加倉庫 origin2
$ git remote rm origin2 //# 刪除倉庫 origin2提取遠程倉庫
$ git fetch origin // 1、從遠程倉庫下載新分支與數據
$ git merge origin/master // 2、從遠端倉庫提取數據并嘗試合并到當前分支
$ git remote add [shortname] [url] // 添加一個新的遠程倉庫本例以 Github 為例作為遠程倉庫,由于你的本地 Git 倉庫和 GitHub 倉庫之間的傳輸是通過SSH加密的,所以我們需要配置驗證信息:
使用以下命令生成 SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
之后會要求確認路徑和輸入密碼回到 github 上,進入 Account => Settings(賬戶配置)=> 左邊選擇 SSH and GPG keys,然后點擊 New SSH key 按鈕,title 設置標題,可以隨便填,粘貼在你電腦上生成的 key驗證是否成功,輸入以下命令:
$ ssh -T git@github.com
Hi tianqixin! You've successfully authenticated, but GitHub does not provide shell access.
- Git 服務器搭建:
2019 年開始 Github 私有存儲庫也可以無限制使用。
這當然我們也可以自己搭建一臺 Git 服務器作為私有倉庫使用。
1、安裝Git
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
$ yum install git
2、創建證書登錄
收集所有需要登錄的用戶的公鑰,公鑰位于id_rsa.pub文件中,把我們的公鑰導入到/home/git/.ssh/authorized_keys文件里,一行一個。
如果沒有該文件創建它:
$ cd /home/git/
$ mkdir .ssh
$ chmod 755 .ssh
$ touch .ssh/authorized_keys
$ chmod 644 .ssh/authorized_keys
3、初始化Git倉庫
首先我們選定一個目錄作為Git倉庫,假定是/home/gitrepo/runoob.git,在/home/gitrepo目錄下輸入命令:
$ cd /home
$ mkdir gitrepo
$ chown git:git gitrepo/
$ cd gitrepo$ git init --bare runoob.git
Initialized empty Git repository in /home/gitrepo/runoob.git/
以上命令Git創建一個空倉庫,服務器上的Git倉庫通常都以.git結尾。然后,把倉庫所屬用戶改為git:
$ chown -R git:git runoob.git
4、克隆倉庫
$ git clone git@192.168.45.4:/home/gitrepo/runoob.git
Cloning into 'runoob'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
192.168.45.4 為 Git 所在服務器 ip ,你需要將其修改為你自己的 Git 服務 ip。
這樣我們的 Git 服務器安裝就完成。
總結
以上是生活随笔為你收集整理的Git理论、原理、操作的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。