git基础
首次设置Git的user name 和 email
git config --global user.name "eonun"
git config --global user.email "eonun@qq.com"
Git的基础命令
master
:默认开发分支 Head
:默认开发分支
origin
:默认远程版本库 Head^
:Head的父提交
命令 | 功能 |
---|---|
创建版本库 | |
git clone <url> |
克隆远程版本库 |
git init |
初始化本地库 |
`find . -name ".git" | xargs rm -Rf` |
修改和提交 | |
git status |
查看状态 |
git diff |
查看变更内容 |
git add --all |
跟踪所有文件 |
git add <file> |
跟踪指定文件 |
git mv <old> <new> |
文件改名 |
git rm <file> |
删除文件 |
git rm --cached <file> |
停止跟踪但不删除 |
git commit -m "message" |
提交所有更新过的文件,并添加提交信息 message |
git commit --amend |
修改最后一次提交 |
查看提交历史 | |
git log |
查看提交历史 |
git log -p <file> |
查看指定文件的提交历史 |
git blame <file> |
以列表形式查看指定文件提交历史 |
撤销 | |
git reset --hard HEAD |
撤销工作目录中所有未提交文件的修改内容 |
git checkout HEAD <file> |
撤销指定的未提交文件的修改内容 |
git revert <commit> |
撤销指定的提交 |
分支与标签 | |
git branch |
显示所有本地分支 |
git checkout <branch/tag> |
切换到指定分支或标签 |
git branch <new-branch> |
创建新分支 |
git branch -d <branch> |
删除本地分支 |
git tag |
列出所有本地标签 |
git tag <tagname> |
基于最新提交创建标签 |
git tag -d <tagname> |
删除标签 |
合并与衍合 | |
git merge <branch> |
合并指定分支到当前分支 |
git rebase <branch> |
衍合指定分支到当前分支 |
远程操作 | |
git remote -v |
查看远程版本库信息 |
git remote show <remote> |
查看指定远程版本库信息 |
git remote add <remote> <url> |
添加远程版本库 |
git fetch <remote> |
从远程库获取代码 |
git pull <remote> |
下载代码及快速合并 |
git push <remote> <branch> |
上传代码及快速合并 |
git push <remote> :<branch/tag-name> |
删除远程分之或标签 |
git push --tage |
上传所有标签 |
暂存 | |
git stash |
暂存 |
git stash list |
查看所有暂存信息 |
git stash apply stash@{0} |
恢复 stash@ |
常用命令
Git 工作区/暂存区/版本库
git init 把指定目录变成 Git 可以管理的仓库
git status 查看仓库当前的状态
git diff 查看具体修改内容
git add <file> 用如下命令把文件添加到仓库
git commit -m "<message>" 把文件提交到仓库
git log (--pretty=oneline) 查看提交记录(简略信息)
git reset --hard HEAD^^ 回退到上上个版本
git reset --hard HEAD~100 回退到前100个版本
git reset --hard 1094a 回退到版本号为 1094a... 的版本
git reflog 查看操作记录(可查看回退前的版本号)
git diff HEAD -- <file> 查看工作区和最新版本的区别
git checkout -- r<file> 撤销文件在工作区的全部修改
git reset HEAD <file> 撤销暂存区的修改,放回工作区
rm <file>/git rm <file> 删除文件并放到暂存区
远程仓库创与推送
git remote add origin git@github.com:xxx/xxx.git 与远程库关联
git push (-u) origin master 推送 master 分支到远程库
git clone git@github.com:xxx/xxx.git 克隆
git remote (-v) 查看远程库信息
git remote rm origin 删除已有的远程库
github配置shh-key
生成秘钥
ssh-keygen -t rsa -C "eonun@qq.com"
# 输入全路径文件名(默认:~/.ssh/id_rsa),输入密码(默认:空),一路回车默认也可
# 生成两个文件:id_rsa 和 id_rsa.pub
将秘钥添加到ssh-agent
eval `ssh-agent -s`
ssh-add ~/.ssh/id_rsa
ssh-add -l # 显示已添加
在Github
添加ssh-key
到github里 Settings
> SSH and GPG keys
> SSH keys
添加秘钥
秘钥内容是xxx_rsa.pub
的内容
测试
ssh -T git@github.com
出现:
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
输入yse
出现:
Hi eonun! You've successfully authenticated, but GitHub does not provide shell access.
若出现Hi
后是用户名,说明成功了
修改.git
下config
中的url
修改前:
url = https://github.com/eonun/eonun.github.io.git
修改为:
url = git@github.com:eonun/eonun.github.io.git
配置多平台ssh-key
分别生成shh-key
或者都使用同一个秘钥
ssh-keygen -t rsa -C 'eonun@qq.com' -f ~/.ssh/gitee_id_rsa
ssh-keygen -t rsa -C 'eonun@qq.com' -f ~/.ssh/github_id_rsa
ssh-keygen -t rsa -C 'eonun@qq.com' #使用都使用同一个秘钥也可以
# -f 指定秘钥文件
配置
新建~/.ssh/config
添加内容:
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
# coding
Host eonun.coding.net
HostName eonun.coding.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa.pub
Host
和HostName
填写git
服务器的域名,IdentityFile
指定私钥的路径
测试
ssh -T git@gitee.com
ssh -T git@github.com
ssh -T git@eonun.coding.net
例
新建仓库
Code所在根目录执行
git init
将项目的所有文件添加到仓库中
git add .
添加README
git add README.md
提交到仓库
git commit -m "注释语句"
将本地的仓库关联到GitHub,改成自己的地址
git remote add origin https://github.com/xxxxx/Test.git
上传前pull一下
git pull origin master
上传代码到远程仓库
git push -u origin master
中间可能会让你输入Username和Password,你只要输入github的账号和密码就行了。执行完后,如果没有异常,等待执行完就上传成功了。
更新仓库
查看当前的git仓库状态
git status
更新全部
git add *
接着添加更新说明
git commit -m "更新说明"
先git pull,拉取当前分支最新代码
git pull
出现:fatal: 拒绝合并无关的历史
时使用--allow-unrelated-histories
忽略版本不同造成的影响
push到远程master分支上
git push origin master
不出意外,打开GitHub已经同步了
分支管理
查看所有分支
git branch --all
重命名git远程分支
1、重命名远程分支对应的本地分支
git branch -m old_local_branch_name new_local_branch_name
2、删除远程分支
git push origin :old_local_branch_name
3、重新推送新命名的本地分支
git push origin new_local_branch_name