Git 使用

16 篇文章 0 订阅

Git 使用

git里有四种对象:commit、tree、blob、tag
文件的三种状态:modified(已修改的)→staged(已暂存的)→committed(已经提交的)
git中的分支,本质上仅仅是个指向commit对象的可变指针。HEAD是一个指向你正在工作中的本地分支的指针(注:将HEAD想象为当前分支的别名)。reset 会改变HEAD的引用值!checkout 会移动HEAD!
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 diff  ##查看工作区修改和git库的差别
git diff --stat  ##查看工作区和git库简单的diff结果
git diff --cached  ##查看暂存区和git库的差别
git diff HEAD  ##查看工作区、暂存区和git库的差别
git diff local-branch origin/remote-branch  ##比较本地分支和远程分支的不同(均已入库)======================================================================
git push origin HEAD:refs/for/remote-branch  ##需要审核
git push origin HEAD:refs/heads/remote-branch  ##直接入库
git push origin HEAD:remote-branch  ##推送当前分支到远程,名为remote-branch
git push origin  :remote-branch  ##删除远程分支remote-branch
======================================================================
在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写成HEAD~100。
git reset --hard HEAD^   ##回退到上一个版本:
git reset --hard HEAD~n   ##回退到前n个版本:
git checkout file-name   ##回退工作区(没有add的)的修改
git reset HEAD  fileName  ##撤销暂存区(已经git add的)的修改
git reset --hard commit-id 或者 git reset --soft commit-id都会将git log中的commit-id清除!
git reset --hard  ##当前HEAD 重置,撤销所有已经修改的,不会留下之前的痕迹。针对已经追踪的文件,没有追踪的文件不影响
git reset --hard origin/remote-branch  ##撤销本地修改,与远程分支保持同步
======================================================================
git checkout -b newBranch   ##创建并切换分支
git checkout -f branchName  ##-f 强行切换
git checkout -b newBranch origin/remoteBranch  ##基于远程分支切出本地分支
git branch --set-upstream local-branch origin/remote-branch  ##手动指定local-branch追踪origin/remote-branch
git branch -d branch-name   ##删除本地分支
git branch -D branch-name   ##强制删除本地分支
git branch      ##列出本地分支
git branch -r   ##列出远程分支
git branch -a  ##列出远程和本地分支
git branch -v  ##查看本地所有分支的最后一次提交对象的信息
git branch -vv  ##查看本地所有分支的最后一次提交和本地分支追踪的远程分支
git branch --merged  ##查看所有合并入当前分支的分支
git branch --no-merged  ##查看所有未合并入当前分支的分支
git branch newBranch  ##创建分支
git branch newBranch tag  ##基于tag创建分支
git checkout tag_name  ##切换到tag
git tag -f tag_name  ##-强制创建替换已经存在的tag
git tag -d tag_name ; git push origin :tag_name ##删除本地/远程tag
git push -f origin tag_name  ##强制推送tag
======================================================================
git revert 撤销某次提交,此次提交之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交。git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不会影响之前提交的内容。
======================================================================
git rev-parse:
git rev-parse --git-dir   ##显示Git版本库的位置(相对路径),例如:

git rev-parse --show-toplevel  ##显示当前工作区根目录(即.git目录,绝对路径),例如:

git rev-parse --show-cdup    ##显示从当前目录(cd)后退(up)到工作区的根目录的深度,例如:../

git rev-parse --parseopt   ##解析命令行参数
git rev-parse --symbolic --branches  ##显示所有分支(本地切出的)

git rev-parse --symbolic --tags  ##显示里程碑

git rev-parse --symbolic --glob=refs/*  ##显示定义的所有引用。其中refs/remotes/目录下的引用称为远程分支(或远程引用)。refs/heads/目录下的引用称为本地分支。refs/tags/目录下的为tag。

git rev-parse HEAD  ##显示HEAD对应的SHA1哈希值

======================================================================
git config --global core.editor [编辑器名称] ##设置编辑器,例如:git config -global core.editor vim
git config push.default simple
Git用户名和邮箱是本地git客户端的一个变量,不随git库而改变。每次commit都会用用户名和邮箱纪录。github的contributions统计就是按邮箱来统计的。
1. 查看当前用户名、邮箱及其他配置
git config --list
git config --global --list
2. 配置用户名和邮箱
git config user.name
git config user.email
git config --global user.name
git config --global user.email 
修改提交author和email
git commit --amend --author
======================================================================
git pull 和 git fetch:
git fetch:从远程获取最新版本到本地不会自动合并。git pull:从远程获取最新版本并merge到本地。
git fetch origin remote-branch(远程分支名)  ##单独拉某个远程分支,并不会在本地创建分支
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 remote    ##不带选项,列出所有远程主机
git remote -v    ##查看远程仓库别名的具体地址
git remote show origin    ##加上主机名(origin),可以查看该主机的详细信息
git remote add  origin <url>   ##添加远程主机
git remote rm  origin     ##删除远程主机
修改远程仓库地址的方法有3种:
1.修改命令:git remote origin set-url [url]
2.先删后加
3.直接修改config文件
=====================================================================
建空分支方法:
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 版本库的初始化,通常有2种方式:
1)git clone:当你已经有一个远程的Git版本库,只需要在本地克隆一份
例如:git  clone  url  some_project 克隆到本地some_project目录下.
2)git init 和 git remote:本地创建一个工作目录,使用'git init'命令进行初始化,Git以后就会对该目录下的文件进行版本控制。利用'git remote add'命令来增加一个远程服务器端,例如:git  remote  add  origin  url
======================================================================
git clean:用来清除工作目录中所有没有tracked过的文件。
用法:
git clean -n:是一次clean的演习, 告诉你哪些文件会被删除. 记住他不会真正的删除文件, 只是一个提醒
git clean -f:删除当前目录下所有没有被track过的文件。他不会删除.gitignore文件里面指定的文件夹和文件, 不管这些文件有没有被track过 (git clean -f <path> 可以指定路径)
git clean -xf:删除当前目录下没有被track过的文件。不管他是否是.gitignore文件里面指定的文件夹和文件
git clean -df:删除当前目录下没有被track过的文件和文件夹
git reset --hard 和 git clean -df是一对好基友,结合使用他们能让你的工作目录完全回退到最近一次commit的时候。记住reset只影响被track过的文件。
git clean对于刚编译过的项目也非常有用.。如, 他能轻易删除掉编译后生成的.o和.exe等文件. 这个在打包要发布一个release的时候非常有用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值