Git指令小结
一、初始化
git config --global user.name "username"
设置git用户名
git config --global user.email "email"
设置git邮箱号
git init
通过命令 git init 把当前目录变成git管理的本地仓库
git add filename
把文件存到暂存区
git commit -m "note"
把文件提交到本地仓库
二、常用操作
git status
查看当前库的git状态
git diff filename
查看文件改动状态
git log
查看git操作日志
git reset --hard HEAD~N
回退git版本到第N个版本前
git reflog
可查看git每步操作的版本号(查看完成按Q可退出查看)
git reset --hard verNum
git到指定版本(根据版本号)
git checkout -- filename
丢弃工作区的修改。例如修改了文档还没有git add。add后无法撤销修改。
rm filename
删除文件,删除后git checkout -- filename可以撤销删除,恢复文件。
三、远程仓库的绑定使用
ssh-keygen -t rsa -C "email"
创建SSH私人密钥和公共密钥
git remote add origion https://github.com/aaa/PC1.git
利用上一步的PC的公共密钥
先在github个人账户上New SSH Key;
再建立新仓库New repository,得到仓库的http地址后,
将github库与本地PC绑定,需在git输入github的账号和密码。
git push -u origion master
把当前分支master推送到远程(github仓库),首次加-u。
git push origion master
本地与远程仓库绑定后,修改本地后,利用该指令同步到远程仓库。
git clone https://github.com/aaa/PC2.git
从远程仓库克隆到本地。
四、分支操作
git branch
查看git所有分支。
git checkout -b 分支名
创建并切换到这个分支。相当于git branch bran1 和 git checkout bran1这两条指令。
git merge branch
现在我们想要把branch分支上增加的内容合并到当前分支,可以在当前分支(任何分支皆可)上使用该命令。
git branch -d bran2
删除某个分支。
git pull
获取远程分支上的最新内容
五、常用流程
使用Git提交文件到本地库和远程库:
1:使用 git add filename把文件添加到暂存区。
2:使用git commit -m "note"提交更改,实际上就是把暂存区的所有内容提交到当前master分支上。
3:使用git push origion master:把本地master分支的最新修改交托给GitHub的origin分支,完成这一步才真正意义上拥有了分布式版本库。(集中式、分布式)
分支管理策略:
通常我们合并分支的时候,Git一般是用Fast forward模式,这种模式下,删除分支之后,会丢掉分支信息,现在我们来使用--no--ff来禁用Fast forward模式。
1:创建一个dev分支。git checkout -b dev
2:修改README.md内容。
3:添加到暂存区、工作区。git add README.md \ git commit -m "change1"
4:切换回bran1分支。git checkout bran1
5:合并dev分支,使用命令:git merge --no--ff -m "note" dev
6:删除dev之后我们发现在最后的log中还有dev的操作。git branch -d dev
7:查看历史记录。git log
8:分支策略:master主分支应该是非常稳定的,也是用来发布的新版本,一般情况下干活都不在master分支上干,都是在新建的分支上,干完之后需要发布,或者说新建分支代码稳定之后可以合并到主分支master上。
bug管理策略:
1:隐藏当前分支下的工作状态 git stash
2:查看git状态是否干净。git status
3:切换到bug所在的分支 。gitcheckout branch
4:在bug分支上新建分支。git checkout -b branbug
5:修改bug代码
6:提交修改后的文件。git add filename\ git commit -m "fix bug xxx"
7:切换到bug所在的分支。git checkout branch
8:合并刚才的修复。git merge --no--off -m "note" branchbug
9:删除修复bug的临时分支。git branch -d branchbug
10:切换到第一步正在工作状态的分支。git checkout bran1
11:查看隐藏的工作现场。git stash list
12:恢复的方式有两种:
a、git stash apply,这种恢复方式恢复后stash内容并不删除,需要使用git stash drop来删除。
b、另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。
多人合作:(本地master分支) 对应 (远程origin分支)
1:查看远程信息 git remote
2:查看远程库详细信息 git remote -v
3:拉取最新origion到当前分支 git pull
4:修改内容
5:推送自己的更改到origion :git push origion branch-name
六、note
如果我们改了本地文件,没有commit到某个分支A,那么在分支A下,cat filename是看不到本地改动 的。且在branch1下的commit,在branch2上cat filename也看不到。
一般情况下master分支是主分支,因此要时时刻刻与远程同步;一些修复的bug分支是不需要推送到远程的,只要先在本地合并到主分支上,然后把主分支master推送到远程去即可。
Git指令小结的更多相关文章
- 第一章 git指令与设置
相关指令: 1.从远程的master分支上创建新的分支,此时新分支内容与master分支内容相同: git checkout master; git branch newbranch; git che ...
- 使用git指令下载github仓库代码(笔记)
通过Git指令下载源码 Git概念说明 三种状态:修改状态.暂存状态和Git仓库 基本的Git工作流程: 在工作目录中修改文件 暂存文件,将文件的快照放入暂存区域 提交更新,找到暂 ...
- 工作中常用Git指令操作
常用Git指令总结 前阵子有几天好不顺,可谓是喝水都呛着,更何况被Git给呛着了,还不轻,哈哈.所以打算总结一下自己在工作使用到Git相关的东西以及和大家探讨使用GIt的心得体会.于是,关于Git的的 ...
- git 指令如何撤销一次merge
在使用git指令时难免会发生错误的merge的情况,那么如何在这种情况下回退到错误发生之前的情况? git reflog 指令显示历史的操作 4457e43 HEAD@{0}: reset: movi ...
- git 指令记录
由于之前一直用svn 用git也是用图形化的工具 还是要了解一下git指令 因为都是版本控制工具 有很多相似之处 所以理解起来也比较轻松 仓库: github上面的项目 工作目录下面的所有文件都不外乎 ...
- git指令总结及常见问题积累与解决方案
git指令总结及常见问题积累与解决方案 git初始化一个项目并且长传到服务器后端步骤: 1.本地文件操作 通过:git init初始化化一个项目 会出现一个隐藏文件 ,可以文件夹属性设置进行查看,此 ...
- git指令-未完待更新
git指令 1. $ git config --global user.name "Your Name" $ git config --global user.email &quo ...
- git 指令笔记
狂躁,太狂躁!!赶上过年,赶上自己的懒癌,12月底就学完的教程直到今天才整理笔记,中途沉默在游戏中..... 只给出Windows下git指令操作,推荐大家去廖雪峰前辈那里学习(百度搜索:廖雪峰的官方 ...
- Git学习小结 ~ Lethe's Blog
学习自https://www.liaoxuefeng.com/wiki/896043488029600 一.创建版本库 (1) git init 初始化一个Git仓库 (2)添加文件到Git仓库,分两 ...
随机推荐
- JavaScript中this的绑定规则
JavaScript中this的绑定规则 前言 我们知道浏览器运行环境下在全局作用域下的this是指向window的,但是开发中却很少在全局作用域下去使用this,通常都是在函数中进行使用,而函数使用 ...
- 读源码【读mybatis的源码的思路】
✿ 需要掌握的编译器知识 ★ 编译器为eclipse为例子 调试准备工作(步骤:Window -> Show View ->...): □ 打开调试断点Breakpoint: □ 打开变量 ...
- shell脚本之判断当前内核主版本是否为3,且次版本是否大于10
[root@localhost ~]# cat uname.sh #!/bin/bash main=`uname -r | awk -F . '{print $1}'` minor=`uname -r ...
- 异常篇—— VEH 与 SEH
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...
- 【整理】Linux:set -eux
参数 参考原文:https://blog.csdn.net/textdemo123/article/details/100694371 我们经常见到很多设立了脚本 打头会写如下 set -e 或者:s ...
- ssh远程端口转发&&windows系统提权之信息收集&&网安工具分享(部分)
一.ssh远程端口转发 背景:当我们在渗透过程中,获取到内网的一台仅有内网IP的服务器后,我们可以通过ssh隧道,将内网某个主机的端口进行远程转发 1.网络拓扑图 假设获取的服务器为web服务器,we ...
- Vue 源码解读(8)—— 编译器 之 解析(上)
特殊说明 由于文章篇幅限制,所以将 Vue 源码解读(8)-- 编译器 之 解析 拆成了上下两篇,所以在阅读本篇文章时请同时打开 Vue 源码解读(8)-- 编译器 之 解析(下)一起阅读. 前言 V ...
- 【C#反射】动态创建类型实例
转载自:https://www.cnblogs.com/dytes/archive/2012/06/29/2569488.html .NET中除了构造函数外,还有多种方式可以创建类型的实例.下面总结了 ...
- 8.StringTable(字符串常量池)
一.String的基本特性 String:字符串,使用一对 "" 引起来表示 String s1 = "atguigu" ; // 字面量的定义方式 Strin ...
- P1424
#include <stdio.h> int main(){ int s = 250; int x, n, distance = 0; scanf("%d %d",&a ...