@breakerthb
2017-09-11T07:27:08.000000Z
字数 3503
阅读 1447
Git
$ git branch
* br-2.1.2.2
master
"*"表示当前分支。
$ git branch -a
* br-2.1.2.2
master
remotes/origin/HEAD -> origin/master
remotes/origin/br-2.1.2.1
remotes/origin/br-2.1.2.2
remotes/origin/br-2.1.3
remotes/origin/master
$ git branch -vv
$ git branch test
创建结果:
$ git branch
* br-2.1.2.2
master
test
把分支推到远程分支
$ git push origin test
相当于:
$ git push origin test:test
注意:origin
是默认的远程版本库名称,可以在.git/config
文件中修改。
切换到分支“test”
$ git checkout test
M jingwei-server/src/main/java/com/taobao/jingwei/server/service/cmd/GetCustomerTarCmd.java
M jingwei-server/src/main/java/com/taobao/jingwei/server/util/ServerUtil.java
Switched to branch 'test'
M 表示cong 原来分支(上一次修改没有提交br-2.1.2.2)带过来的修改
让本地当前分支恢复到远端分支。
$ git checkout .
创建一个新分支dev
,并切换为当前分支:
$ git checkout -b dev
$ git branch -a
master
test_1
test_2
remotes/origin/master
remotes/origin/test_1
remotes/origin/test_2
$ git branch -d test_2
Deleted branch test_2 (was c470057).
$git branch -a
master
test_1
remotes/origin/master
remotes/origin/test_1
remotes/origin/test_2
可以看到本地分支test_2删除了
$ git branch -a
* master
test_1
remotes/origin/master
remotes/origin/test_1
remotes/origin/test_2
$ git push origin :test_2
To git@*********- [deleted] test_2
$ git branch -a
* master
test_1
remotes/origin/master
remotes/origin/test_1
注:git push origin :[分支名]
就是删除远程分支的意思,和刚才我删除本地无关。如下面,我留着本地test_1分支,只是删除了远端的分支test_1
$ git push origin :test_1
To git@********
- [deleted] test_1
$ git branch -a
* master
test_1
remotes/origin/master
dev合并到master
$ git checkout master
$ git merge --no-ff -m "merge with no-ff" dev
git log
git log 命令是查看全部提交日志
git log -2 查看最近2次的提交日志
git log -p 查看历史纪录以来哪几行被修改
git log --stat --summary 查看每个版本变动的档案和行数
常用:
$ git log --stat
其他格式:
$ git log --pretty=oneline
$ git log --pretty=short
$ git log --pretty=full
$ git log --pretty=fuller
自定义格式:
$ git log --pretty=format:"%h - %an, %ar : %s"
ca82a6d - Scott Chacon, 11 months ago : changed the version number
085bb3b - Scott Chacon, 11 months ago : removed unnecessary test code
a11bef0 - Scott Chacon, 11 months ago : first commit
表 2-1 列出了常用的格式占位符写法及其代表的意义。
选项 | 说明 |
---|---|
%H | 提交对象(commit)的完整哈希字串 |
%h | 提交对象的简短哈希字串 |
%T | 树对象(tree)的完整哈希字串 |
%t | 树对象的简短哈希字串 |
%P | 父对象(parent)的完整哈希字串 |
%p | 父对象的简短哈希字串 |
%an | 作者(author)的名字 |
%ae | 作者的电子邮件地址 |
%ad | 作者修订日期(可以用 -date= 选项定制格式) |
%ar | 作者修订日期,按多久以前的方式显示 |
%cn | 提交者(committer)的名字 |
%ce | 提交者的电子邮件地址 |
%cd | 提交日期 |
%cr | 提交日期,按多久以前的方式显示 |
%s | 提交说明 |
类似图表:
$ git log --pretty=format:"%h %s" --graph
* 2d3acf9 ignore errors from SIGCHLD on trap
* 5e3ee11 Merge branch 'master' of git://github.com/dustin/grit
|\
| * 420eac9 Added a method for getting the current branch.
* | 30e367c timeout code and tests
* | 5a09431 add timeout protection to grit
* | e1193f8 support for heads with slashes in them
|/
* d6016bc require time for xmlschema
* 11d191e Merge branch 'defunkt' into local
最常用:
$ git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
添加alias:
alias gitlg="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
remotes/origin/HEAD -> origin/master #啥意思呢?
在clone完成之后,Git 会自动为你将此远程仓库命名为origin,并下载其中所有的数据,建立一个指向它的master 分支的指针,我们用(远程仓库名)/(分支名) 这样的形式表示远程分支,所以origin/master指向的是一个remote branch(从那个branch我们clone数据到本地)
这个是执行 git remote -v 的结果,看出来origin其实就是远程的git地址的一个别名。
$ git remote -v
origin git@xxxx/jingwei.git (fetch)
origin git@xxxx/jingwei.git (push)
$ git branch -a
br-2.1.2.2
master
* test
remotes/origin/HEAD -> origin/master
remotes/origin/br-2.1.2.1
remotes/origin/br-2.1.2.2
remotes/origin/br-2.1.3
remotes/origin/master
比较两个版本之间的差别
$ git diff 版本号1 版本号2
注意: 一般把较早的版本放在前面更。
$ git log
commit db484a2361842dee529a74e537cff6ed190eaf97
赋值前七位数字
$ git checkout db484a2
此时,db484a2的内容被checkout
db484a2的状态下执行:
$ git checkout -b new_branch_name
此时db484a2的内容在新分支中