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后是用户名,说明成功了

修改.gitconfig中的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

HostHostName填写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

书籍:中文 英文