Git超详细用法,通俗易懂
创建本地仓库 和 远端共享仓库
- 直接下载安装包:Git下载地址
- 安装 git,查看 git 版本,git version
- 配置项目的 git 账号
- git config --global user.name "XXX"
- git config --global user.email "XXX@sina.com.cn"> >
- 查看是否配置成功 git config --list
- 生成并获取公私秘钥
- cd ~/.ssh
- ssh-keygen -t rsa -C "XXX@sina.com.cn"
- cat id_rsa.pub 读取公钥,存入 gitlab-->setting--> SSH Keys
- 在个人设置页面,左边选中SSH and GPG keys,在右边添加公钥,title是key的名称,可以随便取,可更改,key是上面我们获取到的公钥,填写完毕后点击add SSH key按钮,这样远端就添加到了密钥。

- 在个人设置页面,左边选中SSH and GPG keys,在右边添加公钥,title是key的名称,可以随便取,可更改,key是上面我们获取到的公钥,填写完毕后点击add SSH key按钮,这样远端就添加到了密钥。
- 克隆远端仓库至本地:ssh方式:这是一种相对安全的方式
- 获取所拉取项目的 ssh clone 地址
- cd 项目目录文件
- git clone ssh://git@XXXXXXX

http连接方式
- 这种方式要求project在创建的时候只能选择“Public”公开状态,Private和Internal私有模式下不能使用http方式进行连接。(ssh方式在三种模式下都可以),使用http方式直接连接gitlab显然没有ssh连接方式安全,但是也可以做些安全设置,比如在gitlab本机的iptables里做端口限制(如上是8081端口),添加白名单等。
- gitlab上创建的项目仓库,要注意该仓库下的members权限,如果某个gitlab用户没有设置在该仓库members权限下,则使用该gitlab用户进行git clone操作可以,但是进行git push则会失败!报错:
remote: GitLab: You are not allowed to push code to protected branches on this project.
mac 用户操作命令时报错:
- 错误信息:
Unhandled rejection Error: EACCES: permission denied, 表示没权限,sudo 一下
本地操作-最最最基本用法
| 操作 | 命令 |
|---|---|
| 查看分支 | git branch |
| 创建分支 | git branch |
| 切换分支 | git checkout |
| 创建+切换分支 | git checkout -b |
| 合并某分支到当前分支 | git merge |
| 删除分支 | git branch -d |
| 强制删除分支 | git branch -D |
| 添加文件至暂存区 | git add (可多次,可多个文件) |
| 提交暂存区文件 | git commit -m <提交信息> |
| 拉取远端至本地 | git pull |
| 推送本地至远端 | git push |
| 查看提交日志 | git log |
| 查看仓库当前的状态 | git status |
| 版本回退 | git reset --hard commit_id |
| 回退至上一版本 | git reset --hard HEAD^ |
| 工作现场“储藏” | git stash |
| 查看储藏列表 | git stash list |
| 恢复储藏区内容 | git stash apply(恢复后,stash内容并不删除,需用 git stash drop 来删除) |
| 恢复储藏区内容 | git stash pop(储藏应用并删除) |
| 恢复指定的stash | git stash list查看 git stash apply stash@{0} |
多人协作
- push之前,最好先pull一下,因为远程分支可能会有更新,需要先合并并解决冲突
- 如果git pull提示
no tracking information,则说明本地分支和远程分支没有创建关联,用命令git branch --set-upstream-to <branch-name> origin/<branch-name> - 查看远程库信息,使用git remote -v
- git 本地分支 track 远程分支
- 其实在从远程分支分出来的分支都是跟踪分支(track),当对该分支进行 push 和 pull 时,如果该分支和远程分支同名,git会知道推送到远程哪个分支,从哪个远程分支同步到本地分支。其实每次克隆一个仓库时,本地都会新建一个
master分支来track远程的origin/master。如果不同名,我们需要人为指定git push origin branch_name - 如果本地新建了一个分支 branch_name,但是在远程没有,这时候 push 和 pull 指令就无法确定该跟踪谁,一般来说我们都会使其跟踪远程同名分支,所以可以利用
git push --set-upstream origin branch_name,这样就可以自动在远程创建一个 branch_name 分支,然后本地分支会track该分支。后面再对该分支使用 push 和 pull 就自动同步。无需再指定分支。 - 跟踪远程分支:如果远程新建了一个分支,本地没有该分支,可以利用
git checkout --track origin/branch_name,这时本地会新建一个分支名叫 branch_name ,会自动跟踪远程的同名分支 branch_name。
- 其实在从远程分支分出来的分支都是跟踪分支(track),当对该分支进行 push 和 pull 时,如果该分支和远程分支同名,git会知道推送到远程哪个分支,从哪个远程分支同步到本地分支。其实每次克隆一个仓库时,本地都会新建一个
总结
- 利用 git push --set-upstream origin branch_name 来在远程创建一个与本地branch_name 分支同名的分支并跟踪;
- 利用 git checkout --track orgin/branch_name 来在本地创建一个与远端branch_name 分支同名的分支并跟踪。
git忽略某些文件(文件夹)提交
开发过程中有些缓存文件不想提交,但是git已经维护项目了,这时候使用.gitignore文件忽略也是没有意义的,并不会起作用,可以使用如下方法忽略文件或文件夹提交:
- 忽略单个文件:git update-index --assume-unchanged /path/file
- 恢复跟踪: git update-index --no-assume-unchanged /path/file
回复跟踪使用场景:在拉取代码或者切换分支时,提示有改变未被提交或stash,但是使用git status查看 提示并没有文件更新,git stash 提示 git stash No local changes to save,这时建议查看一下git提示的有问题的文件,设置了忽略,用以上命令来恢复跟踪
Git超详细用法,通俗易懂的更多相关文章
- git超详细教程
GitHub操作总结 : 总结看不明白就看下面的详细讲解. GitHub操作流程 : 第一次提交 : 方案一 : 本地创建项目根目录, 然后与远程GitHub关联, 之后的操作一样; -- 初始化Gi ...
- git超详细教程【转】
转自:http://blog.csdn.net/liuwengai/article/details/52072344 GitHub操作总结 : 总结看不明白就看下面的详细讲解. GitHub操作流 ...
- git超详细教程留着当手册
GitHub操作流程 : 第一次提交 : 方案一 : 本地创建项目根目录, 然后与远程GitHub关联, 之后的操作一样; -- 初始化Git仓库 :git init ; -- 提交改变到缓存 :gi ...
- python beautiful soup库的超详细用法
原文地址https://blog.csdn.net/love666666shen/article/details/77512353 参考文章https://cuiqingcai.com/1319.ht ...
- Django的ListView超详细用法(含分页paginate功能)
开发环境: python 3.6 django 1.11 场景一 经常有从数据库中获取一批数据,然后在前端以列表的形式展现,比如:获取到所有的用户,然后在用户列表页面展示. 解决方案 常规写法是,我们 ...
- GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
最近听同事说他都在使用GitHub,GitHub是程序员的社区,在里面可以学到很多书上学不到的东西,所以最近在准备入手这方面的知识去尝试学习,正好碰到这么详细完整的文章,就转载了,希望对自己和大家有帮 ...
- 【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
GitHub操作总结 : 总结看不明白就看下面的详细讲解. . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details ...
- 转帖: 一份超全超详细的 ADB 用法大全
增加一句 连接 网易mumu模拟器的方法 adb connect 127.0.0.1:7555 一份超全超详细的 ADB 用法大全 2016年08月28日 10:49:41 阅读数:35890 原文 ...
- (超详细)使用git命令行将本地仓库代码上传到github或gitlab远程仓库
(超详细)使用git命令行将本地仓库代码上传到github或gitlab远程仓库 本地创建了一个 xcode 工程项目,现通过 命令行 将该项目上传到 github 或者 gitlab 远程仓库,具体 ...
随机推荐
- java实现第四届蓝桥杯带分数
带分数 题目描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714 还可以表示为:100 = 82 + 3546 / 197 注意特征:带分数中,数字1~9分别出现且只出现一 ...
- Linux 服务管理-服务分类
Linux中的服务根据安装方法的不同可以分为RPM包默认安装的服务和源码包安装的服务,而RPM包安装的服务又依据启动和自启动的不同分为独立服务和基于xinetd服务. 查看已经安装的服务 查看所有RP ...
- el-upload配合vue-cropper实现上传图片前裁剪
需求背景 上传一个封面图,在上传之前需要对图片进行裁剪,上传裁剪之后的图片,类似微信的上传头像. 技术方案 上传肯定是用element的 el-upload 组件实现上传,非常方便,各种钩子函数. 裁 ...
- css布局相关:涉及到常见页面样式难点
一.display:table用法 Table:display:tableBody:table-row-group;Tr: table-row;Td: table-cell https://www.c ...
- abp-CMS模块-广告
无论是开发app还是网站,可能都需要一个广告功能,比如我们常见的在首页有个轮播广告,里面会轮播显示多个图片.还有比如一个新闻门户网站 很常见的 banner横幅广告,还有js特效广告等.本篇说说在ab ...
- <VCC笔记> 溢出与unchecked
在程序运算或者数据转换的时候,由于各种数据类型有各自的范围,运算的时候,其结果如果超出这个范围,就被称之为溢出.熟悉C#的同志们应该了解用来解决溢出(Overflow)问题的checked,unche ...
- 不知道这些,你以为你还能devops?
一.什么是devops 在DevOps之前,从业人员使用瀑布模型或敏捷开发模型进行软件项目开发:瀑布模型或顺序模型是软件开发生命周期(SDLC)中的一种开创性方法,在这个模型中,软件开发成为一个线性过 ...
- mysql explain的extra
导读 extra主要有是那种情况:Using index.Using filesort.Using temporary.Using where Using where无需多说,就是使用了where筛选 ...
- frp多层socks代理+端口映射
一.首先在公网上配置服务端(frps.ini) [common] bind_addr = xx.xx.xx.xx #公网vps的ip bind_port = 7000 二.配置客户端frpc. i ...
- Python编程快速上手 让繁琐工作自动化 - 专业程序员的养成完整版PDF免费下载_百度云盘
Python编程快速上手 让繁琐工作自动化 - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:7qm4 有关本书 累计销售超过10万册 零基础编程者的不二之选 基于Python3编写 通用 ...