Git是什么澜共?
Git 屬于分散型版本管理系統(tǒng),是為版本管理而設(shè)計的軟件糖权。
遠(yuǎn)程倉庫
創(chuàng)建公開密鑰認(rèn)證所需的ssh key
$ ssh-keygen -t rsa -C "your_email@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key
(/Users/your_user_directory/.ssh/id_rsa): 按回車鍵
Enter passphrase (empty for no passphrase): 輸入密碼
Enter same passphrase again: 再次輸入密碼
id_rsa 文件是私有密鑰企量,id_rsa.pub 是公開密鑰。
添加公開密鑰
登錄github闹伪,點(diǎn)擊右上角頭像沪铭,選擇Settings,再點(diǎn)擊SSH and GPG keys,設(shè)置SSH keys偏瓤。點(diǎn)擊New SSH key 把id_rsa.pub 文件里的內(nèi)容添加進(jìn)去伦意。完成以上設(shè)置后,就可以用手中的私人密鑰與GitHub 進(jìn)行認(rèn)證和通信了硼补。讓我們來實(shí)際試一試驮肉。
$ ssh -T git@github.com
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is fingerprint值 .
Are you sure you want to continue connecting (yes/no)? 輸入yes
Hi hirocastest! You've successfully authenticated, but GitHub does not
provide shell access.
配置
git config --global user.name xxx #方便產(chǎn)品經(jīng)理找(懟)你
git config --global user.email yyy #方便產(chǎn)品經(jīng)理找(懟)你
git config --global push.default simple
git config --global core.quotepath false #防止文件名變成數(shù)字
git config --global core.editor "vim" #使用vim編輯提交信息
基本操作
git init——初始化倉庫
要使用Git 進(jìn)行版本管理,必須先初始化倉庫已骇。
mkdir git-demo
cd git-demo
git init
Initialized empty Git repository in /Users/hirocaster/github/github-book
/git-tutorial/.git/
git status——查看倉庫的狀態(tài)
git status命令用于顯示Git 倉庫的狀態(tài)离钝。
$ git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
git add——向暫存區(qū)中添加文件
$ git add README.md
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: README.md
#
git commit——保存?zhèn)}庫的歷史記錄
git commit命令可以將當(dāng)前暫存區(qū)中的文件實(shí)際保存到倉庫的歷史記錄中票编。
$ git commit -m "first"
[master (root-commit) 9f129ba] first
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
-m 參數(shù)后的"First commit"稱作提交信息,是對這個提交的概述卵渴。
git log——查看提交日志
git log命令可以查看以往倉庫中提交的日志慧域。
$ git log
commit 33c1c74e376fd66d0747a8093c4c73b7e9d6427a
Author: wang7211401 <wang7211401@163.com>
Date: Thu Jul 6 16:04:15 2017 +0800
first
git diff——查看更改前后的差別
git diff命令可以查看工作樹、暫存區(qū)浪读、最新提交之間的差別昔榴。
git remote add——添加遠(yuǎn)程倉庫
在GitHub 上創(chuàng)建的倉庫路徑為“git@github.com:用戶名/git-tutorial.git”。現(xiàn)在我們用git remote add命令將它設(shè)置成本地倉庫的遠(yuǎn)程倉庫碘橘。
$ git remote add origin git@github.com:github-book/git-tutorial.git
git push——推送至遠(yuǎn)程倉庫
推送至master 分支
$ git push -u origin master
Counting objects: 20, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (20/20), 1.60 KiB, done.
Total 20 (delta 3), reused 0 (delta 0)
To git@github.com:github-book/git-tutorial.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
git pull——獲取最新的遠(yuǎn)程倉庫分支
git clone——獲取遠(yuǎn)程倉庫
git branch——顯示分支一覽表
git branch命令可以將分支名列表顯示互订,同時可以確認(rèn)當(dāng)前所在分支。
$ git branch
* master
git checkout -b——創(chuàng)建痘拆、切換分支
$ git checkout -b feature-A
Switched to a new branch 'feature-A'
git merge——合并分支
$ git checkout master
Switched to branch 'master'
$ git merge --no-ff feature-A
git log --graph——以圖表形式查看分支
git reset——回溯歷史版本
$ git reset --hard 33c1c7
git reflog ——查看當(dāng)前倉庫執(zhí)行過的操作的日志仰禽。
$ git reflog
33c1c74 HEAD@{0}: checkout: moving from feature-A to master
33c1c74 HEAD@{1}: checkout: moving from master to feature-A
33c1c74 HEAD@{2}: commit (initial): first
git rebase -i——壓縮歷史
git stash——用于保存和恢復(fù)工作進(jìn)度
原則
1.git push 之前必須 git pull
2.git pull 之前必須 git commit
3.git commit 之前有時必須 git add