Git 简单命令集

272 阅读3分钟

git 是现在常用的代码管理工具,工作中经常用到,所以需要学好git 的基本用法,降低工作中的出错率。

基础命令

正常工作流

  1. 下载仓库 git clone 仓库地址
  2. 查看仓库状态 git status
  3. 添加文件   git add 文件名称
  4. 添加所有修改的文件 git add .
  5. 提交文件 git commit -m"描述"
  6. 一次将所有修改文件添加并提交到本地库 git commint -a -m"描述"
  7. 提交到远程仓库 git push
  8. 从远程仓库拉取代码 git pull

以上是一些基础命令,可以完成正常工作流中的日常操作了。

分支和合并

  1. 查看所有分支 git branch -a
  2. 查看远程分支 git branch -r
  3. 查看本地分支 git branch
  4. 创建本地分支 git branch 分支名
  5. 切换分支 git checkout 分支名
  6. 合并分支 git merge 待并入的分支名
  7. 删除本地分支  git branch -d 分支名
  8. 删除远程分支
git br -r -d origin/分支名    
git push
  1. 查看日志 git log

本地操作完成以后需要 push 到远程才会在仓库生效

撤销修改但是没有到远程仓库

  1. 撤销 没有add 和 commit的文件

撤销单个文件: git checkout -- filename

撤销当前所有修改的文件:git checkout .

  1. 撤销 已经add但是没有commit 的文件

单个文件git reset HEAD filename

所有修改 git reset HEAD

  1. 撤销已经commit但是没有push的文件

保留修改内容 git reset --soft HEAD^

不保留修改内容 git reset --hard HEAD^

已经提交到远程仓库想要回滚版本

  1. reset 回退以后,不保留目前版本之后的版本记录。本质是移动HEAD的位置
  • 回退到上一个版本,没有add 之前的状态

git reset HEAD^

  • 回退到上一个版本,commit 状态

git reset --soft HEAD^

  • 回退到上一个版本,未开始修改的状态,分支初始状态

git reset --hard HEAD~1

  • 向前回退两个版本,仓库状态是没有add 的状态;加--soft 是commit 状态

git reset HEAD~2

回退完以后需要执行 git push -f 提交到远程仓库,简单的git push无法提交

  1. revert 回退以后保留版本记录,同时会新增一个版本来记录回退的操作。
  • 回退到上一个版本,分支初始状态

git revert HEAD

  • 回退到指定版本,分支初始状态

git revert commitID

回退后需要git push提交到远程仓库

暂存

当我们同时在不同的分支开发不同版本时,可能会遇到刚开发了一部分A分支的需求就需要切换到B分支去修改bug ,这个时候由于A分支的代码还不够完善提交后可能会影响其他同事的代码等情况吧,我们需要暂时存储A分支的代码。

  1. 查看git 栈中暂存的列表 git stash list
  2. 保存当前内容到git栈中 git stash
  3. 从暂存区中栈顶的内容 git stash pop
  4. 恢复栈中某一个列的内容 git stash apply stash@{2}

删除文件

git rm filename

重命名文件名

git mv a.js b.js

文件名从 a 改为 b

git 命令设置别名,简化命令复杂度

找到根目录下的.gitconfig 文件,vi .gitconfig 修改文件配置。其中alias 是别名。可以做以下类似的设置:

image.png

通过下面方式设置全局配置

git config --global alias.st status
git config --global alias.ci commit

多账号操作

同时使用多个账号 push 不同仓库的内容,怎么保证账号不会交叉使用呢?(仓库A 使用A账号,仓库B使用B账号)

  1. 查看git的所有配置

git config --list

  1. 查看git的 单项配置

git config user.name

git config user.email

  1. 全局设置

git config --global user.name "A"

git config --global user.email 'Aemail"

这是全局设置,设置后所有的仓库提交都会使用这个账号,如果你只想在仓库A中使用A账号,你就不需要使用全局设置了。

  1. 非全局设置

git config user.name "A"

git config user.email "Aemail"