git介绍
本文仅对git使用做基础介绍与流程讲解,关于环境配置问题可参考Git 中文详细安装教程
git是分布式版本控制系统,主要是为了进行对版本的合并,回滚,更新,对比等等操作。无论是github,还是gitlab都是基于git服务的。
在线可视化学习git网站-Learn Git Branching
Learn Git Branching 过关总结
git 初始化
1.通过 git clone构建链接
当我们在github/gitlab上创建一个仓库后,可以通过clone到本地,生成的文件自动包含.git文件夹。即不需要再输入git init 和 git remote add 。
git clone 远端仓库地址
2.本地初始化
git init (初始化git)
git remote add origin "http://代码地址" (添加远端地址,建立连接)
git 工作区
- 远程仓库 – 远端代码托管平台(github,gitlab,码云之类)
- 本地仓库 – 本地文件
- 缓存区 – 本地git仓库中的.git文件夹
- 工作区间 – 正在编写的文件
git 提交
git add .
- 添加所有改动至暂存区,其中 . 表示所有文件
- git add /test 来添加test文件下的改动到暂存区
git add -p
-p (或 —patch) 允许以交互的形式选择每个跟踪文件中要提交的部分。这样每次提交仅包含相关的更改。
git commit -m “1111”
- 提交代码时的说明本次的改动内容,方便以后代码的回滚
- 如果提交时忘记-m的参数会进入到git vim界面,你可以在这里面输入提交信息
- 退出vim的方式:
- 1.按下i键切换到输入模式
2.按ESC退出输入模式
3.如果有输入法,切换至英文状态,直接输入冒号 “:”
4.此时编辑器最底端可以输入命令了,输入wq,w(write) q(quit),然后回车保存并退出vim
- 每次commit将会创建一个节点
git push origin master
- 其中origin是默认的远端仓库[也可以写远端仓库完整的仓库名],
- master是分支名
- 如果本地也处在master分支,可以使用简写git push
- 默认情况下,只能提交到与本地所在分支同名的远端分支
- 本地dev,提交到远端dev, git push origin dev
- 本地master,提交到远端dev, git push origin master:dev
git 拉取
- 一般拉取代码直接使用git pull (相当于从远端仓库直接拉到工作区间)
- git reset 撤销commit 提交,因为commit 会创建节点,所以实际是把
git 冲突
- Stash方式
- 拉取代码前
git stash
,把本地变更代码存进缓存区 git pull
拉取git stash pop
释放本地代码,解决冲突
该种方式不会产生新的提交节点
- Pull方式
git add .
git cmmit -m “…”
git pull
解决冲突,合并代码
JetBrains家编辑器均有可视化git合并工具,非常方便
常用git命令
分支
创建远端分支
git push origin <远程分支名>:<本地分支名>
git push --set-upstream origin <远程分支名>
删除远端分支
git branch -d -r <远端分支名>
git push origin :<远端分支名>推送一个空分支到远端分支,相当于删除远程分支
本地重命名分支
git branch -m old-name new-name
如果修改的是所在分支可以简写
git branch -m new-name
提交
修改最近的提交
git commit --amend
—-amend 允许你把阶段性更改(例如添加被遗忘的文件)附加到上一次提交。添加 --no-edit 将会修改最后的提交但不更改它的提交消息。如果没有更改,–amend 将允许你重新输入最后的提交消息。
从上一次提交中删除文件
git rm —-cached <file-to-remove>
git commit —-amend
删除
本地删除远端仓库文件夹
可以直接在github上直接删除文件
以删除.idea为例
git rm -r --cached .idea. // 删除的是缓存
git commit -m "[fix] delete /"
git push (-u) origin master
撤回
- 撤回commit
git reset HEAD
- 撤回add
git rm --cached [filename]