Git基础使用

[toc]

配置

命令

git config

参数 —global

表示你的这台机器上所有的Git仓库都会使用这个配置,也可以对某个仓库指定不同的用户名和Email地址。

配置用户名和Email

  1. git config --global user.name "username"
  2. git config --global user.email "email@example.com"

基础命令

初始化代码库

  1. $ cd <project_dir>
  2. $ git init

添加文件

添加文件到缓存区

  • 添加指定文件 git add <filename>
  • 添加所有文件 git add .

提交到仓库

  • git commit -m <说明信息>

查看状态

git status

查看修改内容

git diff
image.png

  • 查看工作取和版本库里最新版本的区别
    git diff HEAD -- file

image.png

版本回退

查看提交日志

git log --pretty=oneline
参数--pretty=oneline简化输入信息
image.png
image.png

退回指定版本

git reset --hard commit_id

commit_id 可用HEAD:

  • HEAD 表示当前版本
  • HEAD^ 表示上一个版本
  • HEAD^^ 表示上上一个版本
  • HEAD~30 表示上30个版本

image.png

回到未来版本

  • 查看命令历史

退回后 git reflog 查看命令历史,获取commit id, 以便确定要回到未来的哪个版本

image.png

  • 用回退命令回到未来版本

image.png

撤销修改

撤销工作区中修改

git checkout -- file
image.png

撤销缓冲区中修改

git reset HEAD <file>
image.png

删除文件

git rm <file>

image.png

删除本地缓存,但不删除文件

git rm [-r] --cached file_path

远程仓库

创建SSH Key

在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

  1. $ ssh-keygen -t rsa -C "youremail@example.com"

在代码托管中添加key(aliyun code)

image.png

分支

  • 创建分支 git branch <分支名>
  • 切换分支 git checkout <分支名>
  • 创建并切换分支 git checkout -b <分支名称>

将分支提交到远程代码库

git push --set-upstream origin 远程代码库分支名

强制push(本地回滚push)

用于本地回滚后本服务器版本不同,强制覆盖服务器版本
git push --force

移除代码库中文件保留本地文件

git rm file_path —cached

合并提交

  • git rebase -i <commit ID>
  • -i 表示交互,就是vim编辑器
  • <commit ID> 这里的一定要是需要合并 commit 中最旧 commit 的父 commit ID
  • 首先列出给定之前(不包括,越下面越新)的所有 commit,每个 commit 前面有一个操作命令,默认是 pick。我们可以选择不同的 commit,并修改 commit 前面的命令,来对该 commit 执行不同的变更操作 | 命令 | 目的 | | —- | —- | | p, pick | 不对该 commit 做任何处理 | | r,reword | 保留该 commit 但是修改提交信息 | | e,edit | 保留该 commit, 但是 rebase 时会暂停,允许你修改这个 commit | | s,squash | 保留该 commit, 但是会将当前 commit 与上一个 commit 合并 | | f,fixup | 与 squash 相同,但不会保存当前 commit 的提交信息 | | x,exec | 指向其他 shell 命令 | | d,drop | 删除该 commit |

Git

  1. # 在commit前配置信息
  2. git config --local user.name '名称'
  3. git config --local user.email 'email'
  4. git config --uglobal user.email '...'
  5. git config --uglobal user.name '...'
  6. git init # 初始化
  7. git status # 查看状态
  8. git add 文件名 # 将指定文件添加到暂存区
  9. git add . # 当前目录下的所有文件
  10. git commit -m '提交描述信息' # 将缓存区文件添加到分支中
  11. git log # 查看日志
  12. git ls-tree head # 查看分支中所有文件
  13. git ls-files # 查看暂存区和分支中所有文件

回滚

  1. git reset # 回滚
  2. -- soft 版本号 # 回滚到暂存区
  3. -- hard 文件 # 回归到

回滚到回滚前
git reflog
git reset xxx
git checkout 文件名

git stash # 取消当前修改 零时存储到别处
git stash list # 查看零时目录内容
git stash pop # 取回

阿里云code提交

  1. 创建新版本库
  2. git clone git@code.aliyun.com:lckj-django-projects/cotp.git
  3. cd cotp
  4. touch README.md
  5. git add README.md
  6. git commit -m "add README"
  7. git push -u origin master
  8. 已存在的文件夹或 Git 仓库
  9. cd existing_folder
  10. git init
  11. git remote add origin git@code.aliyun.com:lckj-django-projects/cotp.git
  12. git add .
  13. git commit
  14. git push -u origin master

当修改过仓库 地址改变后执行命令
git remote set-url origin 新git地址

执行命令 git remote set-url origin <new url> 更新本地仓库所对应的远程仓库地址;

提交说明

  1. feat:新功能(feature
  2. fix:修补bug
  3. perf: 提高代码性能变更
  4. docs:文档(documentation
  5. style 格式(不影响代码运行的变动)
  6. refactor:其他代码变更(简化代码、重命名变量、删除冗余代码)、重构(即不是新增功能,也不是修改bug的代码变动)
  7. test:增加测试
  8. chore:构建过程或辅助工具的变动