使用Visual Studio Code前的準備之git安裝和連接(Mac OS)

1、下載git(Mac OS X版),從https://www.git-scm.com/download/

然後安裝,裝載git-2.18.0-intel-universal-mavericks,雙擊pkg文件開始安裝。
這是最簡單的安裝方法。然後打開終端,準備輸入命令。

查看安裝版本:git --version
返回 git version 2.18.0

查看安裝位置:which git
返回 /usr/local/bin/git

找到git的安裝位置:
open ~/.ssh
打開文件夾,就可以找到id_rsa.pub文件,用記事本打開這個pub文件,裏面的內容後面要用。
這裏寫圖片描述

2、在本地創建ssh key

在終端輸入:

ssh-keygen -t rsa -C 379612203@qq.com 

輸入名字elvisgit,輸入兩次相同的密碼。要記下密碼,後面連接要用。

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/Elvis/.ssh/id_rsa): elvisgit
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in elvisgit.
Your public key has been saved in elvisgit.pub.
The key fingerprint is:
SHA256:muBKCsqIk139bTAjhRw9D+9o2VXlYsSeCRHGGghEj8k 379612203@qq.com
The key's randomart image is:
+---[RSA 2048]----+
|     o+o . .++...|
|     ..+= ..o.o. |
|     .Eo.= o +oo.|
|      o . + ..+. |
|    .. .S= .     |
|   ...ooB o      |
|.o... o+ =       |
|Oo..    . o      |
|=o.      .       |
+----[SHA256]-----+

3、將SSH key添加到GitHub

登錄到GitHub頁面,進入Account Settings,左邊選擇SSH Keys,Add SSH Key,title隨便填,粘貼id_rsa.pub文件的內容到輸入框中,點擊 Add SSH key按鈕。

4、改名

open ~/.ssh 打開.ssh文件夾。將.ssh目錄下的剛纔生成的key文件改名爲
id_rsa和id_rsa.pub。因爲下一步在測試連接的時候是以id_rsa爲名字搜索的。自己起的名字反而搜不到。

5、測試鏈接

直接連接,不輸出詳細日誌

ssh git@github.com


能看到詳細過程,幫助查看連接失敗原因。

ssh -v git@github.com

Enter passphrase for key ‘/Users/Elvis/.ssh/id_rsa’:
輸入前面記下的密碼(注意輸入過程沒有回顯,但是系統已經收到輸入)
看到返回
Hi Elvis! You’ve successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

出現上述提示信息說明連接成功(github並不提供shell登陸但已經連接成功)

6、配置用戶名和郵箱

git config --global user.name "yourname"  
git config --global user.email "[email protected]"  
git init
git remote add origin git@github.com:Elvis/ElvisRepo.git
git remote -v  //查看本地文件夾 和git服務器庫的綁定情況

返回:
origin [email protected]:Elvis/ElvisRepo.git (fetch)
origin [email protected]:Elvis/ElvisRepo.git (push)


其它:
git status //顯示當前工作區的狀態,包括各個文件的狀態,非常有用
git remote -v //查看本文件夾對應的遠程倉庫的信息
git clone [email protected]:slowmickey/JavaWeb.git //在當前文件夾下新建一個倉庫名的子文件夾,獲取這個 repository 的內容到子文件夾中,在clone完成之後,Git 會自動爲你將此遠程倉庫命名爲origin(origin只相當於一個別名,運行git remote –v或者查看.git/config可以看到origin的含義),並下載其中所有的數據,建立一個指向它的master 分支的指針,我們用(遠程倉庫名)/(分支名) 這樣的形式表示遠程分支,所以origin/master指向的是一個remote branch(從那個branch我們clone數據到本地)“
git merge origin/master //獲取遠程服務器上主分支的版本 ,並自動合併 ,不會改變本地版本庫中的以修改的部分
git reset –hard //將本地分支的代碼更改爲master分支的最新代碼 ,會丟失本地所有的更改 ,但不刪除本地新建的新文件, 使用 git pull 無效的時候可以使用它
git checkout readme.txt //撤銷對readme.txt文件的更改,使其與獲取到的時候保持一致
git add rename.txt ; git commit -m “T440-WIN10 first commit” ; git push origin master ;
//將本地庫的rename.txt文件上傳到github中 ,git上 pull requests裏查不到記錄,直接就提交到code裏了 commit裏可以看到提交記錄
git add -A ; git commit -m “T440-WIN10 second commit” ; git push origin master ;
//將本地庫中所有的遠程庫中沒有的文件(排除.gitignore文件中指定的文件夾和文件)上傳到遠程庫中
git rm 1.txt ; git commit -m “T440-WIN10 second commit” ; git push origin master ;
//刪除本地庫中的 1.txt,並提交到遠程庫,刪除庫中的1.txt,同時刪除本地文件夾中的 1.txt文件
git rm –cached 1.txt ; git commit -m “T440-WIN10 second commit” ; git push origin master ;
//刪除本地庫中的 1.txt,並提交到遠程庫,刪除庫中的1.txt,不刪除本地文件夾中的 1.txt文件,但其爲加入到本地版本庫中 //使用本方式來刪除比較好
git reset –hard ;# 恢復最近一次提交過的狀態,即放棄上次提交後的所有本次修改
git push origin master
git pull origin master
git commit -m “註釋” //若有更改,
git commit -am “註釋”

git branch //查看所有的本地分支,及當前處於哪個分支
git branch -a //顯示所有的本地分支和遠程分支 在不同電腦的本地倉庫,執行本命令顯示的遠程倉庫分支是不一樣的 ??? 這個爲什麼呢
git branch a //新建本地分支a,當前分支不變
git checkout a //當前分支切換到分支a
git checkout -b b //新建本地分支b,當前分支切換到分支b
git branch -d a //刪除分支a ,若a分支的代碼未合併到本地master分支,則刪除失敗
git branch -D a //強制刪除分支a,不管其是否合併到本地的master分支

一種分支策略: master分支用於發佈版本、dev分支用來幹活、feature分支用於新功能開發
git checkout -b dev # 創建本地dev分支用於開發
git checkout -b bug # 創建本地bug分支用於bug處理
git checkout -b feature # 創建本地feature分支用於新功能開發
git push origin dev # 生成遠程dev分支
git push origin bug # 生成遠程bug分支
git push origin feature # 生成遠程feature分支

git remote add b https://github.com/slowmickey/JavaWeb.git //新建一個名字爲b的遠程分支,需要push後才生效
git push -u b b //將本地分支b的內容push到遠程分支b中 ,這裏會彈框讓輸入git用戶名密碼

一個master分支和test分支都修改 1.txt文件,然後合併的例子 – 非註釋的部分是提倡使用的流程,每次都是先commit再切換分支
//開始時位於master分支,在一個本地分支上做了修改之後,必須執行 commit,再切換到另一個分支,否則會,現象舉例如下:
//例 :若在test分支上對1.txt做了修改,但是不commit直接切換到master分支,則在master分支也可以看到test中剛剛對1.txt的修改,然後這時在master中執行 commit,也可以提交,這時再切換到test分支,會發現剛剛在本分支中對1.txt所做的修改不見了。 – 本現象對 add 一樣有效 rm稍有不同
// 若在test分支下執行 rm –cached 1.txt,然後commit,這個時候不手動刪除文件夾中的1.txt文件,執行切換到master分支的操作,會提示切換失敗,不允許切換,手動刪除1.txt文件後就可以切換了
①、git checkout -b test //創建並切換到b分支
②、修改1.txt文件 //在test分支上
③、git commit -am “test modify” //在test分支上提交修改 這必須-am,若是-m會報錯
④、git checkout master //切換到master分支
⑤、修改1.txt文件 //在master分支上
⑥、git commit -am “master modify” //在master分支上
⑦、git merge test //在master分支上,執行完變 master|merging
⑧、編輯1.txt文件 //在 master|merging 狀態下
⑨、git add 1.txt //在 master|merging 狀態下
⑩、git commit -m “” //在 master|merging 狀態下,執行完變master狀態

reset指令詳解: git reset [–hard|soft|mixed|merge|keep] [或HEAD] :將當前的分支重設(reset)到指定的或者HEAD(默認,如果不顯示指定commit,默認是HEAD,即最新的一次提交)
其中:
commit:可以使用git log 查詢commit名
hard:重設working directory、index、head指向 soft:只改head指向 mixed<缺省>:僅改 index merge:用得不多 keep:用得不多

使用git log 和 git reset 恢復之前的版本, //在master分支上
①、git log //查看每次commit的版本號,然後鼠標右鍵複製想恢復的版本號
②、git reset –hard 版本號/head~n //文件夾、緩衝區、本地倉庫全都恢復到這個版本號對應的狀態 ,若使用head~n,代表回退n個版本。 當前版本爲回退0個版本

使用git checkout 文件名 和 git checkout head 文件名 從緩衝區 和 本地庫中恢復文件
①、git checkout 文件名 :從緩衝區中恢復文件
②、git checkout head 文件名 : 從本地庫中恢復head所指向的版本

使用git revert撤銷某次操作 ,此次操作之前和之後的commit和history都會保留,並且把這次撤銷作爲一次最新的提交
需要注意的是,有時候執行revert之後,需要執行文件合併 ,使用 revert 比使用 reset 更加安全
①、 git revert HEAD 撤銷前一次 commit
②、 git revert HEAD^ 撤銷前前一次 commit
③、 git revert 提交號 (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤銷指定的版本,撤銷也會作

git push指令詳解:
①、git push <遠程主機名> <本地分支名>:<遠程分支名> //如 git push origin master:master

git pull指令詳解:

git clone指令詳解:
①、git clone 版本庫的網址 [本地目錄名] //如 git clone https://github.com/jquery/jquery.git
//版本庫的網址,除支持 http外,還支持 ssh、git、file 等。
②、$ git clone -o jQuery https://github.com/jquery/jquery.git 克隆並指定遠程主機名爲jQuery

git remote指令詳解: 爲了便於管理,Git要求每個遠程主機都必須指定一個主機名。 git 一個本地倉庫可以對應多個遠端服務器,有的可能只有讀權限,有的可能有讀寫權限
克隆版本庫的時候,所使用的遠程主機自動被Git命名爲origin。如果想用其他的主機名,需要用git clone命令的-o選項指定。
①、git remote :列出所有遠程主機。
②、git remote -v :列出所有遠程主機的名字、網址及讀寫權限
③、git remote show 主機名 :可以查看主機的詳細信息 ,包括Url及其各分支的分支名
④、git remote add 主機名 網址 : 添加一個遠端服務器 – 一個本地倉庫可以對應多個遠端服務器
⑤、git remote rm 主機名 : 刪除本地倉庫和遠端服務器的對應關係
⑥、git remote rename 原主機名 新主機名 : 更改遠程主機的名字

C代碼 收藏代碼

配置使用git倉庫的人員姓名

git config –global user.name “Your Name Comes Here”

配置使用git倉庫的人員email

git config –global user.email [email protected]

配置到緩存 默認15分鐘

git config –global credential.helper cache

修改緩存時間

git config –global credential.helper ‘cache –timeout=3600’

git config –global color.ui true
git config –global alias.co checkout
git config –global alias.ci commit
git config –global alias.st status
git config –global alias.br branch
git config –global core.editor “mate -w” # 設置Editor使用textmate
git config -1 #列舉所有配置

用戶的git配置文件~/.gitconfig

查看、添加、提交、刪除、找回,重置修改文件

C代碼 收藏代碼
git help # 顯示command的help
git show # 顯示某次提交的內容
git show $id

git co – # 拋棄工作區修改
git co . # 拋棄工作區修改

git add # 將工作文件修改提交到本地暫存區
git add . # 將所有修改過的工作文件提交暫存區

git rm # 從版本庫中刪除文件
git rm –cached # 從版本庫中刪除文件,但不刪除文件

git reset # 從暫存區恢復到工作文件
git reset – . # 從暫存區恢復到工作文件
git reset –hard # 恢復最近一次提交過的狀態,即放棄上次提交後的所有本次修改

git ci
git ci .
git ci -a # 將git add, git rm和git ci等操作都合併在一起做
git ci -am “some comments”
git ci –amend # 修改最後一次提交記錄

git revert

初始化一個版本倉庫

git init

Clone遠程版本庫

git clone [email protected]:wordpress.git

添加遠程版本庫origin,語法爲 git remote add [shortname] [url]

git remote add origin [email protected]:wordpress.git

查看遠程倉庫

git remote -v

提交你的修改

C代碼 收藏代碼

添加當前修改的文件到暫存區

git add .

如果你自動追蹤文件,包括你已經手動刪除的,狀態爲Deleted的文件

git add -u

提交你的修改

git commit –m “你的註釋”

推送你的更新到遠程服務器,語法爲 git push [遠程名] [本地分支]:[遠程分支]

git push origin master

查看文件狀態

git status

跟蹤新文件

git add readme.txt

從當前跟蹤列表移除文件,並完全刪除

git rm readme.txt

僅在暫存區刪除,保留文件在當前目錄,不再跟蹤

git rm –cached readme.txt

重命名文件

git mv reademe.txt readme

查看提交的歷史記錄

git log

修改最後一次提交註釋的,利用–amend參數

git commit –amend

忘記提交某些修改,下面的三條命令只會得到一個提交。

git commit –m "add readme.txt"
git add readme_forgotten
git commit –amend

假設你已經使用git add .,將修改過的文件a、b加到暫存區

現在你只想提交a文件,不想提交b文件,應該這樣

git reset HEAD b

取消對文件的修改

git checkout –- readme.txt

查看、切換、創建和刪除分支

C代碼 收藏代碼
git br -r # 查看遠程分支
git br # 創建新的分支
git br -v # 查看各個分支最後提交信息
git br –merged # 查看已經被合併到當前分支的分支
git br –no-merged # 查看尚未被合併到當前分支的分支

git co # 切換到某個分支
git co -b # 創建新的分支,並且切換過去
git co -b # 基於branch創建新的new_branch

git co id          # 把某次歷史提交記錄checkout出來,但無分支信息,切換到其他分支會自動刪除  git co id -b # 把某次歷史提交記錄checkout出來,創建成一個分支

git br -d # 刪除某個分支
git br -D # 強制刪除某個分支 (未被合併的分支被刪除的時候需要強制)

分支合併和rebase

C代碼 收藏代碼
git merge # 將branch分支合併到當前分支
git merge origin/master –no-ff # 不要Fast-Foward合併,這樣可以生成merge提交

git rebase master # 將master rebase到branch,相當於:
git co && git rebase master && git co master && git merge

Git補丁管理(方便在多臺機器上開發同步時用)

C代碼 收藏代碼
git diff > ../sync.patch # 生成補丁
git apply ../sync.patch # 打補丁
git apply –check ../sync.patch #測試補丁能否成功

Git暫存管理

C代碼 收藏代碼
git stash # 暫存
git stash list # 列所有stash
git stash apply # 恢復暫存的內容
git stash drop # 刪除暫存區

Git遠程分支管理

C代碼 收藏代碼
git pull # 抓取遠程倉庫所有分支更新併合併到本地
git pull –no-ff # 抓取遠程倉庫所有分支更新併合併到本地,不要快進合併
git fetch origin # 抓取遠程倉庫更新
git merge origin/master # 將遠程主分支合併到本地當前分支
git co –track origin/branch # 跟蹤某個遠程分支創建相應的本地分支
git co -b origin/ # 基於遠程分支創建本地分支,功能同上

git push # push所有分支
git push origin master # 將本地主分支推到遠程主分支
git push -u origin master # 將本地主分支推到遠程(如無遠程主分支則創建,用於初始化遠程倉庫)
git push origin # 創建遠程分支, origin是遠程倉庫名
git push origin : # 創建遠程分支
git push origin : #先刪除本地分支(git br -d ),然後再push刪除遠程分支

基本的分支管理

C代碼 收藏代碼

創建一個分支

git branch iss53

切換工作目錄到iss53

git chekcout iss53

將上面的命令合在一起,創建iss53分支並切換到iss53

git chekcout –b iss53

合併iss53分支,當前工作目錄爲master

git merge iss53

合併完成後,沒有出現衝突,刪除iss53分支

git branch –d iss53

拉去遠程倉庫的數據,語法爲 git fetch [remote-name]

git fetch

fetch 會拉去最新的遠程倉庫數據,但不會自動到當前目錄下,要自動合併

git pull

查看遠程倉庫的信息

git remote show origin

建立本地的dev分支追蹤遠程倉庫的develop分支

git checkout –b dev origin/develop

Git遠程倉庫管理

C代碼 收藏代碼
git remote -v # 查看遠程服務器地址和倉庫名稱
git remote show origin # 查看遠程服務器倉庫狀態
git remote add origin git@ github:robbin/robbin_site.git # 添加遠程倉庫地址
git remote set-url origin git@ github.com:robbin/robbin_site.git # 設置遠程倉庫地址(用於修改遠程倉庫地址)
git remote rm # 刪除遠程倉庫

創建遠程倉庫

C代碼 收藏代碼
git clone –bare robbin_site robbin_site.git # 用帶版本的項目創建純版本倉庫
scp -r my_project.git git@ git.csdn.net:~ # 將純倉庫上傳到服務器上

mkdir robbin_site.git && cd robbin_site.git && git –bare init # 在服務器創建純倉庫
git remote add origin git@ github.com:robbin/robbin_site.git # 設置遠程倉庫地址
git push -u origin master # 客戶端首次提交
git push -u origin develop # 首次將本地develop分支提交到遠程develop分支,並且track

git remote set-head origin master # 設置遠程倉庫的HEAD指向master分支

也可以命令設置跟蹤遠程庫和本地庫
C代碼 收藏代碼
git branch –set-upstream master origin/master
git branch –set-upstream develop origin/develop

git時序圖

參考資料

遠程倉庫的使用

何謂分支

基本的分支與合併

分支的管理

分支式工作流程

遠程分支

衍合

參考1: http://www.xbc.me/git-commands/

參考2: http://neverno.me/hello-world/git-commands-github.html

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