git实用操作21条
1.建空目录 mkdir e:\gg
2.把该目录变成仓库 git init //发现当前目录下多了一个.git
3.新建文件readme.txt
4.添加文件到仓库 git add readme.txt //添加到暂存区
5.文件提交到仓库 git commit -m "wrote a readme file" //后面是日志,提交暂存区的内容
6.查看修改的内容 git diff readme.txt
7.查看历史记录 gig log (--pretty=oneline)//括号里面的表示只显示一行
8.回退到历史版本
8.1 git reset --hard HEAD^ [head表示当前,head^回到上一个,head~`100 退100个版本]
8.2 git reset --hard 3628164 【3628164 版本号,没有必要写全,写五个就行】//如果屏幕没有关掉
8.3 git reflog 【记录每一次命令,可以回退到任意版本】
[与svn区别] 三个回退到两个版本,再查看是2个,svn是四个
9.撤消修改
9.1 没有提交到暂存区 git checkout -- readme.txt
让这个文件回到最近一次git commit或git add时的状态
9.2 提交到暂存区,但没有commit
git reset HEAD readme.txt
10.删除文件
10.1 rm test.txt
11.添加远程库
11.1 关联远程库 git remote add origin git@server-name:path/repo-name.git
11.2 第一次推送master分支的所有内容 git push -u origin master
11.3 以后推送最新修改 git push origin master
12.从远程库中克隆
12.1 git clone git@github.com:michaelliao/gitskills.git
【Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。】
13 创建与合并分支
13.1 创建 dev分支,并切换到dev分支 git checkout -d dev
13.2查看当前分支 git branch //当前分支前面会标有*号
13.3 提交代码到分支,
git add readme.txt
Git commit -m "test"
13.4 切换回master git checkout master
13.5 把分支的成果merge到master
Git merge dev //合并指定分支到当前分支
13.6 删除dev分支 git branch -d dev
14.合并分支在删除分支后,不丢失信息
14.1 git merge --no-ff -m "merge with no-ff" dev
//--no-ff参数,表示禁用Fast forward
15.bug分支
15.1 把工作现场储藏起来,修完bug以后,再恢复
Git stash
15.2 eg在master分支上修复bug,切换到master分支,并创建bug分支
Git checkout master
Git checkout -b issue-101
15.3 修复完成后切换到master分支,合并,删除bug分支
Git checkout master
Git merge --no-ff -m "merge bug fix 101 " issuse-101
Git branch -d issue-101
15.4 回到dev分支干活
Git checkout dev
查看工作现场
Git stash list
恢复工作现场
1.git stash pop[恢复并删除stash]
2.git stash apply 恢复
git stash drop 删除
- 多人协作
- 推送自己的修改 git push origin branch-name
- 推送失败,表明远程分支比本地新,用git pull合并
- 提示no tracking information,表明本地分支与远程分支没有关联
- Git branch --set-upstream branch-name origin/branch-name
- 合并冲突,解决冲突。并在本地提交
- 推送 git push origin branch-name
- 查看远程库信息 git remote -v
- 在本地创建和远程分支对应的分支
- Git checkout -b branch-name origin/branch-name
- 创建标签
- 新建一个标签 git tag <name> //git tag v1.0
- 指定标签信息 git tag -a <tagname> -m "baldsfadsaf"
- 用pgp签名标签 git tag -s <tagname> -m "dsafadsf"
- 查看所有标签 git tag
- 操作标签
- 推送一个本地标签 git push origin <tagname>
- 推送全部未推送的标签 git push origin --tags
- 删除本地一个标签 git tag -d <tagname>
- 删除一个远程标签 git push origin :refs/tags/<tagname>
- 忽略特殊文件
- 在要目下创建.gitignore,把忽略的文件名填进去
- windows带的垃圾文件
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
.py[cod]
*.so
*.egg
*.egg-info
- 配置别名
- Eg st 代表Status
Git config --global alias.st status
- Eg lg的经典配置 会带有不同颜色
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
- 配置git服务器
- Debian/ubuntu环境
- 安装git Sudo apt-get install git
- 创建git 用户,运行git服务
- Sudo adduser git
- 创建证书登陆
- 收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个
- 初始化git仓库
- Sudo git init --bare sample.git
- 不让用户登陆到服务器去改工作区
- Sudo chown -R git:git sample.git
- 禁用shell登陆
- 编辑/etc/passwd
git:x:1001:1001:,,,:/home/git:/bin/bash
改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
- 远程克隆仓库
- git clone git@server:/srv/sample.git
git实用操作21条的更多相关文章
- Git 实用操作:重写 Commit 历史
当我们修改完代码,提交了一个 commit,然后发现改错了,怎么修正?下面分两种情况来讨论:修正最近一次提交,和修正历史多个提交. 修正最近一次提交 如果发现刚刚提交的内容有错误,当场再修改一下再提交 ...
- Git 实用操作:撤销 Commit 提交
有的时候,改完代码提交 commit 后发现写得实在太烂了,连自己的都看不下去,与其修改它还不如丢弃重写.怎么操作呢? 使用 reset 撤销 如果是最近提交的 commit 要丢弃重写可以用 res ...
- git 实用操作
查看某文件的某些行的变化历史: $ git log --pretty=short -u -L 2003,2005:Executor.cpp http://stackoverflow.com/quest ...
- GIT实用操作指令(更新中)
提取多次提交的文件 git archive --format=zip HEAD `git diff --name-only 较早的提交ID 较晚的提交ID` > diff.zip
- 版本控制工具——Git常用操作(上)
本文由云+社区发表 作者:工程师小熊 摘要:用了很久的Git和svn,由于总是眼高手低,没能静下心来写这些程序员日常开发最常用的知识点.现在准备开一个专题,专门来总结一下版本控制工具,让我们从git开 ...
- 45个 GIT 经典操作场景,专治不会合代码
大家好,我是小富~ 技术交流关注公众号:程序员内点事 传送门:原文地址 git对于大家应该都不太陌生,熟练使用git已经成为程序员的一项基本技能,尽管在工作中有诸如 Sourcetree这样牛X的客户 ...
- H5 App设计者需要注意的21条禁忌
我们通常在做H5 APP设计的过程中,遇到很多看似很小,且很容易被忽略的问题,正是这些小问题,一次次的撩拨用户的耐心,让用户对你的APP心生怨念.现在WeX5君呕血为大家整理出H5 APP设计的21条 ...
- 使用ThinkPHP开发中MySQL性能优化的最佳21条经验
使用ThinkPHP开发中MySQL性能优化的最佳21条经验讲解,目前,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更 ...
- 【《Effective C#》提炼总结】提高Unity中C#代码质量的21条准则
作者:Williammao, 腾讯移动客户端开发工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 原文链接:http://wetest.qq.com/lab/view/290.h ...
随机推荐
- bzoj4697: 猪
Description 红学姐和黄学长是好朋友.红学姐有一只宠物,叫魔法猪.黄学长也有一只宠物,叫小奇.有 n 个猪圈排成一排 ,魔法猪藏在某个猪圈中.为了找到魔法猪,小奇会向你询问一些猪圈中猪的个数 ...
- Date类型之组件方法
在之前总结了Date类型的继承方法和格式化方法,现在来总结一下日期时间组件方法,这些方法都是直接取得和设置日期值中特定部分的方法. var d = new Date(); //getDate() 从 ...
- JVM插码之五:Java agent+ASM实战--监控所有方法执行时间
本文建立在对instrumentation和agent有初步的了解的前提下阅读,关于这2个类的讲解在其它文章中. 这是一个maven项目,pom中需要的配置,lib中有asm的jar包 pom.xml ...
- [转]NSIS:常量大全
原文链接 http://www.flighty.cn/html/bushu/20140915_251.html ;轻狂志www.flighty.cn ;运行后会在桌面生成NSIS常量大全.txt文件 ...
- 亚马逊云EC2做PPTP SERVER的笔记
1.在亚马逊控制台上启动实例 2. 3. 4. 5. 6.配置安全组,把你的IP开放所有流量. 7. 用你自己的亚马逊KEY或者生成一个新的KEY来登录EC2 8.开始搭建VPN-PPTP——how ...
- [UE4]角色增加挂点、增加枪
人物骨骼增加Socket(骨骼) 增加手持武器预览: 角色蓝图增加组件“Skeletal Mesh”(好像这叫骨骼模型吧),并拖放至人物“Mesh”下面作为子组件. 选中刚建好的“SkeletalMe ...
- 比较java枚举成员使用equal还是==
问题 我知道Java枚举会被编译成一个包含私有构造参数和一堆静态方法的类,当去比较两个枚举的时候,总是使用equals()方法,例如: public useEnums(SomeEnum a) { if ...
- 自己写的jQuery放大镜插件效果(一)(采用一张大图和一张小图片的思路)
这个思路的方法会带来一个小问题,就是当鼠标放到小图上去时,会开始加载大图片,网速不佳的时候,会出现加载慢的情况.但是放大的效果和你所给出的大图片的清晰度是一样的. 先看效果图: html代码: < ...
- oracle 11g RAC 的一些基本概念(三)
Grid Infrastructure共享组件 Grid Infrastructure使用两种类型的共享设备来管理集群资源和节点:OCR(Oracle Cluster Registry)和表决磁盘 ...
- final修饰的类有什么特点
变量定义为final,一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变. 方法定义为final,是为了防止任何继承类改变它. 类定义为final, ...