说明 | 时间 |
---|---|
首次发布 | 2018年10月14日 |
最近更新 | 2019年08月19日 |
撤销更改
-
git checkout -- <文件>
丢弃工作区的改动 -
git reset HEAD <file>
把暂存区的修改撤销掉(unstage),重新放回工作区 -
git reset --hard HEAD^
从本地代码库强制回滚提交,--soft
可以把回滚的代码放到暂存区。上一个版本用HEAD^
表示,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。 -
git reset --hard commit_id
强制回滚到指定提交,可以是未来或过去的某次提交。
小结:
-
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。 - 穿梭前,用
git log
可以查看提交历史,以便确定要回退到哪个版本。 - 要重返未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本。
分支的创建和合并
git checkout -b 分支名
创建并切换到该分支;相等于下面git branch 分支名
+git checkout 分支名
两个命令。-
git branch 分支名
创建分支-r 查看远程分支列表 -a, --all 列出远程跟踪及本地分支 -d, --delete 删除完全合并的分支 -D 强行删除 --list 列出分支名 -f, --force 强制创建、移动/重命名、删除
git checkout 分支名
切换分支-
git merge
合并指定分支到当前分支,如git merge dev
--no-ff 用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而`fast forward`合并就看不出来曾经做过合并。如`git merge --no-ff -m "merge with no-ff" dev`
比较文件差异
git diff 比较工作区与暂存区的区别
git diff --cache 比较暂存区与 HEAD 的文件差异
删除未追综文件
git clean -df
-f, --force 强制
-d 删除整个目录
贮藏
git stash
git stash 贮藏代码
git stash save "备注" 贮藏代码
git stash list 贮藏代码的列表
git stash pop 将当前stash中的内容弹出(删除贮藏),并应用到当前分支对应的工作目录上
git stash apply 将当前stash的内容应用于当前目录,stash内容并不删除,需要用git stash drop来删除
git stash drop + 名 从堆栈中移除某个指定的stash
git stash clear 清除堆栈中的所有内容
git stash show 查看堆栈中最新保存的stash和当前目录的差异
git stash branch 从最新的stash创建分支
推送分支
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:
git push origin master
如果要推送其他分支,比如dev
,就改成:
git push origin dev
如果没有指定本地dev
分支与远程origin/dev
分支的链接,git pull
就会失败。解决方法:设置dev
和origin/dev
的链接:
git branch --set-upstream-to=origin/dev dev
$ Branch 'dev' set up to track remote branch 'dev' from 'origin'.
再pull:
git pull
小结
- 查看远程库信息,使用
git remote -v
; - 本地新建的分支如果不推送到远程,对其他人就是不可见的;
- 从本地推送分支,使用
git push origin branch-name
,如果推送失败,先用git pull
抓取远程的新提交; - 在本地创建和远程分支对应的分支,使用
git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致; - 建立本地分支和远程分支的关联,使用
git branch --set-upstream branch-name origin/branch-name
; - 从远程抓取分支,使用
git pull
,如果有冲突,要先处理冲突。
变基(rebase)
git rebase -i commit_id ==>作用:1、修改老旧的commit message,合并需要选择 `s`表示压缩;2、合并多个commit;
修改提交的message
-
修改最新的 message
git commit --amend
编辑完成后,输入
:wq
保存变更退出,就 OK 了。 -
修改老旧的 message
git rebase -i commit_id
之后,选择
r
,编辑保存即可。
git log
打印提交版本信息
--oneline 简洁显示:只显示提交信息和commit号
--graph 图形化查看分支合并情况
-nX 显示最近几次的提交信息,X代表最近几次的数字
git status [<选项>] [--] <路径规格>...
-s, --short 以简洁的格式显示状态
-b, --branch 显示分支信息
--show-stash 显示贮藏区信息
写在最后:可以查看另一篇文章git:常用命令