Git 工具总结
初操作---设置用户名
- git config --global user.name "any name" //设置全局project的用户名
- git config --global user.email "any email" //设置全局project的邮箱
- git config --global --list //查看当前用户的全局配置 用户名和邮箱
- 在VS Code中每次更新代码都会要输入账号密码,方便起见,可以配置一下让 git 记住密码账号。
- git config --global credential.helper store
建立远程仓库链接
- 如果是从服务器 clone 下来的代码,会自动配置一个叫 origin 的远程仓库链接
- git remote -v // 查看配置的远程仓库链接
- git remote add <远程仓库名> <远程仓库url> //添加远程库链接
- git remote rm <远程仓库名> //移除远程仓库
- git remote rename <oldname> <new name> //远程仓库重命名
提交代码过程
- 提交之前,需要 pull 一下,然后处理冲突
- git add -A //添加所有文件,也可以只提交更改的文件 git add .
- git add . //添加更改的文件
- git commit -m "描述代码信息"
- git push -u <远程库的名称> <远程库的分支> // -u 表示指定<当前远程库> 为默认远程仓库,以后就直接push,不用带参数
- 如果你确定远程仓库的分支上那些代码都不需要了,那么直接 push 后面加一个 -f ,强行让本地分支覆盖远程分支
- git push <远程仓库名> <远程库的分支> -f
提交代码出现冲突
- git push 会出问题,应该先pull 一下,但是 pull 的时候又可能会出现分支冲突,
- 这时可能由于版本问题会报错,可能遇到 refusing to merge unrelated histories 这个提示是因为两个仓库不同,发现 refusing to merge unrelated histories,无法 pull。
- 要把两个不同的项目合并,git 需要添加一句代码 ,这句代码是在 git 2.9.2 版本发生的,最新的版本需要添加 –allow-unrelated-histories。查看git 版本,git --version
- 假如我们的远程仓库是 origin,分支是 master,那么我们 需要这样写 git pull origin master --allow-unrelated-histories
- 然后再 git push -u <远程库的名称> <远程库的分支>
拉取代码出现冲突
- git pull 时本地文件和远程服务器文件冲突,出错信息如下:
- error: Your local changes to 'contextTempl.java' would be overwritten by merge. Aborting.
- Please, commit your changes or stash them before you can merge.
- 解释:这个意思是说更新下来的内容和本地修改的内容有冲突,先提交你的改变或者先将本地修改暂时存储起来。
- 在 VS Code 中,错误提示是:在签出前 请清理存储库工作树
- 在这种情况下,您可以将更改隐藏起来,然后执行git pull,然后解压缩;
- git stash //先将本地修改存储起来
- git pull //拉取远程
- git stash pop //还原暂存内容
代码克隆所有分支
git clone 只能 clone 远程库的 master 分支,无法 clone 所有分支,解决方法去下:
- git clone http://xxx.xxx.com/project/.git ,这样在git_work目录下得到一个project子目录
- cd project
- git branch -a,列出所有分支名称如下:remotes/origin/dev remotes/origin/release
- git checkout -b origin/dev dev,作用是 checkout 远程的 dev 分支,在本地起名为 dev 分支,并切换到本地的 dev 分支
- git checkout -b origin/release release,作用参见上一步解释
- git checkout dev,切换回 dev 分支,并开始开发。
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
指令简写
-d --delete:删除
-D --delete --force的快捷键
-f --force:强制
-m --move:移动或重命名
-M --move --force的快捷键
-r --remote:远程
-a --all:所有
git fetch 和 git pull 的区别
- git fetch <远程主机名> <分支名>
- 最常见的命令如取回 origin 主机的 master 分支:
- git fetch origin master ,从远程主机的master分支拉取最新内容
- git merge FETCH_HEAD , 将拉取下来的最新内容合并到当前所在的分支中
- git pull <远程主机名> <远程分支名>:<本地分支名>
- git pull origin master , 如果远程分支是与当前分支合并,则冒号后面的部分可以省略
git 撤销操作、恢复文件
- 如果误删了某文件,需要 git status 先看下工作区是否 commit 过,如果没有 commit ,可以看到删除的文件名及路径,是红色的
- 直接从工作区拿删除的文件 git checkout -- <path + file>
- 如果已经commit 了,那么git status 看到的删除的文件及路径是绿色的,这时checkout 已经没用了
- 可以把暂存区的修改撤销掉(unstage),git reset HEAD <path + file>,重新放回工作区,然后 git checkout -- <path + file> 取回
git 版本回退
远程分支回退有三种方法:
- 自己的分支回滚直接用 reset
- 公共分支回滚用 revert
- 错的太远了直接将代码全部删掉,用正确代码替代
本地分支版本回退:
- 先找到要回退的版本的 commit id ,git reflog
- 可以根据commit id ,查看先前版本的信息,git log <commit id> 或者 git show <commit id>,退出git log 状态,英文状态下按q
- 回退版本 git reset --hard <commit id>
自己的远程分支版本退回:
如果你的错误提交已经推送到自己的远程分支了,那么就需要回滚远程分支了。
- git reflog
- git reset --hard <commit id>
- 然后强制推送到远程分支,git push -f
- 本地分支回滚后,版本将落后远程分支,必须使用强制推送覆盖远程分支,否则无法推送到远程分支
公共远程分支回退:
回滚公共远程分支和回滚自己的远程分支是有区别的,如果你回退公共远程分支,把别人的提交给丢掉了怎么办?
Git 工具总结的更多相关文章
- 【转】第 02 天:在 Windows 平台必裝的三套 Git 工具
原文网址:https://github.com/doggy8088/Learn-Git-in-30-days/blob/master/docs/02%20%E5%9C%A8%20Windows%20% ...
- windows中使用Git工具连接GitHub(配置篇)
Git在源码管理领域目前占很大的比重了,而且开源的项目很多都转到GitHub上面了.例如:jQuery, reddit, Sparkle, curl, Ruby on Rails, node.js, ...
- Git详解之六 Git工具(转)
Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力. 接下来你 ...
- Git详解之六:Git工具
Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力.(伯乐在线 ...
- 使用git工具将项目上传到github
注册github账号 https://github.com/ 安装git工具: https://git-for-windows.github.io/ 上面的准备工作完成后,现在开始操作. 一.进入gi ...
- Git工具的使用教程
Git 是一种版本控制工具,也叫作版本管理软件(分布式管理软件).这里介绍Git的基本使用步骤,关于 Git 更详细的介绍,读者可以参考其官方网站提供的文档. 1 安装Git 在Ubuntu系统中安 ...
- 使用git工具快速push项目到github(精简)
Dear Weber ,相信有很多刚开始接触前端的程序猿,在刚接触到git工具传项目到github上时会遇到一些问题,那么下面的话呢,我就整理一下一个大致的思路提供给大家参考: 工具:git (自行下 ...
- 代码管理工具:使用github和git工具管理自己的代码
一.git工具和账户创建 1.1 安装 Git 是 Linus Torvalds 最近实现的源代码管理软件."Git 是一个快速.可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系 ...
- 使用git工具上传自己的程序到github上
一:前期准备 可以运行的项目 github账号 git工具 二:开始操作 1.创建个人github仓库 写自己项目的名字,描述,权限,README 2.新建结束后会进入如下界面 3.复制仓库地址 4. ...
- Git工具使用
GIT(分布式版本控制系统) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git的读音为/gɪt/. Git是一个开源的分布式版本控制系统,可以有效.高速的处理从 ...
随机推荐
- extjs 中比较常见且好用的监听事件
ComboBox listeners:{ expand:function(){ //此函数是,点击下拉框展开的时候事件 }, select:function(com, record, index){ ...
- Golang 入门 : 打造开发环境
工欲善其事,必先利其器!在学习和使用 Golang 时如果有一款得心应手的 IDE,相信一定可以事半功倍.虽然很多 IDE 都提供了对 Golang 的支持,但真正好用的没几个.VSCode 算是不错 ...
- Idea中最最常见的快捷键
掌握如下快捷键,基本就够用了.没必要记那么多. Ø 命令:Ctrl+Shift+A可以查找所有Intellij的命令,并且每个命令后面还有其快捷键.所以它不仅是一大神键,也是查找学习快捷键的工具. ...
- CSS3 animation 与JQ animate()的区别
CSS3 与 JQ 根本区别 css3 animation与jQuery animate()区别在于实现机制不同 C3和JQ 完成动画的优缺点 1.css3中的过渡和animation动画都是基于cs ...
- MySQL-悲观锁和乐观锁
引言 悲观锁和乐观锁指的并不是一种锁,而是一种思想,一种并发控制的方法. 在事务并发执行的情景中,可能存在多个用户同时更新同一条数据的情况,这可能会产生冲突导致丢失更新或者脏读. 丢失更新是指一个事 ...
- 深度学习识别CIFAR10:pytorch训练LeNet、AlexNet、VGG19实现及比较(一)
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 前面几篇文章介绍了MINIST,对这种简单图片的识别,LeNet-5可以达到99%的识别率. CIFA ...
- CRM公海自动回收规则
企微云CRM操作指南 – 道一云|企微https://wbg.do1.com.cn/xueyuan/2568.html 销售云 - 美洽 - 连接客户,亲密无间https://meiqia.com/s ...
- Nginx 在线新增模块
系统:Centos7.5 Nginx版本:1.12.2 今天给项目添加ssl证书时,发现nginx 竟然不支持ssl,经过查看,询问相关人员发现nginx编译的时候没有任何模块(历史原因).哎.... ...
- 原生js,从面向过程的方法到面向对象的方法,写个选项卡练练手
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Centos7 IPv6 Route And Dhcpv6 Server(借鉴补充)
软件:radvd.dhcp 1)启用ipv6 vi /etc/sysctl.conf net.ipv6.conf.all.disable_ipv6 = 0net.ipv6.conf.default.d ...