git branch <branch name>
在本地建立一个新的分支名为<branch name>
, 此时在远端看不到该分支, 须要将该分支推送到远端。查看本身本地分支: git branch
查看刚才新建立的分支java
git checkout <branch name>
进行本地分支的切换,切换至上述新建的分支<branch name>
git
git checkout -
切换至上一个分支,命令效果等同于cd -
github
git push --set-upstream origin <branch name>
推送该分支到远端,并创建关联。所谓关联是指后续全部提交到该分支,如git push
, 若是不进行次操做,git 会进行提示vim
git branch -c
该命令等同于上述1.2步,新建立分支同时会进行切换到新分支缓存
git branch -r
: git branch
: git branch -a
上述都查看分支, 查看远端分支, 查看本地分支, 查看全部分支,操做者当前所在分支用 * 号标记。ide
git branch -d <branch name>
删除一个本地分支,切换至别的分支,不然删除不了。svn
git push origin --delete <branch name>
删除远端分支函数
git status
查看当前分支工做区、暂存区的工做状态,post
git status -sb
以简洁的方式显示工做区文件状态fetch
git add <filename>
将该文件加入暂存区
git add . || git add -A
将全部的新建立的文件加入暂存区, 执行git add命令的时候,git首先会经过hash函数算出文件名A.java对应的sha-1值, 该值是32位16进值,git 取前两位在.git 目录objects目录下建立一个之后30为文件名的文件。
git diff xxx
查看文件的修改
git commit -m "<message>" <filename>
提交该文件至本地仓库, 若是提交全部文件能够使用git commit .
命令
git commit || git commit -a
提交全部文件修改,并打开vim界面,填写 message , 做用是规范提交的 message,效果等同于arc。 能够参照Angular 团队的规范。修改本身本地提交 message 参照优雅的提交你的 Git Commit Message。
git pull
更新远端的代码并与本地进行合并, 若是本身修改了代码, 获取别人时会产生一次无用的 merge
提交记录。
git pull --rebase
一样的拉取远端代码,并与本地代码自动合并,但不会产生上述无用的 commit , 让分支节点迭代更加优美、清晰
git fetch
拉取远端代码,但不会进行 merge , 须要本身手动执行 git merge <filename>
进行合并
git push
将本地代码修改推送至远端
git log -x
查看最近X的提交日志
git log -x --pretty=oneline
去除提交日志里的 date 以及 author, 显示为一行
git show --stat
显示最近一次的提交日志,并显示修改的文件
git show <commit-id>
查看对应的 commit-id 修改详情, 具体的修改内容查看。
git log HEAD~1
HEAD 指针指向的最后一次提交,也能够查看最后一次提交的log
git show HEAD~1
查看最近一次的修改内容详情
git checkout <filename>
前置条件没有 commit 到本地仓库,撤销filename文件在工做区的修改到最近一次git add 或 git commit时的内容,就是清空当前工做区的修改
git reset --mixed <commit-id>
没有 push 到远端以前,回滚到指定 commit-id , mixed 是git默认的回滚方式,会清空暂存区保留工做区。如回滚前有两个 commit-id
回滚后以下图:
文件显示没有被 add 到缓存区,可是保留了该文件, 并将 commit-id 擦除,擦除的 commit-id 能够恢复reflog
git reset --soft <commit-id>
reflog
git reset --hard <commit-id>
该命令会同时清除工做区和暂存区,并将 commit-id 擦除,擦除的 commit-id 能够恢复reflog
git revert <commit-id>
在已经将代码 push 到远端后,回滚时使用该命令,注意指定的是要回滚的 commit-id , 回退结束后任何内容都不会保留。git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,可以抵消要被revert的内容。
git merge <branchname>
开始前请切换你的 target 分支 ,执行该命令会将 <source branch> 代码合并。缺点:git 默认是以 fast-forward 方式进行合并,属于“快进方式”,这种状况若是删除分支,则会丢失分支信息。由于在这个过程当中没有建立commit。
git merge --no-ff <branch name>
和上一条命令的区别在于下图
tag 的做用是对某个提交点打上标签,发布版本后打tag,便于之后回滚特定版本。tag 是对某一版本的记录,tag就是一个只读的 branch ,通常为每个可发布的里程碑版本打一个tag
git tag v1.1.0
在本地对当前分支打 tag
git push origin --tag
将建立的 tag 提交至远端
git tag -d v1.0.0
删除本地tag
git push --delete origin v1.0.0
删除远端的 tag
git show <tag name>
SVN | Git | 说明 |
---|---|---|
svn checkout | git clone | 检出项目 |
svn update | git pull git fetch | 更新 |
svn commit | git commit git push | 提交 |
svn add | git add | 添加 |
svn mv | git mv | 移动 |
svn rm | git rm | 删除 |
svn status | git status | 查看状态 |
svn log | git log | 查看log |
svn diff | git diff | 查看差别 |
svn revert | git checkout git reset git revert | 回滚 、撤销 |
svn copy | git branch | 且分支 |
svn switch | git checkout | 切换分支 |
svn copy | git tag | 建立tag |
svn merge | git merge | 合并分支 |
参考文档