1. 全局操作
git --version //git 机器上是否存在
git init --bare project.git //服务端:初始化一个新的仓库
chown -R zhangsan:zhangsan project.git/ //修改仓库的权限
2. 添加、提交修改、对比、重命名
添加/提交:
git add <file> //添加单个文件
git add --all //添加所有,适合项目初始化或批量提交的时候
git add . //进入某个文件夹根目录,表示添加此目录下面所有变更的文件
git commit -m "操作说明" //提交
对比:
重命名:
git mv a.php b.php //重命名
git status -s //文件关联状态
git commit -a -m "a.php文件修改为b.php" //-a修改的全部提交
git push origin master //推到远程
3. 日志查看
git log //查看所有日志
git log -2 //查看最近提交的2行
git log --pretty=oneline //以行的形式显示
git log --pretty=oneline --abbrev-commit //行短标识的显示形式
git log --graph --pretty=oneline --abbrev-commit //查看分支合并图,并以行短标识的显示形式
3. 查看历史命令
git reflog
4. 回滚版本
git reset --hard commit_id
git reset --hard e9a838d #返回到某个节点,不保留修改。
git reset --soft e9a838d #返回到某个节点。保留修改
回滚到上N个版本的快捷方式:
git reset --hard HEAD^ //上1个版本
git reset --hard HEAD^^ //上2个版本
git reset --hard HEAD^^^ //上3个版本
当然如果要回退到上100个版本不可能100个^,可以:
git reset --hard HEAD~100
5.撤销修改,恢复删除,获取指定commit_id信息
工作区:
git checkout -- <file>
git checkout -- . //恢复在当前目录下的所有修改
暂存区:
第1步:git reset --hard <file>
第2步:按工作区的处理方式处理
已经提交版本库:
第1步:git reset --hard commit_id
第2步:按回退的流程处理
推送到远程库:
恭喜你,无药可救
获取指定commit_id文件信息:
git checkout commit_id <file>
与git clean 混合使用:
git checkout -- . && git clean -xdf
6-1:清除
git clean -df #返回到某个节点
git clean 参数 -n 显示 将要 删除的 文件 和 目录 -f 删除 文件 -df 删除 文件 和 目录
6-2.删除文件
git rm <file>
git commit -m "操作说明"
7.分支操作
查看分支:git branch
创建分支:git branch <name>
分支推送到远程:git push origin <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
强制删除一个没有合并过的分支:git branch -D <name> tips:慎用
删除远程分支:git push origin --delete <name>
7-1.重命名远程分支
在git中重命名远程分支,其实就是先删除远程分支,然后重命名本地分支,再重新提交一个远程分支。
查看远程分支:git branch -av
删除远程分支:git push origin --delete <oldname>
重命名本地分支:git branch -m <oldname> <newname>
推送本地分支:git push origin <newname>
8.分支合并保留合并记录
git merge --no-ff -m "merge with on-ff" dev
tips:合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并;而fast forward合并就看不出来曾经做过合并,默认不加--no-ff是按fast forward的合并方式。
9.分支临时存储
保存:
git stash //备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。不带备注。
git stash save "临时修改1001bug,暂存" //带备注
git stash -a save "临时修改1001bug,暂存" // -a选项会把项目里面新加入的代码文件同时放到暂存区
查看:
git stash list //显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复
恢复:
git stash apply [--index][<stash@{id}>] //恢复后,stash内容并不删除,你需要用git stash drop来删除
git stash pop [--index][<stash@{id}>] //恢复最新(指定stash)并删除stash
删除:
git stash drop [<stash@{id}>] //删除某一个进度,默认删除最新进度
创建分支
git stash branch <branchname> <stash@{id}> //基于暂存区创建分支
清空:
git stash clear //清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
参数解释:
--index 参数:不仅恢复工作区,还恢复暂存区 <stash@{id}> 指定恢复某一个具体进度。如果没有这个参数,默认恢复最新进度
以下命令恢复编号为0的进度的工作区和暂存区
git stash pop -- index statsh@{0}
10.标签(tag)管理
列出所有tag:
git tag
详情查看:
git show <tagname> //查看指定tag包信息
git show v1.0
创建:
git tag <tagname> //新建一个标签,默认为HEAD
git tag v1.0
git tag <tagname> commit_id //指定一个commit id
git tag v1.0 b1b76f
git tag -a <tagname> -m "描述tag的说明" //带有备注tag的信息
git tag -a v1.0 -m "供应链1.0开发完成,上线" b1b76f
git tag -s <tagname> -m "描述tag的说明" //用私钥签名一个标签,PGP签名标签
git tag -s <tagname> -m "供应链1.0开发完成,上线" b1b76f
删除:
未推送到远程:
git tag -d <tagname> //删除指定tag包
git tag -d v1.0
已推送到远程:
第1步:git tag -d v1.0 //删除本地
第2步:git push origin :refs/tags/v1.0 //删除远程tag
推送:
git push <主机名> <tagname> //推送指定tag
git push origin v1.0
git push <主机名> --tags //一次性推送全部尚未推送到远程的本地标签
git push origin --tags
参数解释:
origin:远程主机名
11.忽略特殊不用提交的文件
第1步:编写.gitignore文件
第2步:把你需要过滤的文件直接写在.gitignore文件中。
12.配置别名
方便管理和使用命令,如git st就表示git status这是不是很爽
git config --global alias.unstage 'reset HEAD' //撤销修改
git config --global alias.last 'log -l' //显示最后1次提交
配置文件存放目录:
cat .git/config
删除别名:
直接删除配置文件.git/config alias节点,指定别名的那一行,保存就行
tips:当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中.
13.git服务器管理
14. 删除不存在对应远程分支的本地分支
查看远程分支状态:git remote show origin
本地版本库中去除远程删除的分支:git remote prune origin
15. 打包指定commit修改的代码
git archive -o update.zip 待导出的ID(a3a12c4) $(git diff --name-only 待导出的上一个提交ID(3ba0909))
例:git archive -o update.zip a3a12c4 $(git diff --name-only 3ba0909)
Tips: 这个其实就是比较版本之前差异,然后导出不一样的。
- git tag 常用笔记
git tag 常用笔记 查看 tag 列出现有 tag git tag 列出 v1.4.2 相关的 tag git tag -l "v1.4.2" 查看指定 tag 的信息 gi ...
- Git命令常用清单
本文从以下十个方面,介绍Git命令的常用清单: 一.新建代码库 二.配置 三.增加/删除文件 四.代码提交 五.分支 六.标签 七.查看信息 八.远程同步 九.撤销 十.其他 每天使用 Git ,但是 ...
- Git命令学习笔记
一.本地代码增,删,改,查,提交,找回git checkout . //抛弃工作区所有修改git checkout -- <file> //抛弃工作区& ...
- git命令常用操作
第一步:拉取git上的文件(git clone 远程仓库地址) 第二步:在主目录下运行git base here,执行git status 第三步:添加文件到本地仓库(git add 文件)之后,再次 ...
- git 命令常用总结
详细git教程可参考:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 基础命令 用 ...
- GIT命令行笔记
一次常规的初始化+推送: git initgit config user.email "you@example.com"git config user.name "asm ...
- 前端日常常用git命令
讲真,很早之前就想总结一下git常用的命令了,每次用着用着很多命令都记不住.而且我是英语渣包,有些单词慢慢靠背. git只是一个工具,我这写的只是适合我这种快速上手使用工具的小白,深究的请移步别处. ...
- Git常用命令清单笔记
git github 小弟调调 2015年01月12日发布 赞 | 6收藏 | 45 5k 次浏览 这里是我的笔记,记录一些git常用和一些记不住的命令,这个笔记原本是基于 颜海镜的文章增加 ...
- 项目管理---git----快速使用git笔记(六)------本地开发与远程仓库的交互----常用git命令
无论是我们自己把本地的项目新建了一个远程仓库 还是 从远程仓库获取到了 本地,现在我们都在本地有了一份项目代码,服务器上对应有项目代码的信息. 现在我们就开始进行交互操作了. 也就是说明一些在 正常开 ...
随机推荐
- [ 转载 ]hashCode及HashMap中的hash()函数
hashCode及HashMap中的hash()函数 一.hashcode是什么 要理解hashcode首先要理解hash表这个概念 1. 哈希表 hash表也称散列表(Hash table),是 ...
- jQuery获取select元素选择器练习
jQuery获取Select选择的Text和Value:语法解释: 1. $("#select_id").change(function(){//code...}); //为Sel ...
- sql server 知识整理 isnull函数()
exec sp_helptext ProPrecode_matcode_uf exec sp_helptext 存储过程名字 isnull 函数() SQL Serve中的isnull()函数: is ...
- mysql远程服务密码修改
GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root"; FLUSH PRIVILEGE ...
- 【概率论】4-1:随机变量的期望(The Expectation of a Random Variable Part I)
title: [概率论]4-1:随机变量的期望(The Expectation of a Random Variable Part I) categories: - Mathematic - Prob ...
- 2018CCPCFINAL B Balance of the Force 枚举最大值
题意 n个人能选择黑暗面和光明面,选择两个面分别能获得\(L_i\)和\(R_i\)的力量,有m对人不能选择同一面,问n个人的力量中的最大值-最小值尽可能小为多少. \(1<=n<=2\t ...
- centos 利用iptables来配置linux禁止所有端口登陆和开放指定端口的方法
1.关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放. 下面是命令实现: iptables -P INPUT DROPiptables -P FORWARD DROPiptabl ...
- 经过测试,feign只能通过@RequestBody传对象参数
通过feign调用,使用ModelAttribute 注解,参数没法传到对应的server
- 有向网络(带权的有向图)的最短路径Dijkstra算法
什么是最短路径? 单源最短路径(所谓单源最短路径就是只指定一个顶点,最短路径是指其他顶点和这个顶点之间的路径的权值的最小值) 什么是最短路径问题? 给定一带权图,图中每条边的权值是非负的,代表着两顶点 ...
- c 判断是否为 字母或数字(iswalnum example)
#include <stdio.h> #include <wctype.h> int main () { int i; wchar_t str[] = L"c3p.o ...