git 是最常用的版本控制工具
基本命令
git init
git init 初始化本地仓库
git status
git status 查看 git 状态
git add
git add filename 向本地仓库增加一个修改项。添加到文件树目录中
取消 add 操作 使用 git rm --cache
git commit
向远程数据库提交修改 some_message 为必填项
git commit -m "some_message"
远程仓库
git remote 添加远程仓库 命名为 origin
git remote add origin
clone 复制远程仓库
git clone
git push
将 commit 提交到 origin 仓库的 master 分支
git push -u origin "master"
或者直接 git push
git pull
git pull 从远程数据库拉取更新
git pull
例如
git pull 或者 git pull origin master
git pull 是 git fetch 和 git merge 两种步合并
git fetch 会拉取服务器到本地,建立一个匿名分支
git merge 将这个匿名分支,合并到本地的 master
git log
git log 查看日志
git log --oneline 以文本形式在一行中显示提交的信息
放弃修改
通过 git status 获得提示
如果是修改了本地文件,并没有 add 到本地仓库
那么可以使用 git restore 还原到更改之前
如果使用了 add 到了本地仓库
可以使用 git restore--staged 取消保存到本地仓库的操作
如果是使用了 commit
可以通过 git revert HEAD 撤销本次操作。会有一个编辑窗体要求输入日志
如果需要撤销多次,可以通过 git revert HEAD~[数字] 撤销更多操作,下标从 0 开始 (HEAD 相当于 HEAD~0)
如果是提交错了分支
可以通过 git cherry-pick 将提交拿到新的分支来
例如 git cherry-pick 8397cf0
删除掉原来的提交 git
git revert HEAD
分支详解
master 分支
用来合并的主分支
topic 分支
用来做开发的分支,除了 merge 分支之外的其他都属于 topic 分支
HEAD 标签
HEAD 标签用来指向当前分支最后一次更新的位置
HEAD ~(tilde) 和 ^(caret) 就可以指定某个提交位置
chekout 切换分支
git checkout HEAD~1 切换到当前分支的前一个提交位置
merge 和 rebase 合并分支
merge 就是合并,两条路汇聚到一起
rebase 就是重定向,将分支的路直接接到主路后面
merge 的冲突在修改之后,commit 就行了
rebase 的冲突在手动处理完之后
rebase --continue 提交修改
rebase --abort 取消 rebase
branch 建立分支
git branch branch-name
中间加入 -d 作为删除分支
git branch -d branch-name
git branch 显示所有分支
带 * 标识的是当前分支
常用分支名称
主分支 master
研发分支 develop
紧急修复 hotfix
发布 release
功能 feature
标签
git 有两种不同的标签
轻标签和注解标签
注解标签有三个属性:名称、注解和签名
轻标签只有一个名称属性
因此轻标签只是暂时一次性使用
打标签
git tag 打上轻标签
git tag -a 打上注解标签
git tag -am 快速打上注解标签
查看所有标签
git tag
git tag -n 显示注解
删除标签
git tag -d
删除指定的标签
改写提交
amend 修改
修改最近一次的提交注解,或者补充提交档案
补充提交
revert 取消
revert 取消指定的提交内容
不能随便删除已经发布的提交
git revert HEAD 取消本地提交
reset 丢弃提交
有三种不同的方式
hard 会修改本地文件和本地数据库
mixed 会修改本地,不去修改数据库
soft 本地文件目录和元数据目录都不修改
cherry-pick 提取别的分支的提交到本地分支
主要是用于将弄错的分支移交到正确的地方
rebase i
改写、替换、删除、或者合并提交
merge squash
在合并分支时,将分支的内容合并成一个修改,添加到分支
例如
git merge --squash
常见错误
src refspec master does not
没有 add 没有 commit 不能提交
冲突
在 git push 出现
![rejected]
error : failed to push some refs to
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This usually caused by another respository pushing
hint: to same ref. You may want to first integrate the remote changes
hint:(e.g. , 'git pull ...') before pushing again
存在冲突,需要先处理冲突
先 pull 下来看看
git log 无法退出
可以输入 q 推出
--学无止境,爱拼才会赢
标签:HEAD,git,本地,标签,提交,常用命令,分支 From: https://www.cnblogs.com/xinloverong/p/16801759.html