轉(zhuǎn)載注明出處:http://www.reibang.com/p/864fd9be14d5
Git安裝
下載Git有兩種方法
- 直接下載安裝包夸盟,Git下載地址
- 用homebrew指令下載赠堵,不過首先需要安裝homebrew
- 在終端執(zhí)行后面指令安裝,
homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 完成后痰洒,使用以后指令安裝Git崇呵,
brew install git
- 在終端執(zhí)行后面指令安裝,
安裝好Git后再悼,配置用戶名和用戶郵箱,以后每次與Git的交互都會(huì)使用該信息。
git config --global user.name "your_name"
git config --global user.email "your_email@gmail.com"
配置信息可以更改环形,以后想要更改使用上面指令就可以策泣。同時(shí)可以使用git config --list
指令查看Git的配置信息。
Git默認(rèn)是大小寫不敏感的抬吟,也就是說萨咕,將一個(gè)文件名某個(gè)字母做了大小寫轉(zhuǎn)換的修改Git是忽略這個(gè)改動(dòng)的,導(dǎo)致在同步代碼時(shí)候會(huì)出現(xiàn)錯(cuò)誤火本,所以建議大小把Git設(shè)置成大小寫敏感危队。
git config core.ignorecase false
生成密鑰
Git關(guān)聯(lián)遠(yuǎn)端倉(cāng)庫(kù)時(shí)候需要提供公鑰,本地保存私鑰钙畔,每次與遠(yuǎn)端倉(cāng)庫(kù)交互時(shí)候茫陆,遠(yuǎn)端倉(cāng)庫(kù)會(huì)用公鑰來(lái)驗(yàn)證交互者身份。使用以下指令生成密鑰擎析。
ssh-keygen -t rsa -C "your_email@youremail.com"
生成密鑰后盅弛,在本地的/Users/當(dāng)前電腦用戶/.ssh
目錄下會(huì)生成兩個(gè)文件id_rsa
、id_rsa.pub
叔锐,id_rsa
文件保存的是私鑰挪鹏,保存于本地,id_rsa.pub
文件保存的是公鑰愉烙,需要將里面內(nèi)容上傳到遠(yuǎn)端倉(cāng)庫(kù)讨盒。
獲取公鑰字符串具體操作如下圖。
- 輸入
cd
指令步责,進(jìn)入當(dāng)前用戶目錄 - 輸入
ls -a
指令返顺,查看當(dāng)前用戶目錄下所有文件,包括隱藏文件 - 輸入
cd .ssh
指令蔓肯,進(jìn)入.ssh
目錄 - 輸入
ls
指令遂鹊,查看.ssh
目錄下的文件 - 輸入
cat id_rsa.pub
指令,查看id_rsa.pub
文件中內(nèi)容
遠(yuǎn)端倉(cāng)庫(kù)添加密鑰
以GitHub為例子蔗包,向遠(yuǎn)端倉(cāng)庫(kù)添加公鑰秉扑,上面已經(jīng)獲取到了公鑰,只需要將公鑰添加到遠(yuǎn)端倉(cāng)庫(kù)就可以了调限。
在個(gè)人設(shè)置頁(yè)面舟陆,左邊選中SSH and GPG keys
,在右邊添加公鑰耻矮,title
是key的名稱秦躯,可以隨便取,可更改裆装,key
是上面我們獲取到的公鑰踱承,填寫完畢后點(diǎn)擊add SSH key
按鈕倡缠,這樣遠(yuǎn)端就添加到了密鑰。
本地關(guān)聯(lián)遠(yuǎn)端倉(cāng)庫(kù)
- 在本地文件夾下面執(zhí)行
git init
指令茎活,初始化文件夾昙沦,作為本地的一個(gè)倉(cāng)庫(kù)。 - 執(zhí)行
git remote add origin 倉(cāng)庫(kù)的ssh鏈接
- 執(zhí)行
git pull
指令妙色,將遠(yuǎn)端代碼拉取到本地
執(zhí)行完畢后桅滋,遠(yuǎn)端倉(cāng)庫(kù)代碼已經(jīng)同步到了本地。
常用Git指令
-
初始化配置
git config —global user.name “XXX" git config --global user.email “XXXX"
-
設(shè)置大小寫敏感
git config core.ignorecase false
生成密鑰
ssh-keygen -t rsa -C “your_email”
將遠(yuǎn)端代碼clone到本地目錄
git clone <遠(yuǎn)端git> <本地目錄>
-
提交修改
git add <文件> // 將有修改的文件添加到本地緩存中 git add . 是添加所有修改 git commit -m "本次修改信息" // 提交本次修改身辨,一般是在git add之后操作 git reset . // 撤銷add git rm --cached . // 撤銷add
-
切換分支
git checkout <branch_name>
-
以當(dāng)前分支為藍(lán)本新建分支并切換到新分支
git checkout -b <branch_name>
當(dāng)前分支合并其他分支
git merge <branch_name>
遠(yuǎn)端新建分支丐谋,其實(shí)就是將本地分支推送至遠(yuǎn)端
git push origin <local_branch_name>:<remote_branch_name>
刪除遠(yuǎn)端分支,其實(shí)就是推送了一個(gè)空的分支到遠(yuǎn)端覆蓋了原來(lái)的遠(yuǎn)端分支
git push origin :<remote_branch_name>
-
從遠(yuǎn)端拉取分支煌珊,并建立對(duì)應(yīng)關(guān)系
git checkout -b <local_branch_name> origin/<remote_branch_name> // 或者 git branch —track <local_branch_name> origin/<remote_branch_name>
本地已經(jīng)存在的分支和遠(yuǎn)端分支建立對(duì)應(yīng)關(guān)系
git branch —set-upstream <local_branch_name> origin/<remote_branch_name>
-
添加遠(yuǎn)端庫(kù)
git remote add <遠(yuǎn)端庫(kù)代稱> <遠(yuǎn)端庫(kù)地址> git clone <遠(yuǎn)端庫(kù)地址> <目錄> //不需要git init
-
回滾到某一個(gè)提交版本
git reset --hard/soft <commit_id> // 回滾到某一個(gè)版本 git reset --hard/soft HEAD~<num> // 回滾num個(gè)提交 git revert <merge_commit_id> -m number // 撤銷某一次merge号俐,number是指分支,1-代表merge的目標(biāo)分支 2-代表被merge的分支 git revert HEAD~2..HEAD // 撤銷最近兩次提交并形成一個(gè)新的commit
-
強(qiáng)制遠(yuǎn)端覆蓋本地
git fetch --all git reset --hard origin/<remote_branch_name>
-
提交日志查看方式
git log -p 每一次提交具體差異 git log —stat 顯示文件修改差異定庵,沒顯示具體修改 git log —graph 樹形狀提交記錄吏饿,可查看分支合并信息 git log -p filename 查看某個(gè)文件的提交記錄
git pull —rebase
有沖突后,解決沖突蔬浙,使用git add .
然后使用git rebase --continue
-
切換到某個(gè)分支猪落,將其他分支的某次提交應(yīng)用到該分支
git checkout <branch_name> git cherry-pick <commit id>
-
前者表示把<start-commit-id>到<end-commit-id>之間(左開右閉,不包含start-commit-id)的提交cherry-pick到當(dāng)前分支畴博;后者表示把<start-commit-id>到<end-commit-id>之間(閉區(qū)間笨忌,包含start-commit-id)的提交cherry-pick到當(dāng)前分支。
git cherry-pick <start-commit-id>..<end-commit-id> git cherry-pick <start-commit-id>^..<end-commit-id>
-
tag
- 新建tag
git tag <tag_name> //輕量標(biāo)簽 git tag -a <tag_name> -m "tag_msg" // 附注標(biāo)簽 git tag -a <tag_name> <commint_id> // 給某次提交添加標(biāo)簽
- 刪除tag
git tag -d <tag_name>
- 查看tag
git tag // 查看所有tag git show <tag_name> // 查看某條tag
- 提交到遠(yuǎn)端
git push origin <tag_name> // 將某個(gè)tag提交到遠(yuǎn)端 git push origin –tags // 將所有tag提交到遠(yuǎn)端
-
branch相關(guān)指令
git branch -d <branch_name> // 刪除某個(gè)分支 git branch -D <branch_name> // 強(qiáng)制刪除某個(gè)分支 git branch -avv // 查看本地分支與遠(yuǎn)端分支關(guān)系俱病,并且顯示分支最新一次提交信息 git remote show origin // 查看遠(yuǎn)端分支間關(guān)系
-
刪除未跟蹤文件
git clean -f // 刪除 untracked files git clean -fd // 連 untracked 的目錄也一起刪掉
結(jié)束語(yǔ)
本篇粗略的介紹了Git的使用官疲,但是對(duì)于Git內(nèi)部的實(shí)現(xiàn)和一些具體的使用方法,還是需要自己去深入的了解亮隙。關(guān)于Git的詳細(xì)介紹和工作原理途凫,可以查看以下連篇文章。
Git教程溢吻,里面有介紹到Git的工作原理维费,可以仔細(xì)閱讀。
Git Community Book 中文版介紹了Git具體使用煤裙,這本書也是關(guān)于Git的一本好書掩完。
Git練習(xí),實(shí)戰(zhàn)練習(xí)Git的各種指令硼砰。