GIT入门学习总结

如转载请保留来源:http://blog.csdn.net/LG772EF/article/details/52027477

tip: 由于编辑器关系,两个短横线(–)最终显示成一个,命令请已截图为准,或者不识别时加一个-

git常用命令

git help :获取命令帮助说明。如git help status,获取git status的帮助说明
git –help:获取命令帮助说明。如git status –help,获取git status的帮助说明

git status:查看文件状态,显示本地仓库和远程仓库的版本差异信息等

git diff :常看尚未暂存的文件和已暂存文件之间的差异 

git diff –cached / git diff –staged : 查看已暂存的文件将要添加到下次提交里的内容

git difftool :使用图形化的方式分析差异

git add :将需要提交的内容放到暂存区域

git commit :将暂存区域内容提交到仓库

git commit -a :将需要提交的内容直接提交到仓库,跳过git add步骤

删除文件
rm : 操作后文件状态:changeds not staged for commit
git rm : 操作后文件状态:changes to be committed
git rm -f :强制删除, 删除之前修改过并且已经放到暂存区域的内容
git rm –cached:从仓库和暂存区中删除,保留当前工作目录中内容
git clean : 删除未跟踪的文件
-d : 删除目录、文件
-f:强制删除
-n:查看会被删除的内容,不做删除动作

git log :查看日志
git log –oneline –decorate –graph –all:已图形化方式显示提交历史、各个分支的指向以及项目的分支分叉情况

git reset : 还原命令
git reset head :取消暂存区域与工作目录中已修改的文件
git reset –hard HEAD^:回滚到上一次的提交, HEAD^的意思就是最新一次提交的父提交
git reset –hard :指针移动到指定的一次提交上
git reflog -n 5:查看最近5次引用变更记录

git checkout – :撤销未暂存文件的修改
git checkout 分支名 :切换分支
Switch branches or restore working tree files

git remote -v :显示远程仓库信息
git remote add :添加一个新的远程仓库引用到当前的项目

git tag :标签操作命令
查看标签、打标签等

git branch -va :查看当前使用的分支, 绿颜色*标识的表示当前分支,head指针所指向的分支
git branch –list :列出分支
git branch 分支名 : 创建分支
git branch -d 分支名 : 删除分支

git checkout -b 分支名:创建并同时切换到创建的分支上。是下面两条命令的简写:
git branch 分支名
git checkout 分支名

git merge : 处理冲突
git merge 分支名:在当前分支上合并某个分支
git mergetool : 已图形化方式显示冲突

git rebase :变基
用途和merge类似,差一点:merge是多个分支提交后服务器后合并冲突,rebase是先合并冲突,然后再提交到服务器。
无论是通过变基,还是通过三方合并,整合的最终结果所指向的快照始终是一样的,只不过提交历史不
同罢了。 变基是将一系列提交按照原有次序依次应用到另一分支上,而合并是把最终结果合在一起。
只对尚未推送或分享给别人的本地修改执行变基操作清理历史,从不对已推送至别处的提交执行变
基操作,这样,你才能享受到两种方式带来的便利。

git ls-remote:获取远程引用的完整列表

git fetch 分支名/标签名:从指定分支/标签抓取数据更新到本地,本地仓库指向更新后的位置,有冲突不会合并
Download objects and refs from another repository

git pull:从远程仓库拉取数据更新到本地,会合并冲突
Fetch from and integrate with another repository or a local branch
可以认为是git fetch + merge组合

git push 推送数据到远程仓库
git push (remote) (branch):把remote推送到远程仓库branch分支上

git config –global credential.helper cache:缓存密码,不用每次都输入密码

常见场景操作说明

tip: git命令操作时,本身有操作提示说明,根据其操作提示说明,可以完成大部分的工作

撤销未提交到本地仓库的修改

git reset HEAD 文件
GIT入门学习总结_第1张图片

撤销未暂存的修改

还原已修改的文件
git checkout – 文件
GIT入门学习总结_第2张图片

撤销已经提交到本地仓库的修改

git reset –hard HEAD^
回滚到上一次的提交, HEAD^的意思就是最新一次提交的父提交
tip: 只能回滚本地仓库的操作,如果提交到远程仓库,不能回滚。原理其实是移动本地的指针,有兴趣的同学可以查看推荐的书籍-《progit-zh-2.1.0.pdf》
GIT入门学习总结_第3张图片

冲突解决

问题:git 拉取远程仓库代码失败
Auto-merging src//.xxx
Conflict (content): merge conflict in //..
Automatic merged failed; fix conflicts and then commit the result

原因:本地和远程仓库对同一个文件进行了修改
本地有更新需要推送,远程有更新需要拉取

状态信息:
your branch and * have diverged, and have 1 and 2 different commit earch, respectively.
use git pull to merge the remote branch into yous
GIT入门学习总结_第4张图片

解决方法:
1. 查看状态,找到冲突的文件
进入git命令模式中,切换到对应的项目路径下

GIT入门学习总结_第5张图片
GIT入门学习总结_第6张图片

查看状态git status
此时我们查看到是ShipOrderItem冲突了
GIT入门学习总结_第7张图片

  1. 合并冲突,进行处理
    git diff 查看具体冲突内容,可以在编辑器里面合并冲突,处理掉
    <<<<或>>>>标识的是有冲突的地方
    GIT入门学习总结_第8张图片
    处理之后, 使用git add命令添加冲突文件,告知git冲突已处理
    此时已经没有冲突的文件了
    注:如果有多个文件冲突,请针对冲突文件依次进行合并、add操作
    GIT入门学习总结_第9张图片

  2. 提交冲突修改后的结果
    git commit, 提交之后再推送(git push)修改到仓库,然后就可以拉取更新了

这里写图片描述
GIT入门学习总结_第10张图片
此时再进行pull发现不报错了

命令撤销/回退

git reset –hard HEAD^:回滚到上一次的提交, HEAD^的意思就是最新一次提交的父提交
git reset –hard :指针移动到指定的一次提交上
git reflog -n 5:查看最近5次引用变更记录
命令撤销/回退的原理其实是移动指针引用,修改本身是存在的,有兴趣的同学可以查看推荐的书籍-《progit-zh-2.1.0.pdf》

git文件生命周期说明

GIT入门学习总结_第11张图片
–来源于《progit-zh-2.1.0.pdf》
如上图所示,git中文件有如下几个状态
1. 未跟踪的文件Untracked, 如新建一个文件
使用命令git add 将文件加入跟踪
GIT入门学习总结_第12张图片

  1. 未修改的文件Unmodified
    已经执行过commit操作后的文件状态

  2. 已修改的文件Modified

  3. 已暂存的文件staged
    使用commit将提交到本地仓库,reset命令将回滚
    GIT入门学习总结_第13张图片

推荐书籍–《progit-zh-2.1.0.pdf》

入门操作的话,看git基础、git分支两章就可以了

下载地址:http://download.csdn.net/detail/lg772ef/9585884

自己写的gerrit操作手册
http://c45c43d4.wiz03.com/share/s/34n4fk0NQkwU2orqij3DPijj1zc6vR1wvk8g2KUGdJ0Rnivu

本人水平有限,如果不妥之处,请指正,谢谢

你可能感兴趣的:(git)