一、重要概念
Git分为工作区
,暂存区
,本地仓库
,远程仓库
。
通过add
命令,可以把文件放入暂存区;
通过commit命令,可以把修改放入本地仓库;
通过git push origin master,可以把本地仓库的内容提交到远程库;
快速合并(不保留分支信息):
普通合并(保留分支信息):
团队开发过程:
对于BUG的修改,一般是先保存目前的分支现场,然后再新分出一个分支,修复好BUG之后,再合并到主干上。然后恢复分支现场继续工作。
二、配置
key配置
- 首先要检查key是不是已经存在,
打开一个终端,并输入以下命令:
$ ls -al ~/.ssh
如果结果列表中包含以下文件, 则不需要在生成新的KEY, 可以直接使用。
id_dsa.pub id_ecdsa.pub id_ed25519.pub id_rsa.pub
- 如果不存在, 则需要创建新的Key来使用。
输入下面的命令来生成key, 注意替换你自己的邮箱地址。
$ ssh-keygen -t rsa -C "your_email@example.com"
Creates a new ssh key using the provided email Generating
public/private rsa key pair. Enter file in which to save the key
(/your_home_path/.ssh/id_rsa):
这里在提示你保存key的位置, 默认直接回车就可以。
Enter passphrase (empty for no passphrase):
当你看到这个的时候, 输入你的密码。
Enter same passphrase again:
再次输入, 以确认密码。
- 当以上步骤成功完成后, 你将看到类似与这样的结果:
Your identification has been saved in /your_home_path/.ssh/id_rsa.
Your public key has been saved in /your_home_path/.ssh/id_rsa.pub. The
key fingerprint is: 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db
your_email@example.com
- 执行以下命令将KEY加入到ssh-agent:
$ eval "$(ssh-agent -s)"
Agent pid 59566
$ ssh-add ~/.ssh/id_rsa
- 打开 ~/.ssh/id_rsa.pub文件, 复制其中所有的内容。然后把它粘贴到github的ssh key添加的表单中。
- 执行以下命令来测试key。
$ ssh -T git@github.com
三、命令使用
1.操作版本
创建版本库
$ git init
连接远程仓库
其中origin是本地对远程库的别称,不一定需要用origin
$ git remote add origin git@github.com:ruihanL/learngit.git
推送至远程服务器
此处指定推送至origin的master
$ git push -u origin master
$ git push origin master
带进度条,推送
git push --progress --porcelain gee refs/heads/apptestnew-210002:refs/heads/apptestnew-210002 --set-upstream
本地克隆远程库
$ git clone git@github.com:ruihanL/mygit.git
查看远程库信息
$ git remote
$ git remote -v
设置本地分支与远程分支的连接
$ git branch --set-upstream dev origin/dev
从远程库更新本地文件
$ git pull
多人协作的工作模式:
git push origin branch-name
git pull
git push origin branch-name
git branch --set-upstream branch-name origin/branch-name
2、分支操作
创建分支
$ git checkout -b dev
$ git branch dev
$ git checkout dev
分支合并
$ git merge dev
$ git merge --no-ff -m “merge with no-ff” dev
删除分支
$ git branch -d dev
添加修改
$ git add readme.txt
提交修改
$ git commit -m "wrote a readme file"
查看状态
$ git status
对比文件
$ git diff readme.txt
$ git diff HEAD -- readme.txt
查看日志
$ git log
$ git log --pretty=oneline
$ git log --graph
工作区回到上个版本或某个版本
$ git reset --hard HEAD^
$ git reset --hard 3628164
查看所有的命令日志
$ git reflog
某个文件丢弃工作区回到上个版本(回到上一次commit或add之后的状态)
$ git checkout -- readme.txt
删除暂存区的内容
$ git reset HEAD readme.txt
删除某个文件
$ git rm test.txt
$ git commit -m "remove test.txt"
恢复某个被删除的文件
$ git checkout -- test.txt
## 保存工作现场
$ git stash
## 查看现场列表
$ git stash list
## 恢复现场
$ git stash apply
$ git stash pop
$ git stash drop
## 创建标签
$ git tag v1.0
## 查看所有标签
$ git tag
$ git tag v0.9 6224937
$ git tag -a v0.1 -m "version 0.1 released" 3628164
$ git tag -s v0.2 -m "signed version 0.2 released" fec145a
## 查看标签信息
$ git show v0.9
## 本地删除标签
$ git tag -d v0.1
## 推送本地标签到远程库
$ git tag -d v0.1
## 本地和远程删除标签
$ git tag -d v0.9
$ git push origin :refs/tags/v0.9
## 自定义Git
Git显示颜色
$ git config --global color.ui true
## 忽略文件
.gitignore文件
## 检查忽略规则
$ git check-ignore -v App.class
## 配置别名
$ git config --global alias.st status
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.unstage 'reset HEAD'
$ git config --global alias.last 'log -1'
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
## 拉取远程分支
拉取远程分支的所有信息,比如想要获得远程新创建的分支:
git -c credential.helper= -c core.quotepath=false -c log.showSignature=false fetch origin --progress --prune
简单指令:**git fetch**
**git branch -a** // 查看远程分支列表
**git checkout -b develop origin/develop** // 核心一步:将远程仓库的develop分支拉取到本地develop分支,并切换到develop分支
## 参考链接
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/
https://git-scm.com/download/win
https://github.com
https://git-scm.com/book/zh/v1
https://blog.csdn.net/haohaojian/article/details/77529485?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
---
未完待续。。。