命令
|
说明
|
git diff
|
显示版本库所有文件的改动内容,但不包括版本外的文件
|
git status
|
树状显示
版本库的大体情况,如哪些文件有改动,哪些还没加到版本库
|
git log
|
查看提交日志
|
git clone <库地址>
|
克隆远程版本库到本地
|
git fetch |
同步共享版本库的更新内容到本地版本库 |
git add | 索引记录要提交的文件,在git commit时提交 |
git commit | 提交改动到本地版本库 |
git push |
同步本地版本库到共享版本库
|
git remote
|
列出所有远程主机
|
git branch <分支名>
|
新建分支 |
git checkout <分支名> |
切换到分支(设置某个分支为工作目录)
|
git checkout -b <分支名>
|
检出分支,等效于 git branch <分支名> && git checkout <分支名>
|
git merge <分支名> |
合并某个分支到
工作目录
|
git pull
|
同步共享版本库到本地版本库,并且合并到当前工作目录。等同于 git fetch 加上 git merge <分支名>
|
git blame |
获取文件每一行的详细修改信息,包括作者、日期和日志编号
|
建立分支
|
$ git branch branch1
|
列出所有分支
|
$ git branch
branch1
* master
以上,*表示当前在使用的分支,即工作目录所在的分支。
如果是远程仓库github的分支情况:
$ git branch -r
origin/branch1
origin/master
|
切换分支
|
$ git checkout branch1
Switched to branch 'branch1'
相当于把branch1作为当前分支,可以 git branch 看下变化
|
删除分支
|
$ git branch -d branch1
以上命令,git会检查该分支是否已合并到上游分支,如果没有,则不能删除分支。
但如果真的要删除该分支,使用 -D 参数强行删除:
$ git branch -D branch1
如果想删除github上的分支 branch1,
$ git push origin --delete branch1
或者是
$ git push origin :branch1
|
重命名分支
|
$ git branch -m branch1 branch2
|
合并分支
|
git有三种合并分支方式,straight merge, squashed commits 和 cherry-picking
区别如下:
1、直接合并(straight merge)
将某分支所有的历史记录全部合并到当前分支,原来分支有多少个commit,当前分支就增加多少条日志
命令如下:
$ git merge branch1
2、拼凑合并(squashed commits)
将某分支上的所有的历史记录合成一条日志提交,这样的话,当前分支无法看到该分支每次的提交记录。
命令如下:
$ git merge --squash branch1
$ git commit -m 'branch1 merge'
3、挑选合并(cherry-picking)
将分支的某些提交日志合并到当前分支
命令如下:
$ git cherry-pick 7654321
以上,7654321是提交日志的hash值,可以从git log 查到,本来是40位,但git通常需要前面7位就可以识别了。
如果需要合并多条日志,但不想git每次都立刻合并,可以改下这个命令:
$ git cherry-pick -n 7654321
|
提交到远程分支
|
提交到远程仓库github的分支 branch1,分支不存在会自动创建
$ git push origin branch1
|
导出分支
|
类似svn export,例如导出master分支:
$ git archive master -o ../master.zip
|
matching
|
如果 git push 没有指定分支,git 会推送所有远程分支对应的本地分支
|
simple
|
如果 git push 没有指定分支,git 只推送当前分支
|