GIT命令总结,so easy
一:GIT命令实战(码云)
https://oschina.gitee.io/learn-git-branching/
提交
git commit
创建分支
git branch <name>
切换分支
git checkout <name>
合并分支
git merge <name>
git rebase <name>
分离HEAD
git checkout <某个具体的提交记录>
相对引用(^)
git checkout HEAD^
git checkout HEAD~<num>
强制修改分支位置
git branch -f <name>(eg:master) HEAD...(当前位置的父级个数)
撤销变更
(local)
git reset HEAD^
(push)
git revert HEAD
整理提交记录
git cherry-pick ~ ~(某个提交记录,可单个可范围)
git rebase -i HEAD~..(开始处理位置)
提交一个记录的方法:移动到上一个记录,使用上述代码提交单个记录
下载仓库
git clone
o(orign)/master
git checkout o/master
更新下载(单纯下载,不更新本地仓库)
git fetch
正常更新
git pull /= git fetch + git merge
二:GIT基础(廖雪峰网站)
https://www.liaoxuefeng.com/wiki/896043488029600
- 在Linux上安装Git
$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
- 设置用户名和邮箱
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
- 创建版本库
$ mkdir learngit
$ cd learngit
$ pwd #显示当前目录
/Users/michael/learngit
- 初始化仓库
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
- 把文件添加到仓库
$ git add readme.txt
- 把文件提交到仓库
$ git commit -m "wrote a readme file" #-m后面输入的是本次提交的说明
[master (root-commit) eaadf4e] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
- 命令git结果
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
- 查看修改内容
$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
Git is free software.
- 历史记录
$ git log --pretty=oneline
1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append GPL
e475afc93c209a690c39c13a46716e8fa000c366 add distributed
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file
- 版本回退
$ git reset --hard HEAD^
HEAD is now at e475afc add distributed
- 回到未来
$ git reset --hard 1094a #git reset --hard commit_id
HEAD is now at 83b0afe append GPL
- 查询每一次命令,寻找哈斯值
$ git reflog
e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
e475afc HEAD@{3}: commit: add distributed
eaadf4e HEAD@{4}: commit (initial): wrote a readme file
修改过程
第一次修改 -> git add -> 第二次修改 -> git add -> git commit
- 丢弃工作区的修改(1)/删错了
$ git checkout -- readme.txt #git checkout -- file
16.丢弃工作区的修改(2)
$ git reset HEAD readme.txt #git reset HEAD <file>
Unstaged changes after reset:
M readme.
- 从版本库中删除该文件
# 命令git rm删掉,并且git commit
$ git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
[master d46f35e] remove test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
- 添加远程库
$ git remote add origin
$ git@server-name:path/repo-name.git
git remote add origin git@server-name:path/repo-name.git
- 内容推送
$ git push -u origin master #第一次
$ git push origin master
- 命令克隆库
git clone
#Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快
- 分支
# 查看分支:
$ git branch
# 创建分支:
$ git branch <name>
# 切换分支:
$ git checkout <name>
$ git switch <name>
# 创建+切换分支:
$ git checkout -b <name>
$ git switch -c <name>
# 合并某分支到当前分支:git merge <name>
# 删除分支:
$ git branch -d <name>
解决冲突
首先解决冲突。解决冲突后,再提交,合并完成。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交.
git log --graph #图形化
- 分支管理策略
$ git merge --no-ff -m "merge with no-ff" dev #--no-ff参数,表示禁用Fast forward
Merge made by the 'recursive' strategy.
readme.txt | 1 +
1 file changed, 1 insertion(+)
- “储藏”功能
$ git stash
$ git stash pop #回到工作现场
- 在master分支上修复的bug,想要合并到当前分支
$ git cherry-pick <commit>
- 强行删除分支
git branch -D <name>
- 查看远程库的信息
$ git remote # -v显示更详细的信息
- 从本地推送分支
$ git push origin branch-name
# 推送失败,先用git pull抓取远程的新提交
- 在本地创建和远程分支对应的分支
$ git checkout -b branch-name origin/branch-name
# 本地和远程分支的名称最好一致
- 建立本地分支和远程分支的关联
$ git branch --set-upstream branch-name origin/branch-name
- 从远程抓取分支
$ git pull
- rebase操作
$ git rebase # -i 图形操作
# 把本地未push的分叉提交历史整理成直线
- 创建标签
$ git tag <tagname>
# 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
$ git tag -a <tagname> -m "blablabla..."
# 可以指定标签信息;
$ git tag
# 查看所有标签
- 操作标签
$ git push origin <tagname>
#推送一个本地标签;
$ git push origin --tags
#推送全部未推送过的本地标签;
$ git tag -d <tagname>
#删除一个本地标签;
$ git push origin :refs/tags/<tagname>
#删除一个远程标签
常用命令行(push码云)
第一步:建立并初始化本地的仓库
git init
第二步:添加所有文件到仓库中
git add
或者可以使用git add
你想要添加的文件
第三步:将添加的文件提交到仓库中
git commit -m '备注'
第四步:上传之前要进行pull,将码云上的文件拉下来
git pull origin master
第五步:上传代码到码云仓库
git push -u origin master
原文地址:https://www.cnblogs.com/feng2019/p/12004751.html
- 近期一枚“大文娱”dawenyu.com域名以小六位价格易主
- 分布式监控系统Zabbix-3.0.3-完整安装记录(0)
- URL安全的Base64编码
- 温故而知新:设计模式之原型模式(Prototype)
- Windows 7上执行Cake 报错原因是Powershell 版本问题
- 温故而知新:类索引器
- Visual Studio Code 代理设置
- 温故而知新:设计模式之工厂模式(Factory)
- 通过Jexus 部署 dotnetcore版本MusicStore 示例程序
- jquery.mobile手机网页简要
- 跟张志东深聊腾讯的“进化力”
- 详解微信小程序如何实现流程进度功能
- silverlight:如何在图片上挖个洞?
- .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Git使用总结
- Sqlilabs通关笔记(一)
- nodejs可读流源码分析
- Sqlilabs通关笔记(二)
- Sqlilabs通关笔记(四)
- Sqlilabs通关笔记(五)
- 如何证明sleep不释放锁,而wait释放锁?
- 如何将SAP Document Builder的word控件设置成只读模式
- 在SAP CRM WebClient UI里打开ABAP Webdynpro页面
- SAP CRM WebClient UI和ABAP Webdynpro页面的互相跳转
- 通过 Apache Ant 来运行 Tomcat
- 你要的干货!信息收集之绕过CDN获取真实网站IP方法总结
- ES聚合操作
- leetcode-easy-array-删除排序数组中的重复项
- SQL注入靶场之SQLiLabs搭建指南