您的位置:首页 > 其它

git学习笔记

2017-09-14 10:45 253 查看
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 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 branch    ##查看本地分支
git branch -r   ##查看远程分支
git branch -a   ##显示本地和远程分支。remote开头的是远程分支。
git branch newBranch  ##创建分支
git checkout -b newBranch   ##创建并切换分支
git branch newBranch tag  ##基于tag创建分支
git checkout -b newBranch origin/remoteBranch  ##基于远程分支切出本地分支

回退:
在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写成HEAD~100。
git回退到前n个版本:git reset –hard HEAD~n
把当前版本A ,回退到上一个版本B:$ git reset --hard HEAD^

git reset HEAD  fileName  ##撤销暂存区的修改
git checkout fileName  ##撤销工作区的修改
git reset --hard remotes/origin/branchName  ##撤销本地修改,与远程分支保持同步
git reset --hard  ##是将当前HEAD 重置,不会留下之前的痕迹。是针对已经追踪的文件,没有追踪的文件不会影响
删除一些没有 git add 的文件:
git clean 参数: -n 显示将要删除的文件和目录
-f 删除 文件,-d删除目录,-df删除文件和目录
========================================================================
git pull 和 git fetch:
git fetch origin remoteBranch(远程分支名)  ##单独拉某个远程分支,并不会在本地创建分支
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会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”origin/master分支。Git也允许手动建立追踪关系。
$ git branch --set-upstream master origin/next
上面命令指定master分支追踪origin/next分支。
如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。即: git pull origin
表示本地的当前分支自动与对应的origin主机"追踪分支"(remote-tracking branch)进行合并。
如果当前分支只有一个追踪分支,连远程主机名都可以省略。

==========================================================================
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>  ##加上主机名,可以查看该主机的详细信息。
git remote add  <主机名>  ##添加远程主机。
git remote add <主机名> <网址>  ##添加远程仓。

========================================================================
建空分支方法:
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

挑单工程构建脚本:
1、cd $project_path
2、git reset --hard origin/branch
3、repo sync ./
4、git cherry-pick  $GERRIT_PATCHSET_REVISION(此环境变量值为commit-id)
5、git push origin HEAD:refs/for/branch  > & push.log
6、ssh -p 29418 account@IP gerrit review  --code-review 2 --submit $Change,1 (change 从push.log中获取)

git cherry-pick e83554e37691116b53d8ebd0e7c3978b95e10efe(commit-id)
继续pick:git cherry-pick --continue
撤销pick:git cherry-pick --abort

从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 a
ae40
dd'命令来增加一个远程服务器端,
例如:git  remote  add  origin  git://github.com/someone/another_project.git
上面的命令就会增加URL地址为'git: //github.com/someone/another_project.git',名称为origin的远程服务器,以后提交代码的时候只需要使用 origin别名即可。
用户名和邮箱地址的作用:
用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变。每次commit都会用用户名和邮箱纪录。
github的contributions统计就是按邮箱来统计的。
提交:
git commit -am "<message>"(git add和git commit -m的组合,前提是被改动文件已经是tracked)
直接提到库里:git push origin HEAD:master
过门禁:git push origin HEAD:/refs/for/branchName
git没有删除仓库的命令,如果是本地的只要删除.git目录就可以了,远程的只能在服务器上删除对应的仓库目录。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git