Git是什么?
Git 属于分散型版本管理系统,是为版本管理而设计的软件。
远程仓库
创建公开密钥认证所需的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,点击右上角头像,选择Settings,再点击SSH and GPG keys,设置SSH keys。点击New SSH key 把id_rsa.pub 文件里的内容添加进去。完成以上设置后,就可以用手中的私人密钥与GitHub 进行认证和通信了。让我们来实际试一试。
$ 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 #方便产品经理找(怼)你
git config --global user.email yyy #方便产品经理找(怼)你
git config --global push.default simple
git config --global core.quotepath false #防止文件名变成数字
git config --global core.editor "vim" #使用vim编辑提交信息
基本操作
git init——初始化仓库
要使用Git 进行版本管理,必须先初始化仓库。
mkdir git-demo
cd git-demo
git init
Initialized empty Git repository in /Users/hirocaster/github/github-book
/git-tutorial/.git/
git status——查看仓库的状态
git status命令用于显示Git 仓库的状态。
$ git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
git add——向暂存区中添加文件
$ 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——保存仓库的历史记录
git commit命令可以将当前暂存区中的文件实际保存到仓库的历史记录中。
$ git commit -m "first"
[master (root-commit) 9f129ba] first
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
-m 参数后的"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命令可以查看工作树、暂存区、最新提交之间的差别。
git remote add——添加远程仓库
在GitHub 上创建的仓库路径为“git@github.com:用户名/git-tutorial.git”。现在我们用git remote add命令将它设置成本地仓库的远程仓库。
$ git remote add origin git@github.com:github-book/git-tutorial.git
git push——推送至远程仓库
推送至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——获取最新的远程仓库分支
git clone——获取远程仓库
git branch——显示分支一览表
git branch命令可以将分支名列表显示,同时可以确认当前所在分支。
$ git branch
* master
git checkout -b——创建、切换分支
$ 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 ——查看当前仓库执行过的操作的日志。
$ 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——用于保存和恢复工作进度
原则
1.git push 之前必须 git pull
2.git pull 之前必须 git commit
3.git commit 之前有时必须 git add