Git常用命令
1.安装配置
$ sudo apt-get install git
$ git config --global user.name "Your Name"
$ git config --global user.email "youremail@example.com"
2.本地仓库管理
创建仓库、提交暂存区、提交本地仓库
$ git init
$ git add 文件名
# 或者全部选择
$git add .
git commit -m "代码修改说明"
查看记录
$ git log
# 显示单行记录
$ git log --graph --pretty=oneline
# 查看所有的历史版本:(以便确定要回到未来的某个版本)
$ git reflog
查看工作区状态
$ git status
查看文件修改记录
$ git diff 文件名
版本回退
# 回到指定版本(包括未来版本)
$ git reset --hard <commit版本号>
# 回退到上个版本
$ git reset --hard HEAD^
# 回退到上上个版本
$ git reset --hard HEAD^^
# 往上10个版本
$ git reset --hard HEAD~10
- 选项说明:
- –hard 重置: 本地仓库HEAD指针、暂存区、工作区
- –mixed 重置: 本地仓库HEAD指针、暂存区 【默认值】
- –soft 重置: 本地仓库HEAD指针
撤销修改–撤销工作区和暂存区修改
- 场景1: 改乱了工作区的代码,想撤销工作区的代码修改
# 撤销指定文件的修改
$ git checkout -- <file>
# 撤销当前目录下所有修改
$ git checkout -- .
- 场景2: 改乱了工作区某个文件,并且还提交到了暂存区,同时撤销工作区和暂存区修改:
方法1:
# 撤销暂存区指定文件的修改
$ git reset HEAD <file>
# 撤销暂存区所有修改
$ git reset HEAD
# 撤销工作区修改
$ git checkout -- .
方法2:
$ git reset --hard HEAD^
3.分支管理
创建分支
# 创建分支 (开发分支)
$ git branch dev
# 切换分支
$ git checkout dev
创建并且切换分支
$ git checkout -b dev
查看分支
$ git branch
合并当前分支到某个分支
$ git merge dev
删除分支
# 删除一个已合并的分支,注意,无法删除当前所在的分支,需要切换到其它分支,才能删除
$ git branch -d 分支名
# 如果分支还没有被合并,删除分支将会丢失修改。如果要强行删除,需要使用如下命令:
$ git branch -D 分支名
4.临时保存工作现场
- bug分支:当你接到修复一个bug任务的时候,可以创建一个bug临时分支(例如:issue01)来修复它,修改完成再把该分支删除掉
- 问题:当前正在dev上进行的工作还没有提交, 工作只进行到一半,还没法提交,但如果不提交就切换到其它分支工作,代码会丢失,怎么办呢?
- **使用工作状态保存栈:**Git版本库中有一个 Stash 临时状态保存栈, 可以使用它来保存当前工作现场,把当前工作现场保存起来,等完成了其它紧急工作,再回来恢复工作现场,继续接着工作
工作状态保存栈使用:
保存当前工作现场
$ git stash
查看有哪些临时现场
$ git stash list 输出结果: stash@{0}: WIP on dev: 6224937 add merge
恢复某个临时现场
$ git stash apply stash@{0}
恢复最近保存的工作现场
$ git stash pop
清空工作状态保存栈
$ git stash clear
5.远程仓库管理
秘钥生成和添加
$ ssh-keygen -t rsa -C youremail@example.com
$ cat ~/.ssh/id_rsa.pub
# 复制公钥内容
# 测试连接
$ ssh -T git@github.com
上传本地项目到服务器
# 远程地址新建仓库后
$ git remote add origin 项目地址
$ git push -u origin master
- 如果提示:fatal: 远程 origin 已经存在, 则只需使用以下命令将远程配置删除,重新添加即可:
$ git remote rm origin
推送分支
将当前分支推送到远程仓库(origin)的某个分支
$ git push origin f1
拉取分支
- 拉取本地不存在的分支
# 查看远程分支
$ git remote show origin
# 更新分支为已跟踪
$ git remote update
# 从远程仓库拉取f1到本地,创建并切换到本地分支f1
$ git checkout -b f1 origin/f1
- 拉取的分支本地存在,且未建立关联
# 先设置关联
$ git branch --set-upstream-to=origin/远程分支名 本地分支名
# 再拉取
$ git pull
6.忽略特殊文件
$ mkdir .gitignore
$ vim .gitignore
- 示例文件:
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
# My configurations:
db.ini