Git

  • 介绍

git是一个分布式版本控制系统,由Linux之父发起。

git回滚以后,也不会把记录完全删除,如果还记得commit hash的话,还是可以还原。

  • 用户

修改全局用户信息

git config --global user.name surenpi --replace-all

git config --global user.email abc@126.com --replace-all

在clone的时候,也可以把用户名和密码信息带入到url中,例如:git clone http://username@password@git.user.com/test.git

但如果用户名本身就是一个邮箱的话,就会因为@这个特殊字符而不能直接使用了,需要先进行编码,例如:git clone http://username%40126.com@password@git.user.com/test.git

  • fetch

git fetch只是把远程代码更新到本地,但不会做合并操作

  • pull

git pull相当于是fetch和merge的集合操作

  • merge

git checkout branch-1

git merge master

git merge –squash master

  • reset

reset type

soft 只会把指针指向HEAD

mixed

hard 除了修改HEAD指针外,还会放弃本地的修改

git reset –hard

回退本地commit记录 git reset –hard da48530381c9df017dfc9c569d38755672cfe9c8

强制更新,放弃本地所有修改 git reset –hard origin/master

  • rebase

删除中间的commit记录 rebase -i 112ceeb这里的hash是你要删除的前一个记录,然后在编辑界面中,找到删除的commit记录,pick修改为drop

  • 分支

git branch 查看当前分支

git branch –all 查看本地和远程(所有)分支

git push –set-upstream git@codehub.devcloud.hwclouds.com:abc/demo.git 推送到远程分支

git push --set-upstream origin-suren suren-zh 给新建的分支关联远程分支

git branch local 添加本地分支(会以当前分支为基础来创建分支)

git branch local master 基于master创建分支

git push origin local

git push origin local:local 把本地分支推送到远程,远程和本地的分支名称可以不一致

git checkout -b newBranch 新建并切换分支

git checkout -b feature_branch develop 基于develop来创建分支

git checkout master 切换分支

git默认只会把远程的默认分支搞下来,当checkout时如果本地没有的话,就会从远程拉取

删除远程分支 git push origin --delete <branchName>

删除本地分支 git branch --delete hello

删除远程分支不存在,当本地分支存在的情况 git remote prune origin

  • 标签

git tag v0.1.2-light

git tag -a v0.2 -m ‘here is comment’

切换到标签 git checkout v0.2

删除标签 git tag -d v0.2

基于提交记录打标签及git tag -a v0.2 beab786 -m 'from branch hello beab786'

发布指定的标签 git push origin v0.2

把所有的标签一次性发布 git push origin --tags

git可以在同一个提交上打多个名称不一样的标签

  • push

git push –dry-run 模拟推送

  • 日志

查看最近4条提交记录git log -4

还可以指定提交者和作者等信息git log --author suren

git支持格式化日志打印,例如:git log --pretty=format:'%h %ar %an'支持的格式如下列表:

图形的方式显示日志 git log --graph --all

显示简短信息 git log --oneline -5

  • commit

可以直接针对某个文件来提交,例如:git commit Test.java -m ‘here is comment’

如果日志内容中有换行,则可以采用下面的方式:

$ git commit 1111 -m 'XQ-1
hereis comment'
[master 405e281] XQ-1 hereis comment
1 file changed, 2 deletions(-)

如果要基于上次的提交日志再次进行提交,可以使用命令:git commit --amend

查看没有被push的commit记录 git cherry -v

git ls-tree 2073d193a1f9e5afee0a30f4a8dea829efa46c1d 查看提交明细

  • cherryPick

摘樱桃(cherry-pick),是git非常棒的一个特性,它支持从任意一个分支日志中查询到一个commit hash值来进行合并,命令为:git cherry-pick 812e6fef

当一个cherry-pick操作发生错误时,如果再次执行cherry-pick操作的话,就会得到这样的错误提示:a cherry-pick or revert is already in progress。然后,你可以执行命令来把上一次的操作撤销:git cherry-pick --quit。或者,把错误解决后执行命令:git cherry-pick --continue来继续当前操作。

当cherry-pick缺失了创建文件A的记录,但是包含修改A的记录就会有问题

cherry-pic可以支持同时传递多个commit hash,但是要注意comimt的时间顺序。

  • 冲突

查看冲突:git diff

  • 多个远程库

git remote add osc_origin https://git.oschina.net/mail126/phoenix.platform.git

git push -f osc_origin

git push osc_origin branch_a:branch_a

  • 参考

本文为原创,如果您当前访问的域名不是surenpi.com,请访问“素人派”。

SVN命令行

Docker安装应用

发表评论

电子邮件地址不会被公开。 必填项已用*标注