git branch
查看本地分支
1
2
3$ git branch
* br-2.1.2.2
master查看远程分支
1
2
3
4
5$ git branch -r
origin/HEAD -> origin/master
origin/feature/IOS_visualtrack
origin/feature/android_visualtrack
origin/master查看所有分支
1
2
3
4
5
6
7
8$ 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/masterPS: git branch -r 无法获取远程分支,ui可以看见分支但是git 命令无法查看
原因 git branch -a 这条命令并没有每一次都从远程更新仓库信息,我们可以手动更新一下1
2git fetch origin
git branch -a切换分支
1
2
3
4
5
6
7
8
9$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/Release
remotes/origin/master
$ git checkout -b myRelease origin/Release
Branch myRelease set up to track remote branch Release from origin.
Switched to a new branch 'myRelease'合并分支
合并前要先切回要并入的分支
以下表示要把issue1234分支合并入master分支1
2
3
4
5$: git checkout master
$: git merge issue1234
Merge made by recursive.
README | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)撤消上一次commit的内容(该操作会彻底回退到某个版本,本地的源码也会变为上一个版本的内容)
1
git reset --hard <commit-id>
git commit -m 注释换行
git commit -m 注释可以通过单引号来换行,比如:1
2
3
4
5
6
7$ git commit -m '
> 1.aaaaa
> 2.bbbb
> '
[master b25154b] 1.aaaaa 2.bbbb
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 ss.txt通过git commit –amend 命令可以查看到刚刚的log信息为
1
21.aaaaa
2.bbbb
git diff
工作目录 vs 暂存区
1
2
3git diff <filename>
意义:查看文件在工作目录与暂存区的差别。如果还没 add 进暂存区,则查看文件自身修改前后的差别。也可查看和另一分支的区别。
git diff <branch> <filename>暂存区 vs Git仓库
1
2
3git diff --cached <filename>
意义:表示查看已经 add 进暂存区但是尚未 commit 的内容同最新一次 commit 时的内容的差异。 也可以指定仓库版本
git diff --cached <commit> <filename>工作目录 vs Git仓库
1
2git diff <commit> <filename>
意义:查看工作目录同Git仓库指定 commit 的内容的差异。<commit>=HEAD 时:查看工作目录同最近一次 commit 的内容的差异。Git仓库 vs Git仓库
1
2git diff <commit> <commit>
意义:Git仓库任意两次 commit 之间的差别。扩展:
以上命令可以不指定,则对全部文件操作。
以上命令涉及和 Git仓库 对比的,均可指定 commit 的版本。
HEAD 最近一次 commit
HEAD^ 上次提交
HEAD~100 上100次提交
每次提交产生的哈希值
git reset
git reset –soft
将HEAD引用指向给定提交。索引(暂存区)和工作目录的内容是不变的,在三个命令中对现有版本库状态改动最小。git reset –mixed(git reset默认的模式)
HEAD引用指向给定提交,并且索引(暂存区)内容也跟着改变,工作目录内容不变。这个命令会将索引(暂存区)变成你刚刚暂存该提交全部变化时的状态,会显示工作目录中有什么修改。git reset –hard
HEAD引用指向给定提交,索引(暂存区)内容和工作目录内容都会变给定提交时的状态。也就是在给定提交后所修改的内容都会丢失(新文件会被删除,不在工作目录中的文件恢复,未清除回收站的前提)。
git rebase
- git pull –rebase
如果远程git服务器仓库分支已经有了更新上,通常git pull时候将会默认执行merge合并提交。相当于执行两个操作1
2
3
4
5
6
7
8
9
10
11
12git fetch origin
git merge origin/master
实际上除了合并外还有一种方法,那就是执行rebase来同步变化,它通常更有用,git提交历史也更清晰,
rebase方法需要显性指定--rebase参数:
git pull --rebase ,他相当执行:
git fetch origin
git rebase origin/master
合并方法更简单,更容易理解。但是很多时候我们更需要的是rebase,我们也可以通过设置,设置rebase为
pull时候默认执行的动作:git config --global pull.rebase true