Git使用心得

git里有四种对象:commit、tree、blob、tag
文件的三种状态:committed(已经提交的)、modified(已修改的)、staged(已暂存的)
git中的分支,本质上仅仅是个指向commit对象的可变指针。HEAD是一个指向你正在工作中的本地分支的指针(注:将HEAD想象为当前分支的别名)。reset 会改变当前分支HEAD的引用值!checkout 会移动当前分支的HEAD!
git reset --hard commit-id 或者 git reset --soft commit-id都会几个git log中的commit-id清除!
git config --list  ##查看本地配置信息
git checkout file-name   ##回退工作区的修改
git reset HEAD file-name  ##回退暂存区的修改
在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写成HEAD~100。
git reset –hard HEAD~n   ##回退到前n个版本:
git reset --hard HEAD^   ##回退到上一个版本:
git reset HEAD  fileName  ##撤销暂存区的修改
git reset --hard origin/remote-branch  ##撤销本地修改,与远程分支保持同步
git reset --hard  ##当前HEAD 重置,不会留下之前的痕迹。针对已经追踪的文件,没有追踪的文件不会影响
git branch -d branch-name   ##删除本地分支
git branch -D branch-name   ##强制删除本地分支
git branch -r   ##列出远程分支
git branch      ##列出本地分支
git branch -a  ##列出远程和本地分支
git branch -v  ##查看本地所有分支的最后一次提交
git branch -vv  ##查看本地所有分支的最后一次提交和本地分支追踪的远程分支
git branch --merged  ##查看所有合并入当前分支的分支
git branch --no-merged  ##查看所有未合并入当前分支的分支
git branch newBranch  ##创建分支
git checkout -b newBranch   ##创建并切换分支
git checkout -b newBranch origin/remoteBranch  ##基于远程分支切出本地分支
git branch newBranch tag  ##基于tag创建分支
git push origin HEAD:remote-branch  ##推送当前分支到远程,名为remote-branch
git push origin  :remote-branch  ##删除远程分支remote-branch
git push origin HEAD:refs/for/remote-branch  ##需要审核
git push origin HEAD:refs/heads/remote-branch  ##直接入库
git remote -v  ##查看远程仓库别名的具体地址
git diff  ##查看工作区修改和git库的差别
git diff --stat  ##查看工作区和git库简单的diff结果
git diff --cached  ##查看暂存区和git库的差别
git diff HEAD  ##查看工作区、暂存区和git库的差别
git diff local-branch origin/remote-branch  ##比较本地分支和远程分支的不同(均已入库)
git revert 撤销某次提交,此次提交之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交。git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不会影响之前提交的内容。
git clean -df  ##删除文件和目录
git clean -dxf  ##清除工作区所有没有add的文件
git clean -h  ##显示要删除的文件和目录
git commit --amend -m "message"  ##追加到上一个提交,commit对象不变
git commit -am "message"  ##git add和git commit -m的组合,前提是被改动文件已经是tracked
git stash;do some work;git stash pop
git branch --set-upstream local-branch origin/remote-branch  ##手动指定local-branch追踪origin/remote-branch
git rev-parse:
git rev-parse --git-dir   ##显示Git版本库的位置
git rev-parse --show-cdup    ##显示当前工作区目录的深度(相对于.git的目录)
git rev-parse --parseopt   ##解析命令行参数
git rev-parse --symbolic --branches  ##显示所有分支(本地切出的)
git rev-parse --symbolic --tags  ##显示里程碑
git rev-parse --symbolic --glob=refs/*  ##显示定义的所有引用。其中refs/remotes/目录下的引用称为远程分支(或远程引用)。refs/heads/目录下的引用称为本地分支。
git rev-parse HEAD  ##显示HEAD对应的SHA1哈希值
git rev-parse A^{tree} A:  ##显示里程碑A对应的目录树
git config user.name/git config user.email   ##查看用户名和邮箱地址
用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变。每次commit都会用用户名和邮箱纪录。github的contributions统计就是按邮箱来统计的。
git config --global user.name "username"/git config --global user.email "email"   ##修改用户名和邮箱地址
git config --global core.editor [编辑器名称] ##设置编辑器,例如:git config -global core.editor vim

git config push.default simple
======================================================================
git pull 和 git fetch:
git fetch origin remote-branch(远程分支名)  ##单独拉某个远程分支,并不会在本地创建分支
git fetch:从远程获取最新版本到本地不会自动合并。git pull:从远程获取最新版本并merge到本地。
git pull使用语法:
git pull [options] [<repository> [<refspec>…]]
将远程存储库中的更改合并到当前分支中。在默认模式下,git pull是git fetch后跟git merge FETCH_HEAD的缩写。更准确地说,git pull使用给定的参数运行git fetch,并调用git merge将检索到的分支头合并到当前分支中。 使用--rebase,它运行git rebase而不是git merge。
以下是一些示例:
$ git pull <远程主机名> <远程分支名>:<本地分支名>
比如,要取回origin主机的next分支,与本地的master分支合并,需要写成下面这样:
$ git pull origin next:master
如果远程分支(next)要与当前分支合并,则冒号后面的部分可以省略。上面命令可以简写为:
$ git pull origin next
上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再执行git merge。即: git fetch origin;git merge origin/next
======================================================================
git修改远程仓库地址的方法有三种:
1.修改命令:git remote origin set-url [url]
2.先删后加git remote rm origin;git remote add origin [url]
3.直接修改config文件
git remote  ##不带选项,列出所有远程主机
git remote -v  | --verbose   ##-v选项,可以参看远程主机的网址
git remote show <origin>  ##加上主机名(origin),可以查看该主机的详细信息
git remote add  <origin >  ##添加远程主机
git remote add <origin > <网址>  ##添加远程仓
=====================================================================
建空分支方法:
git symbolic-ref HEAD refs/heads/master;rm .git/index;git clean -fdx
git add .;git commit -m "Initial commit"
git push origin HEAD:master
=====================================================================
从Git 版本库的初始化,通常有两种方式:
1)git clone:这是一种较为简单的初始化方式,当你已经有一个远程的Git版本库,只需要在本地克隆一份
例如:git  clone  git://github.com/someone/some_project.git   some_project 
上面的命令就是将'git://github.com/someone/some_project.git'这个URL地址的远程版本库,完全克隆到本地some_project目录下
2)git init 和 git remote:这种方式稍微复杂一些,当你本地创建了一个工作目录,你可以进入这个目录,使用'git init'命令进行初始化;Git以后就会对该目录下的文件进行版本控制,这时候如果你需要将它放到远程服务器上,可以在远程服务器上创建一个目录,并把可访问的URL记录下来,此时你就可以利用'git remote add'命令来增加一个远程服务器端,
例如:git  remote  add  origin  git://github.com/someone/another_project.git
上面的命令就会增加URL地址为'git: //github.com/someone/another_project.git',名称为origin的远程服务器,以后提交代码的时候只需要使用origin别名即可。

--------------------- 作者:绿tree 来源:CSDN 原文:https://blog.csdn.net/weixin_38599972/article/details/80434873?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://my.oschina.net/weiweiblog/blog/2243401

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值