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

  1. 设置用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"
  1. 查看当前配置
git config --list

基本操作

  1. 初始化仓库
git init
  1. 克隆仓库
git clone <repository-url>
  1. 查看状态
git status
# 查看具体修改内容
git diff
# 查看工作区和最新版本的区别
git diff HEAD -- <file>
  1. 添加文件到暂存区
git add <file-name>
# 添加所有文件
git add .
  1. 提交更改
git commit -m "Commit message"
  1. 查看提交历史
git log
# 查看操作记录(可查看回退前的版本号)
git reflog

分支操作

  1. 查看分支
git branch
  1. 创建新分支
git branch <branch-name>
  1. 切换分支
git checkout <branch-name>
  1. 创建并切换到新分支
git checkout -b <branch-name>
  1. 合并分支
git merge <branch-name>
  1. 删除分支
git branch -d <branch-name>

远程仓库操作

  1. 查看远程仓库
git remote -v
  1. 添加远程仓库
git remote add origin <repository-url>
  1. 推送到远程仓库
git push origin <branch-name>
  1. 拉取远程仓库更新
git pull origin <branch-name>
  1. 从远程仓库获取更新
git fetch origin
  1. 删除已有的远程库
git remote rm origin

撤销更改

  1. 撤销工作区中的修改
git checkout -- <file-name>
  1. 撤销暂存区中的修改
git reset HEAD <file-name>
  1. 修改最后一次提交
git commit --amend
  1. 回退到某个提交
git reset --hard <commit-hash>
# 回退到上上个版本
git reset --hard HEAD^^
# 回退到前100个版本
git reset --hard HEAD~100
# 回退到版本号为 1094a... 的版本
git reset --hard 1094a

停止跟踪文件

  1. 停止跟踪特定文件
    使用 git rm --cached 命令来停止跟踪文件,这样文件会从 Git 仓库中删除,但仍保留在你的工作目录中。
git rm --cached <file-name>
  1. 停止跟踪整个目录
    如果你想停止跟踪整个目录中的文件,可以使用以下命令:
git rm -r --cached <directory-name>
  1. 提交更改
    停止跟踪文件后,需要进行一次提交,以应用这些更改。
git commit -m "Stop tracking <file-name>"

忽略文件

  1. 更新 .gitignore 文件
    为了防止这些文件在将来的提交中再次被跟踪,你可以将它们添加到 .gitignore 文件中。

示例:

# 忽略特定文件
<file-name>

# 忽略整个目录
<directory-name>/
  1. 提交 .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后是用户名,说明成功了

修改.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

书籍

中文
英文