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 add *
git commit -m "本次提交的备注信息"
git push -u origin main
# 停止追踪
git rm --cached *
配置 Git
- 设置用户名和邮箱:
git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"
- 查看当前配置:
git config --list
基本操作
- 初始化仓库:
git init
- 克隆仓库:
git clone <repository-url>
- 查看状态:
git status
# 查看具体修改内容
git diff
# 查看工作区和最新版本的区别
git diff HEAD -- <file>
- 添加文件到暂存区:
git add <file-name>
# 添加所有文件
git add .
- 提交更改:
git commit -m "Commit message"
- 查看提交历史:
git log
# 查看操作记录(可查看回退前的版本号)
git reflog
分支操作
- 查看分支:
git branch
- 创建新分支:
git branch <branch-name>
- 切换分支:
git checkout <branch-name>
- 创建并切换到新分支:
git checkout -b <branch-name>
- 合并分支:
git merge <branch-name>
- 删除分支:
git branch -d <branch-name>
远程仓库操作
- 查看远程仓库:
git remote -v
- 添加远程仓库:
git remote add origin <repository-url>
- 推送到远程仓库:
git push origin <branch-name>
- 拉取远程仓库更新:
git pull origin <branch-name>
- 从远程仓库获取更新:
git fetch origin
- 删除已有的远程库:
git remote rm origin
撤销更改
- 撤销工作区中的修改:
git checkout -- <file-name>
- 撤销暂存区中的修改:
git reset HEAD <file-name>
- 修改最后一次提交:
git commit --amend
- 回退到某个提交:
git reset --hard <commit-hash>
# 回退到上上个版本
git reset --hard HEAD^^
# 回退到前100个版本
git reset --hard HEAD~100
# 回退到版本号为 1094a... 的版本
git reset --hard 1094a
停止跟踪文件
- 停止跟踪特定文件:
使用git rm --cached
命令来停止跟踪文件,这样文件会从 Git 仓库中删除,但仍保留在你的工作目录中。
git rm --cached <file-name>
- 停止跟踪整个目录:
如果你想停止跟踪整个目录中的文件,可以使用以下命令:
git rm -r --cached <directory-name>
- 提交更改:
停止跟踪文件后,需要进行一次提交,以应用这些更改。
git commit -m "Stop tracking <file-name>"
忽略文件
- 更新
.gitignore
文件:
为了防止这些文件在将来的提交中再次被跟踪,你可以将它们添加到.gitignore
文件中。
- 编辑
.gitignore
文件并添加文件或目录的路径。
示例:
# 忽略特定文件
<file-name>
# 忽略整个目录
<directory-name>/
- 提交
.gitignore
文件:
更新.gitignore
后,别忘了提交这些更改。
git add .gitignore
git commit -m "Update .gitignore to ignore <file-name>"
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