git归纳总结
1,git 是分布式版本控制:单个电脑就是一个完整的版本库,只需向中央服务器(远程服务器)提交修改的部分。在没有网络情况下也能正常想本机服务器提交代码管理版本,有网时再推送到远程服务器。
svn是集中式版本控制:从中央服务器获取版本,提交版本。所有记录都存在远程服务器,无网无法提交,合并等操作
2,设置提交时的用户,--global表示本机上所有仓库使用的用户
git config --global user.name "Your Name" git config --global user.email "email@example.com"
git config --list
3,创建版本库(仓库repository),即仓库中的所有目录git都会跟踪管理(修改,删除,还原,记录)。目录尽量不用中文名
mkdir App
cd App
git init //把这个文件夹变成Git可管理的仓库
git status //查看当前目录状态
git add . //所有变更文件 (git add README.md指定文件)将文件添加暂存区
git commit -m ‘解释'
// 创建SSH KEY。先看一下你C盘用户目录下有没有.ssh目录,有的话看下里面有没有id_rsa和id_rsa.pub这两个文件,有就跳到下一步,没有就通过下面命令创建
$ git remote add origin 远程仓库地址 //关联origin远程库名
git push -u origin master //把本地当前分支推送到远程origin库下的master分支上,除首次,其余可不加 -u
4,回退版本,git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD
指针
(git log 查看提交历史,以便确定要回退到哪个版本。git reflog 查看命令历史,以便确定要回到未来的哪个版本。)
git log //获取提交id
git reset --hard commit_id //根据commit_id回退到指定版本
//git reset --hard HEAD //回退到最近的一个版本
5,工作区有一个隐藏目录.git
,这个不算工作区,而是Git的版本库,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master
,以及指向master
的一个指针叫HEAD(git add将工作区代码添加到stage。git commit将暂存区代码提交到分支)
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>
,就回到了场景1,第二步按场景1操作。
6,创建分支
$ git branch featrue //创建分支
$ git checkout featrue //切换分支
// 创建+切换分支一步到位git checkout -b featrue(-b表示branch)
git branch 查看分支
git merge featrue 合并featrue分支到当前master分支 git branch -d featrue 合并后可以删除featrue分支
git log --graph
命令可以看到分支合并图
7,合并分支时,Git会用Fast forward
模式,但这种模式下,删除分支后,会丢掉分支信息,如果要强制禁用Fast forward
模式,Git就会在merge时生成一个新的commit
git merge --no-ff -m "merge with no-ff" featrue
因为本次合并要创建一个新的commit,所以加上-m
参数,把commit描述写进去
7,当手头工作没有完成时,先把工作区git stash
一下,然后去修复bug,修复后,
再git stash pop
,回到工作现场并删除stash内容,或者用git stash apply
恢复,但是恢复后,stash内容并不删除,你需要用git stash drop
来删除,
git stash list 查看stash工作现场
git branch -D <name> //未合并前,强制删除该分支
8,查看远程库的信息,下面显示了可以抓取和推送的origin
的地址。如果没有推送权限,就看不到push的地址。
$ git remote -v
origin git@github.com:michaelliao/learngit.git (fetch)
origin git@github.com:michaelliao/learngit.git (push)
9,你的小伙伴已经向origin/dev
分支推送了他的提交,而碰巧你也对同样的文件作了修改,并试图推送。这是我们需要先用git pull
把最新的提交从origin/dev
抓下来,然后,在本地合并,解决冲突,再推送。
多人合作流程如下
首先,可以试图用
git push origin <branch-name>
推送自己的修改;如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并;如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用
git push origin <branch-name>
推送就能成功!
如果git pull
提示no tracking information
,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
。
10,发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照
git branch master //先切换到打标签的分支
git tag v1.0 // 打标签
//如果是想打上周的commit标签,可以先获取提交id,打指定标签
git log //获取commitID
git tag v0.9 f52c633 git tag //查看所有标签
命令git tag -a <tagname> -m "blablabla..."
可以指定标签信息;
git tag -d v0.1 因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除
命令git push origin <tagname>
可以推送一个本地标签;
命令git push origin --tags
可以推送全部未推送过的本地标签;
命令git tag -d <tagname>
可以删除一个本地标签;
命令git push origin :refs/tags/<tagname>
可以删除一个远程标签(之前要先删除本地的标签)。
11,
git clone https://github.com/WuXiaolong/WeWin.git <拷过来自己重命的名子>
get fetch //原作者修改了,这边直接获取更新
git merge orgin/master //把原作者更改的合并到自己本地 git log --decorate --all --pretty=oneline只显示commit的ID与描述 --oneline一行去显示,--before="2014-10-10"前的提交 , -10条, -graph 图形界面
12,对于git已经跟踪的文件,进行重命名,改完名字后,先git rm a.js(移除a.js)然后添加b.js git add b.js
git diff index.html //查看index.html文件的修改对比,那本地的和暂存区比较(git diff --staged查看远程和暂存区区别)
git mv style.css css/ 将style.css移动到css目录下
git mv a.js b.js 将a.js改名为b.js
13,忽略 .gitignore_global 下的文件,然后打开这个文件,在里面编辑要忽略的目录,比如日志文件vim gitignore 然后*.log忽略所有日志文件
git归纳总结的更多相关文章
- GIT归纳整理
1. 将repo_a的分支提交到repo_b分支 repo_a:表示原始git库地址:repo_b:表示新增的git库地址. git remote add new_remote repo_b:new_ ...
- git中常用的操作命令有哪些?常用操作命令归纳
git中常用的操作命令有哪些?本篇文章就给到大家归纳了一些git中常用操作命令.有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. git开始 全局配置:配置用户名和e-mail地址 1 ...
- 学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳
学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 9 / 25 转载请注明出处!️ 目录 学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳 ...
- 学会Git玩转GitHub(第二篇) 入门详解 - 精简归纳
学会Git玩转GitHub(第二篇) 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 10 / 25 转载请注明出处!️ 目录 学会Git玩转GitHub(第二篇) 入门详解 - 精简归纳 ...
- 学会Git玩转GitHub(第三篇) 入门详解 - 精简归纳
学会Git玩转GitHub(第三篇) 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 10 / 25 转载请注明出处!️ 目录 学会Git玩转GitHub(第三篇) 入门详解 - 精简归纳 ...
- git 命令归纳
git 新手一枚,随用随更新 git clone git@example.com:project-name.git 克隆 git branch [-a -r] 查看分支[所有 远端] git pull ...
- Xcode Git 客户端 + GitBucket 服务器 使用整合归纳
1.使用前说明: 不知道XCode,Git的请自行度娘,不知道GitBucket的,可参考文章:git 私服搭建-gitbucket 初试牛刀 2.创建Git步骤 1>在gitbucket创建账 ...
- git log 附加命令归纳
git查看历史记录的时候查看每次提交的内容差异: git log -p git限制显示的条数 : git log -p -2 [-2] git简单显示每次提交做了哪些改动: git log --sta ...
- git 命令归纳版
1.克隆: 单纯的克隆名字: git clone [url] 自定义新建项目名称: git clone [url] [项目名字] 2.跟踪文件: git add [文件名] 3.添加忽略文件 ...
随机推荐
- linux 重定向命令
标准输入,输出和错误 --------------------------------- 文件文件 描写叙述符 ----------------------------- ...
- 修改linux默认语言
linux修改默认语言 编辑/etc/sysconfig/i18n这个文件(不存在就新建一个),原内容如下: LANG="en_US.UTF-8" SYSFONT=" ...
- Linux下修改Mysql的用户(root)的密码(转载)
修改的用户都以root为列.一.拥有原来的myql的root的密码: 方法一:在mysql系统外,使用mysqladmin# mysqladmin -u root -p password " ...
- python生成当前时间的时间戳
有时会用到时间戳,查了相关资料,在这里记一下 主要有两种方案: import datetime time_stamp = '{0:%Y-%m-%d-%H-%M}'.format(datetime.da ...
- dubbo视频分享
一.基础篇 第001节--课程介绍 第01节--使用Dubbo对传统工程进行服务化改造的思路介绍 第02节--使用Dubbo对传统工程进行服务化改造 第03节--ZooKeeper注册中心安装 第04 ...
- Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x
通过手动安装CDH没权限 [root@slave1 ~]# groupadd supergroup[root@slave1 ~]# hadoop fs -mkdir /tao3^C[root@slav ...
- 2019 年百度之星·程序设计大赛 - 初赛一 C. Mindis 离散化+dijkstra
题目传送门 题意:中文题面 思路: 先将所有题目给出的点离散化一下,得到一张n*m的网格,n和m最大都是400,所以我们只需要枚举每个加强的区域,将属于这个区域的边处理一下(所有横着的和竖着的边,暴力 ...
- JS随机产生颜色
<script> function selectForm(lowerValue,upperValue){ var choices=upperValue-lowerValue+1; retu ...
- ssl checker
ssl checker showThis server is vulnerable to the POODLE attack. If possible, disable SSL 3 t` POODLE ...
- Myeclipse从外部导入项目时,jsp和html页面中所有的onclick="return xx()"位置均出现cannot return from outside function() or method()错误