本篇不介绍绑定邮箱和公钥等操作。
场景: test/目录下有文件 a.txt,
1.将test目录被git所管理,cd 进入当前目录:
git init
2.将文件a.txt添加到暂存区(也可以用 .代替a.txt, .是当前目录下所有文件):
git add a.txt
3.从暂存区回退到工作区,其中a.txt是已经执行过 add的文件:
git rm --cached a.txt
4.从暂存区到对象区:
git commit -m "注释内容"
5.从对象区到远程仓库(master是默认分支,可以换为任何分支):
git push origin master
6.查看git日志:
git log
6.2如果只查看前n次:
git log -n
6.3按行显示:
git log —pretty=oneline
6.4自定义日志格式:
git log —pretty=format:"%h - %an , %ar : %s"
7.如果a.txt被修改了并且提交了,撤销修改(还原到已提交状态):
git checkout -- a.txt
8.查看状态:
git status
9.删除已提交的文件:
git rm a.txt # 删除之后文件会放到暂存区,因此还需要一步
git commit -m "删除a.txt" # 这样就能彻底删除了,可以git status验证
10.还原:
git reset HEAD a.txt
git checkout -- a.txt
11.重命名:
git mv 重命名
12. 注释重写(重新提交说明):
git commit --amend -m "修正内容"
13.屏蔽文件:
touch .gitignore
然后直接编辑 .gitignore,比方说要屏蔽a.txt ,直接在里面写a.txt就行了,文件支持通配符,如:全部txt,排除a.txt :
*.txt
!a.txt
参考图片:
14.分支操作
git branch # 查看分支
git branch branch_name # 创建分支
git checkout branch_name # 切换分支
git checkout -b branch_name # 创建分支并切换
git branch -d # 删除分支(不能删除当前分支、包含为合并内容的分支)
git branch -D # 强制删除分支
git branch -v # 查看分支最近提交的情况
15.合并分支
git merge branch_name # 分支branch_name合并到当前分支
合并的时候默认使用的是 fast forward,本质就是分支指针的移动,跳过中间的commit,但仍然会保存;两个分支 fast forward 归于一点commit,丢失分支信息。如果不想使用fast forward,可以禁止: git merge --no-ff branch_name
,主动合并的分支不会归于一点,反而会前进一步,分支信息完整。
16.版本穿梭
git reset --hard HEAD^^ # 多少个尖括号就是回退前多少次
git reset --hard HEAD~n # 回退到前n次
git reset --hard HEAD sha1值 # 通过sha1值,直接回退,通常结合 git reflog使用
git reflog # 记录所有操作的日志,可以查看sha1值从而实现后悔操作