好久沒用Git(分佈式管理方案)了,以前的總結回顧一下

下載安裝

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

 

https://www.softwhy.com/article-8627-1.html 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章