下載安裝
Git下載地址https://git-scm.com/downloads 安裝一般選擇default editor, 傳輸模式選擇openssl
配置git 用戶名及郵箱
安裝完成後,還需要最後一步設置,在命令行輸入:
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
證書生成及配置
ssh 公鑰認證是ssh認證的方式之一。通過公鑰認證可實現ssh免密碼登陸,git的ssh方式也是通過公鑰進行認證的。
使用 ssh-keygen 時,請先進入到 ~/.ssh 目錄,不存在的話,請先創建。並且保證 ~/.ssh 以及所有父目錄的權限不能大於 711
對於公鑰和私鑰文件也是: 當前用戶一定要有執行權限,其他用戶最多隻能有執行權限。
不指定文件名和密鑰類型的時候,默認生成的兩個文件是:
id_rsa id_rsa.pub 第一個是私鑰文件,第二個是公鑰文件
---------------------題外話----------------------------------------------------------------------
要達到A機器ssh登錄B機器無需輸入密碼;
先在A機器 ssh-keygen -t [rsa|dsa],將會生成密鑰文件和私鑰文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub,將 .pub 文件複製到B機器的 .ssh 目錄, 並 cat id_dsa.pub >> ~/.ssh/authorized_keys;要保證.ssh和authorized_keys都只有用戶自己有寫權限。否則驗證無效。
設置authorized_keys權限 設置.ssh目錄權限
$ chmod 600 authorized_keys
$ chmod 700 -R .ssh
加密方式選 rsa|dsa均可以,默認dsa。可以通過 -f 選項指定生成文件的文件名,不指定會詢問 filename to save the key。 後面會詢問是否需要輸入密碼。輸入密碼之後,以後每次都要輸入密碼。請根據你的安全需要決定是否需要密碼,如果不需要,直接回車。
-C選項是公鑰文件中的備註
------------------------------------------------------------------------------
SSH 公鑰設置 (配置Github或碼雲。。。。)
https://gitee.com/help/articles/4191#article-header0
驗證GIT登錄
TortoiseGit安裝配置使用
查看分支:git branch
創建分支:git branch <name>
刪除分支:git branch -d <name>
切換分支:git checkout <name>
創建+切換分支:git checkout -b <name>
合併某分支到當前分支:git merge <name>
[fengdj@hs-192-168-54-161 clone]$ git merge dev
Updating 1e6f2ce..a722c1b
Fast-forward
test.txt | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
初始化一個Git倉庫,使用git init命令。或者clone一個倉庫。
1. 使用git init命令
- 進入某個空的文件夾下,打開
Git Bash
命令窗口輸入git init
- 執行完上面的命令,當前目錄下會自動生成
.git
隱藏文件夾,該隱藏文件夾就是git
版本庫 - 也可以在當前目錄下的指定子目錄創建版本庫 git init subDir
- 裸倉庫(bare倉庫):所謂的裸倉庫,就是沒有工作區的倉庫,直接將核心內容放置於指定目錄 git init --bare
2. git clone -b +分支 + 地址
$ git clone [email protected]:michaelliao/gitskills.git
Cloning into 'gitskills'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
Receiving objects: 100% (3/3), done.
添加文件到Git倉庫,分兩步:
使用命令git add <file>,注意,可反覆多次使用,添加多個文件;
使用命令git commit -m <message>,完成。
git status命令可以讓我們時刻掌握倉庫當前的狀態,上面的命令輸出告訴我們,
readme.txt被修改過了,但還沒有準備提交的修改。
git diff readme.txt
提交修改和提交新文件是一樣的兩步,第一步是git add:
$ git add readme.txt
$ git commit -m "add distributed"
版本回退
上一個版本就是HEAD^,上上一個版本就是HEAD^^,
當然往上100個版本寫100個^比較容易數不過來,所以寫成HEAD~100
git reset --hard HEAD^
git reset --hard 71f63 恢復到指定版本
Git提供了一個 命令git reflog用來記錄你的每一次命令
git log 此命令可以查看commit提交歷史記錄,等同於git reflog | grep commit
git reflog 除了可看commit記錄還有reset記錄
現在假定是凌晨3點,你不但寫了一些胡話,還git add到暫存區了:
$ git add readme.txt
在commit之前,你發現了這個問題。用git status查看一下,修改只是添加到了暫存區,還沒有提交:
用命令git reset HEAD <file>可以把暫存區的修改撤銷掉(unstage),重新放回工作區
git reset --hard
指的是恢復到某一個庫版本。
git reset HEAD <file>...
指的是拉最近一次提交到版本庫的文件恢復暫存區某一個文件。git reset f0a1684
<file>. 指定庫版本拉文件到暫存區,然後再git checkout -- <file>
命令來把 暫存區文件拉到工作區(有時候工作區的修改可能不盡如人意,需要
git checkout
將暫存區內容還原到工作區。)
場景1:當你改亂了工作區某個文件的內容,想直接丟棄工作區的修改時,用命令git checkout -- file。
場景2:當你不但改亂了工作區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD <file>,就回到了場景1,第二步按場景1操作。
刪除暫存區指定文件:
git
rm
--cached readme.txt //
將暫存區中的內容刪除,工作區中對應的文件並不會受到影響。
git
rm
readme.txt
//不但將暫存區中的內容刪除,並且工作區中對應的文件也會被刪除。上面兩個命令如果要刪除多個文件使用空格分隔文件名稱即可。
清空暫存區,其實就是刪除.git目錄下的index文件
確實要從版本庫中刪除該文件,那就用命令git rm刪掉,並且git commit:
----
---------
---------------------------需要注意的---------------------------------------------------------------------
git commit操作的是本地庫,git push操作的是遠程庫。
git commit是將本地修改過的文件提交到本地庫中。
git push是將本地庫中的最新信息發送給遠程庫。
--------------------------------------------------------------------------------------------
--------------------
----
GitHub告訴我們,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關聯,然後,把本地倉庫的內容推送到GitHub倉庫。
現在,我們根據GitHub的提示,在本地的learngit倉庫下運行命令:
$ git remote add origin [email protected]:michaelliao/learngit.git
請千萬注意,把上面的michaelliao替換成你自己的GitHub賬戶名
下一步,就可以把本地庫的所有內容推送到遠程庫上:////將本地的master分支推送到origin主機,同時指定origin爲默認主機,後面就可以不加任何參數使用git push了。
$ git push -u origin master
由於遠程庫是空的,我們第一次推送master分支時,加上了-u參數,
Git不但會把本地的master分支內容推送的遠程新的master分支,
還會把本地的master分支和遠程的master分支關聯起來,
在以後的推送或者拉取時就可以簡化命令。
$ git push origin master ////如果當前分支只有一個追蹤分支,那麼主機名都可以省略。//git push 默認只推送當前分支,這叫做simple方式。
git可以團隊開發,難免會出現開發錯誤,可能要明確責任是由誰造成的。
加入在根目錄下有index.html,那麼可以使用如下命令:
[Shell] 純文本查看 複製代碼
1
$ git blame index.html
git blame -L 2,5 index.html