Git 的用法
一、配置SSH key
檢查是否已存在 SSH Key 打開電腦終端,輸入命令:ls -al ~/.ssh會出現(xiàn)兩種情況
- 終端出現(xiàn)文件
id_rsa.pub或id_dsa.pub,則表示該電腦已經(jīng)存在SSH Key,此時可繼續(xù)輸入命令:
pbcopy < ~/.ssh/id_rsa.pub
這樣你需要的SSH Key 就已經(jīng)復制到粘貼板上了,
- 終端未出現(xiàn)
id_rsa.pub或id_dsa.pub文件,表示該電腦還沒有配置SSH Key,此時需要輸入命令:
ssh-keygen -t rsa -C "Balopy@268xue.com"
- 注意,這里的 Balopy@268xue.com 是你自己的郵箱,選一般的常用的郵箱即可,筆者當時用的是騰訊企業(yè)郵箱,就出現(xiàn)了一點小問題,所以不常用的郵箱一般不推薦
默認會在相應路徑下(/your_home_path)生成id_rsa和id_rsa.pub兩個文件,此時終端會顯示:
Generating public/private rsa key pair.
Enter file in which to save the key (/your_home_path/.ssh/id_rsa):
連續(xù)回車即可,也可能會讓你輸入密碼,密碼就是你的開機密碼
此時再輸入命令:ls -al ~/.ssh 就會出現(xiàn) id_rsa.pub 和 id_dsa.pub 兩個文件,然后重復情況一的步驟即輸入以下命令再進行步驟3即可:
pbcopy < ~/.ssh/id_rsa.pub
- 將SSH Key添加到GitLab中
打開GitLab, 登錄,找到左邊欄有-->設置--SSH Key
二、基本配置
- Git 配置個人的用戶名稱和電子郵件地址:
git config --global user.name "Balopy"
git config --global user.email Balopy@268xue.com
如果用了 --global 選項,那么更改的配置文件就是位于你用戶主目錄下的那個,以后你所有的項目都會默認使用這里配置的用戶信息。
如果要在某個特定的項目中使用其他名字或者電郵,只要去掉 --global 選項重新配置即可,新的設定保存在當前項目的 .git/config 文件里。
-
文本編輯器
設置Git默認使用的文本編輯器, 一般可能會是 Vi 或者 Vim。如果你有其他偏好,比如 Emacs 的話,可以重新設置:git config --global core.editor emacs 查看配置信息 git config --list
credential.helper=osxkeychain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
user.name=Balopy
user.email=Balopy@268xue.com
core.editor=vim
- 編輯配置信息
$ git config --edit --global
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[user]
name = Balopy
email = Balopy@268xue.com
[core]
editor = vim
[http]
postBuffer = 524288000 (這個是內(nèi)存RAM,如果值不合適,會報錯:fatal: Out of memory, malloc failed (tried to allocate 889192448 bytes)
)
~
"~/.gitconfig" 12L, 239C
- 可以單獨查看某個配置信息:
git config user.name
三、使用
1. git init 使用當前目錄作為Git倉庫,我們只需使它初始化。
Git 使用 git init 命令來初始化一個 Git 倉庫,Git 的很多命令都需要在 Git 的倉庫中運行,所以 git init 是使用 Git 的第一個命令。
在執(zhí)行完成 git init 命令后,Git 倉庫會生成一個 .git 目錄,該目錄包含了資源的所有元數(shù)據(jù),其他的項目目錄保持不變(不像 SVN 會在每個子目錄生成 .svn 目錄,Git 只在倉庫的根目錄生成 .git 目錄)。
- 使用我們指定目錄作為Git倉庫。
git init Balopy_Git- 在gitLab 上建一個工程,并 clone 到本地
Balopy_Git文件夾下(這個位置自己隨意)。
2. clone 整個工程
git clone <版本庫的網(wǎng)址>
例: git clone git@git.268xue.com:ios/268Product.git
clone 到指定目錄
git clone <版本庫的網(wǎng)址> <本地目錄名>
例:git clone git@git.268xue.com:ios/268Product.git "268新demo"
3. add / commit
- 執(zhí)行 git add
《文件名》/注意:一定要加上/,表示目錄下所有文件,文件名最好不要用 漢字。- 執(zhí)行
git remote add origin git@git.268xue.com:ios/yidadaOnline.git遠程添加到gitgit commit -m "備注"如果 git 不能提交 Pods,請查看 Pods 文件夾下有沒有.git文件夾,如果有,刪除重新提交。- 查看遠程倉庫
如果想查看你已經(jīng)配置的遠程倉庫服務器,可以運行git remote命令。
你也可以指定選項 -v,會顯示需要讀寫遠程倉庫使用的 Git 保存的簡寫與其對應的 URL。
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
4. git push / pull
- git push origin master 遠程推送到 gitLab。
- 打開本地目錄
- git pull 拉取遠程文件
open ~ 打開根目錄
open ~/Downloads/ 打開根目錄下的文件夾
open . 打開當前文件夾
5. 創(chuàng)建分支 git branch
git branch查看分支,列出本地所有分支git branch -r查看遠程分支git branch -a查看本地和遠程分支git branch wang創(chuàng)建分支,名稱wanggit checkout wang切換到指定分支wang, 即將``wang`設置為當前操作分支git add newfile.txt在當前分支下,添加文件git commit -m "添加文件"提交到當前分支git push推送到遠程分支git merge verson_1.0當前分支合并 verson_1.0分支,如 master 合并 verson_1.0git branch -m wang version_1.0修改分支名 wang 為 version_1.0git push --set-upstream origin verson_1.0將修改名字后的分支推送到遠程git branch --d version_1.0刪除本地分支git push origin --delete version_1.0刪除遠程分支
$ git branch 本地分支
master 主干分支
$ git branch wang 創(chuàng)建分支
$ git branch
* master * 表示當前操作分支
wang 新創(chuàng)建分支
$ git checkout wang 指定分支
master
* wang 分支,* 表示當前操作分支
$ git branch -r 遠程分支
origin/master
origin/wang
$ git add newfile.txt
$ git commit -m "添加文件"
$ git push push 之后遠程自動創(chuàng)建分支 ·remotes/origin/wang·
$ git branch -a
master
* wangchun
remotes/origin/master
remotes/origin/wang
$ git branch -m wang version_1.0 修改分支名 wang 為 version_1.0
$ git branch 查看本地分支
master
* verson_1.0
$ git push --set-upstream origin verson_1.0 將修改名字后的分支推送到遠程
$ git branch -a
master
* verson_1.0
remotes/origin/master
remotes/origin/verson_1.0
$ git checkout master 指定當前分支為master
$ git merge verson_1.0 當前分支 master 合并 verson_1.0分支
$ git push origin --delete verson.2
To git.268xue.com:ios/Test.git
- [deleted] verson.2
$ git branch -r
origin/master 已刪除
-
Git 拉取遠程分支步驟 以及常用指令
-
新建一個空文件,文件名為Demo
mkdir Demo -
建立一個空的git倉庫
git init -
關聯(lián)倉庫
git remote add origin git@github.com:XXXX.git -
把遠程分支拉到本地
git fetch origin remotDeveloper(remotDeveloper為遠程倉庫的分支名) -
在本地創(chuàng)建分支dev并切換到該分支
git checkout -b Balopy(本地分支名稱) origin/remotDeveloper(遠程分支名稱) -
把某個分支上的內(nèi)容都拉取到本地
git pull origin remotDeveloper(遠程分支名稱) -
提交到遠程分支
git push origin HEAD:remotDeveloper (提交到原遠程分支) git push origin Balopy(提交到本地同名分支)
-
-
Git本地及遠程分支回退
- git本地版本回退
git reset --hard HEAD^ 回退到上一個版本 git reset --hard HEAD~3 回退到之前的3次提交后 git reset --hard commit_id(可用 git log 查看) - git遠程版本回退
git push origin HEAD --force #強制將本地的HEAD與遠程服務器同步,刪除服務器回退前的提交 #下面的命令也可以實現(xiàn)遠程版本回退 git reset --hard HEAD~1 git push --force
- git本地版本回退
6. 刪除 git 文件
git rm test.txt (刪除本地文件)
git rm -r test (刪除本地文件夾)
git rm -r --cached 寧夏共享_v_2017_10_10 (刪除遠程文件夾)
git rm -r --cached .settings/
git rm -r --cached .classpath
git rm -r --cached .project
- 可以通過命令
git remote show [remote-name]查看某個遠程倉庫的詳細信息,比如要看所克隆的 origin 倉庫
git remote show origin
- 重命名文件
git mv<文件名> <文件名>
git mv README.md detail.txt
四. 刪除遠程 Tag 在Git v1.7.0之后
- 刪除Tag:
git push origin --delete tag <tagname>
- 在Git v1.7.0之前
刪除遠程分支(推送一個空分支到遠程分支,其實相當于刪除遠程分支):
git push origin :<branchName>
- 刪除遠程 Tag(推送一個空tag到遠程tag,其實相當于刪除遠程tag):
git tag -d <tagname>
git 的更多用法請參考 Git教程