Git版本控制的基础命令
什么是Git
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目版本管理工具。
Git的使用
1. 设置
1.1 设置用户名和Email
下载完Git以后打开窗口做以下操作:
- git config --global user.name 'guoyh'
- git config --global user.email 'hua_network@sina.cn'
- #ps:增加--global则视为全局(类似整台电脑的用户)都可以使用这个git,没有则只适用于当前用户
1.2 设置编码
为了防止操作中出现乱码,可以设置以下编码。
Windows版:
- // 显示 status 编码
- git config --global core.quotepath false
- // 图形界面编码
- git config --global gui.encoding utf-8
- // 提交信息编码
- git config --global i18n.commit.encoding utf-8
- // 输出 log 编码
- git config --global i18n.logoutputencoding utf-8
- export LESSCHARSET=utf-8
Mac版:
- 打开配置文件
vi ~/.bash_profile
或vim ~/.zshrc
- 文件内添加如下代码(自己找个能记住的位置)
- export LC_ALL=en_US.UTF-8
- export LANG=en_US.UTF-8
- 重启终端,或输入
source ~/.bash_profile
或source ~/..zshrc
PS: 可能需要sudu
,例:sudo source ~/.bash_profile
2. 创建
2.1 初始化Git库
- git init
2.2 创建远程库
- git remote add origin git路径
- // 注:origin为远程库名个人可随意起名默认都用origin
2.3 拉取
- git pull '库名(origin)' '分支名'
3. 克隆
- git clone 远程库地址
4. 提交
- 提交到暂存区
- git add -A
- // -A 可以换成 “.” 作为全文件上传,也可以单独指定文件上传
- 提交到历史区(本地库)
- git commit -m "此处为上传说明"
- 推送文件至远程库
- git push '库名(origin)' '分支名'
5. 查看
- 查看当前状态
- git status
- 查看版本记录
- git log (全部提交记录 b:向上翻页 空格:向下翻页 q:退出)
- git log --pretty=oneline (简洁展示)
- git log --oneline (精简版)
- git reflog (精简版增加版本个数记录)
- 回退版本
- git reset --hard [哈希值]
- git reset --hard HEAD^ (往后退一步 几个^就代表退几步版本)
- git reset --hard HEAD~n(往后退n步版本)
哈希值
为查看版本记录中要回退的版本的logid
6. 比较
- 比较所有的文件
- git diff
- 本地与暂存区文件比较
- git diff [File]
- 本地与历史区(commit后的本地库)比较
- git diff HEAD [File]
File 是要比较的文件路径
7. 分支
查看分支:
- 查询当前有没有分支
- git branch -v
- 查询远程分支
- git branch -r
新建分支:
- 新建本地分支
- git branch [分支名]
- 或
- git checkout -b [分支名]
git checkout -b [分支名] 相当于git branch [分支名] 后 git checkout [分支名],
先创建,再切换
- 将本地分支推送到远程
- git push origin [本地分支名]:[远程分支名(随意起名,为方便管理,名称统一最好)]
删除分支:
- 删除本地分支
- /*第一步:先切换到其它分支*/
- git checkout [其它分支名]
- /*第二步:-D删除分支*/
- git branch -D [要删除的分支名]
- 删除远程分支
- /* 推送空分支到远程分支 */
- git push origin :[分支名]
- 或者
- git push origin --delete [分支名]
以上两种都可以删除远程分支
切换分支:
- git checkout [分支名]
合并分支:
- /* 首先要切换回主分支 */
- git checkout [主分支名]
- /* 合并分支 */
- git merge [被合并的分支名]
Stash的应用
日常开发中,我们正在写代码,突然线上遇到问题,我们就得切换回线上版本,But已经写了N行代码了,无法切换分支,这怎么办?stash的作用就来了。
第一步:
- /*
- 将代码add到暂存区,将写好的代码暂存起来。此时没有commit
- 然后执行下面命令:
- */
- git stash
- /* 如果想记录一下这条命令的说明则: */
- git stash save "此处可添加备注"
操作完以上命令后,我们就可以顺利的切换分支了。
第二步:
当我们如愿以偿的将bug修改完,操作完上线以后,想继续编写之前的N行代码,切换回之前的分支,怎么找回之前的代码呢?
如下:
- /* 应用最近一次的stash,虽后删除该记录 */
- git stash pop
修改完其它分支后回到之前的分支,继续编辑代码,有很多命令可以供选择,选择适合的就好。如下
拓展部分
拓展:
- /* 列出stash的所有记录 */
- git stash list
- /* 删除stash的所有记录 */
- git stash clear
- /* 删除最近的一次stash */
- git stash drop
- /* stash@{1}表示执行第几条stash */
- git stash apply stash@{1}