git 是现在常用的代码管理工具,工作中经常用到,所以需要学好git 的基本用法,降低工作中的出错率。
基础命令
正常工作流
- 下载仓库
git clone 仓库地址 - 查看仓库状态
git status - 添加文件
git add 文件名称 - 添加所有修改的文件
git add . - 提交文件
git commit -m"描述" - 一次将所有修改文件添加并提交到本地库
git commint -a -m"描述" - 提交到远程仓库
git push - 从远程仓库拉取代码
git pull
以上是一些基础命令,可以完成正常工作流中的日常操作了。
分支和合并
- 查看所有分支
git branch -a - 查看远程分支
git branch -r - 查看本地分支
git branch - 创建本地分支
git branch 分支名 - 切换分支
git checkout 分支名 - 合并分支
git merge 待并入的分支名 - 删除本地分支
git branch -d 分支名 - 删除远程分支
git br -r -d origin/分支名
git push
- 查看日志
git log
本地操作完成以后需要 push 到远程才会在仓库生效
撤销修改但是没有到远程仓库
- 撤销 没有add 和 commit的文件
撤销单个文件: git checkout -- filename
撤销当前所有修改的文件:git checkout .
- 撤销 已经add但是没有commit 的文件
单个文件git reset HEAD filename
所有修改 git reset HEAD
- 撤销已经commit但是没有push的文件
保留修改内容 git reset --soft HEAD^
不保留修改内容 git reset --hard HEAD^
已经提交到远程仓库想要回滚版本
- 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无法提交
- revert 回退以后保留版本记录,同时会新增一个版本来记录回退的操作。
- 回退到上一个版本,分支初始状态
git revert HEAD
- 回退到指定版本,分支初始状态
git revert commitID
回退后需要git push提交到远程仓库
暂存
当我们同时在不同的分支开发不同版本时,可能会遇到刚开发了一部分A分支的需求就需要切换到B分支去修改bug ,这个时候由于A分支的代码还不够完善提交后可能会影响其他同事的代码等情况吧,我们需要暂时存储A分支的代码。
- 查看git 栈中暂存的列表
git stash list - 保存当前内容到git栈中
git stash - 从暂存区中栈顶的内容
git stash pop - 恢复栈中某一个列的内容
git stash apply stash@{2}
删除文件
git rm filename
重命名文件名
git mv a.js b.js
文件名从 a 改为 b
git 命令设置别名,简化命令复杂度
找到根目录下的.gitconfig 文件,vi .gitconfig 修改文件配置。其中alias 是别名。可以做以下类似的设置:
通过下面方式设置全局配置
git config --global alias.st status
git config --global alias.ci commit
多账号操作
同时使用多个账号 push 不同仓库的内容,怎么保证账号不会交叉使用呢?(仓库A 使用A账号,仓库B使用B账号)
- 查看git的所有配置
git config --list
- 查看git的 单项配置
git config user.name
git config user.email
- 全局设置
git config --global user.name "A"
git config --global user.email 'Aemail"
这是全局设置,设置后所有的仓库提交都会使用这个账号,如果你只想在仓库A中使用A账号,你就不需要使用全局设置了。
- 非全局设置
git config user.name "A"
git config user.email "Aemail"