笔者深受git的苦,之前提交代码因为使用idea的原因git一直出现问题,切换分支导致缺类什么的问题数不胜数。在备受摧残之后选择以后都使用git命令行的方式来使用git,整理了git命令的一些方法,当然最简单的方法还是git --help
环境配置
首先需要知道的是,git的配置文件都是在~/.gitconfig
中,也就是说你保存的配置都会存在这个文件里。
获取git仓库通常有两个方式
- 在本地初始化一个git仓库
git init
- 初始化后会在当前目录中看到.git文件夹(为隐藏)
- 此.git文件是一个版本库,其中存储了配置信息、日志信息和文件版本信息
- 包含.git的目录就是工作目录,主要用于存放开发的代码
- .git中的index文件是暂存区(stage),暂存区是一个临时保存修改文件的地方
- 从远程仓库克隆
git clone
在安装git之后,设置用户名以及email,git每次提交都会附带这俩信息
#设置用户信息
git config --global user.name “$name”
git config --global user.email “$email”
#查看配置信息
git config --list
git config user.name
git工作概念
本地仓库
工作区通过git add
添加到暂存区,之后通过git commit
提交改变到版本库
同时,git工作目录下文件的两种状态
- untracked未跟踪(没用版本控制)
- tracked已跟踪(纳入版本控制)
- Unmodified 未修改状态
- Modified 已修改状态
- Staged 已暂存状态
文件状态会随着执行git的命令发生变化
- 查看文件状态
git status
也可以后面加 -s 使输出信息更加简洁
- 将未跟踪的文件加入暂存区
git add
后面跟文件名称,带后缀,将新创建的文件加入暂存区后查看文件状态可发现新增
在idea的表现就是类是绿色
idea当你添加类的时候会自动将文件加入暂存区中
- 将暂存区的文件取消
git reset
没有在暂存区的文件表现是红色
- 将暂存区的文件提交修改到本地仓库
git commit
没啥好说的,就是提交到本地仓库,如果不pull就还有一切可能,如果pull了就寄了
- 删除文件
git rm
工作区的文件删了就删了,删除之后也是需要提交到本地仓库才算是一个git的流程
- 忽略列表
有时候我们需要有一些文件无需纳入Git的管理,也不希望他们出现在未跟踪文件列表,一般这些都是自动生成的日志文件,编译过程中的临时文件等,此时可以在工作目录中创建一个.gitignore的文件,里面可以存放这些忽略的文件名
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf
- 查看日志记录
git log
没啥好说的,挑实习生毛病的利器
远程仓库
- 查看已经配置的远程仓库服务器
git remote
他会列出指定的每一个远程服务器的简写,如果已经克隆了远程仓库那么就能看到origin,这是默认名字
- 添加远程仓库
git remote add <shortname> <url>
添加一个新的远程 Git 仓库,同时指定一个可以引用的简写
- 克隆代码
git clone
你什么git语句都可以不会,但是唯独不能不会这个
- 移除无效的远程仓库
git remote rm
移除远程仓库的记录,但是不会真正影响到远程仓库
- 从远程仓库中抓取和拉取
git fetch
是从远程仓库获取最新版本到本地仓库,不会自动merge
git pull
是从远程仓库获取最新版本并merge到本地仓库
- 推送到远程仓库
git push [remote-name] [branch-name]
git分支管理
所有的版本控制工具都需要一个很重要的东西:分支
使用分支把你的工作从开发主线上剥离,到最后要上线的时候直接合并,不影响别人开发的同时也可以查看别人的开发进度,协同工作
- 查看分支
git branch
列出所有本地分支
git branch -r
列出所有远程分支
git branch -a
列出所有本地和远程分支
- 创建分支
git branch $name
- 切换分支
git chechout $name
- 推送至远程仓库分支
git push $origin $master
- 合并分支
git merge $name
- 删除分支
git branch -d 分支的名称