目录
日常使用的6个命令
图片来源:阮一峰《常用 Git 命令清单》
单分支
git status
展示在哪个分支。查看对repo哪些文件进行修改,这里是还没有经过git add
操作的
git add -u
添加已经在 repo 中,但进行修改的文件。比如下两个命令好用且安全得多:
- 添加所有文件 git add . → \rightarrow → 容易误加文件
- 手动添加一堆文件 git add → \rightarrow → 效率太低
git show <commit-id>
显示某条 commit 的修改,不加 commit id, 则默认显示最近一条 commit
git diff <filename>
还没 commit 前,查看修改的内容,filename 不加则默认显示所有文件的 diff。
注意git status
不显示被修改的内容,这是二者的区别
git stash
缓存在 repo 里但做过修改的文件,和git add
的区别在于这种缓存是暂时的,并不希望形成一个节点。例如项目开发到一半,需要git pull
最新代码或是hotfix一些小的bug。使用git stash pop
恢复这些修改
git blame <filename>
可以看到某个文件每一行的最后修改者,方便追朔问题。
比如看到某一行代码不太懂,可以git blame
,然后直接去询问最后一个修改者
查看commit记录
git log
(包括 commit-id)
回滚
git reset <filename>
用于去掉那些 git add 但还没 git commit 的文件;
git reset --hard <commit-id>
,回滚代码到某个 commit 状态
git reset --hard HEAD~3
表示回退3次
多分支
查看有哪些分支
git branch -a
切换分支
git checkout xxx
另一个版本的总结
git init
git add haha.txt
git commit -m “wrote a readme file”
git status //看哪个文件变了
git diff //看变了啥
git diff HEAD --hahaha.txt
git log //你都改了啥
git log --pretty=oneline //显示成一行
git reset --hard HEAD^ //回退一次
git reset --hard HEAD~100 //回退一百次
git reset --hard 3628164
git reflog //所有的log
git checkout – hahaha.txt //丢掉工作区的修改
git reset HEAD file //丢掉暂存区的东西
git rm lala.txt //删除
远程管理:
git remote add origin https://github.com/YexiaoGil/learngit.git //远程关联
git push -u origin master //本地库的所有内容推送到远程库 -u upstream 是由于第一次推送master分支
git clone http://github.com/YexiaoGil/gitskills.git //克隆到本地
分支管理:
git checkout -b dev //创建分支并切换 相当于 git branch dev
git checkout dev
git checkout master //转到master分支
git merge dev //把dev分支的工作合并到master分支上
git branch //查看分支
git branch dev //创建dev分支
git branch -d dev //删除dev分支
git log --graph --pretty=oneline --abbrev-commit //查看合并情况
git merge --no-ff -m “hahaha” dev //no-ff 禁用Fast forward -m由于要创建一个新的commit
git stash //把工作区的东西临时存放起来
git stash apply //恢复工作去但不删除
git stash drop //删除工作区
git stash pop //恢复同时删除
git stash apply stash@{0} //指定恢复内容
git branch -D //强行删除
git remote //显示远程库
git remote -v //显示更新信息
git pull //把最新提交的东西抓下来
git branch -set-upstream dev origin/ //把本地分支与远程分支链接起来
协作补充:
git fetch origin development:development //拉取远程的一个叫develop的分支,并在本地创建一个叫develop的分支和远程的分支匹配