git 命令小结
1. git init
说明:
把这个目录变成Git可以管理的仓库
示例:
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
2. git add <file>
说明:
提交所有改动到暂存区
参数:
-A 提交所有
3. git commit
说明:
提交所有暂存区改动至当前分支下
参数:
-m "提交的注释内容"
-a add所有修改到暂存区后,再做commit操作,注意不包括新增加文件。
示例:
git commit -a -m "提交BUS路由寻址重构"
4. git status
说明:
查看当前状态
5. git diff
说明:
显示工作区与提交区的不同,两个文件的不同等。
参数:
git diff <某个版本号> <某个版本号> <file> 对比两人个版本号的不同
6. git log
说明:
命令显示从最近到最远的提交日志,
参数:
--pretty=oneline 表示一行显示日志
7. git reset
说明:
把当前版本回退,也可以把暂存区的修改回退到工作区。
参数:
--hard <commit id>
特别说明:
HEAD 表示当前分支下当前版本,HEAD^ 表示上一版本,HEAD^^ 表示上上版本,HEAD~10 表示向上第10个版本
8. git reflog
说明:查看命令历史,可以查看回退后的未来版本,
9. git checkout -- <file>
说明:把修改撤销回到最近一次git commit或git add时的状态。注意:--表示撤销,不带--表示创建一个新分支的命令
示例:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
10. git rm
说明:
从版本库中删除该文件,使用git rm删掉,再用git commit
11. 创建ssh-key
示例:
$ ssh-keygen -t rsa -C "youremail@example.com"
12. git remote
说明:
与远程服务器操作,无任何参数时,查看远程库列表
参数:
add <远程名称,如origin> <ssh:git,远程地址> 本地关联远程的库
示例:
git remote add origin git@server-name:path/repo-name.git
13. git push
说明:
提交修改到远程服务器
参数:
-u 本地与服务器关联后,第一次提交,需要加上-u参数
<远程名称> <分支名称> 按远程地址和分支名称提交
示例:
git push -u origin master
第一次推送master分支的所有内容,此后,使用命令git push origin master推送最新修改
14. git clone
说明:
远程库的克隆
15. git checkout -b <新分支名称> <关联到远程分支:origin/dev>
说明:
创建并切换到<新分支名称>
示例:
git checkout -b dev
相当于下面两条命令
git branch dev
git checkout dev
16. git branch
说明:
列出所有分支,当前分支前会标记一个*
参数:
<新分支名称> 创建新分支
-d <分支名称> 删除分支
-D <分支名称> 强制删除分支,放弃修改
--set-upstream-to <本地分支:dev> <远程分支:origin/dev> 把本地分支关联到远程分支
17. git checkout <分支>
说明:
切换分支
18. git merge <被合并分支>
说明:
分支合并,把<被合并分支>合并到当前分支来,默认使用ff模式
特别说明:
Fast-forward合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。 这种模式下,删除分支后,会丢掉分支信息。即无法看到分支的log信息等。
--no-ff方式,是指强制禁用Fast-forward方式,这样分支信息也会被合并到当前分支。
示例:
git merge --no-ff -m "merge with no-ff" dev
19. 冲突解决--conflict
说明:
分支合并时,发生的冲突,git无法执行“快速合并”,只能试图把各自的修改合并起来。若自动合并发生了冲突,必须手动解决冲突后,再提交,再合并。
20. git stash
说明:
把当前工作现场”储藏“起来。一般用于你想跳转到其他分支,但又不想提交当前分支的代码。
参数:
list 查看当前分支下的stash的列表
apply 恢复
drop 删除
pop 恢复的同时,把stash内容也删除了
示例:
git stash pop
提取最近一个stash,并清除当条stash
git stash pop stash@{0}
提取stash@{0},并清除
21. git tag
说明:
标签操作,不带参数时,可查看当前分支的所有标签列表
参数:
<tagname> 对当前版本打上标签
<tagname> <commit id> 给<commit id>的历史提交操作打上标签
-d <tagname> 删除标签
22. git show
说明:
显示最新一次提交的详情
参数:
<tagname> 查看标签信息
23. git push <远程名称> <tagname>
说明:
把标签<tagname>推送到<远程名称>
参数:
--tags 一次性推送全部尚未推送到远程的标签
<远程名称> :refs/tags/<tagname> 删除一个远程标签
示例:
git push origin --tags
推送所有未推送的标签
git push origin :refs/tags/<tagname>
删除一个远程标签