我这一生都是坚定不移的唯物主义者
唯有你 我希望有来生
设置name email
$ git config --grobal user.name "Your Name"
$ git config --grobal user.email "email@example.com"
查看name email
$ git config user.name
$ git config user.email
创建版本库(repository)
$ mkdir learngit
$ cd learngit
$ pwd
$ git init
$ ls -ah
添加提交
$ git add readme.txt
$ git commit -m "wrote a readme file"
查看状态
$ git status
查看不同
$ git diff readme.txt
$ git diff HEAD -- readme.txt
版本回退
$ git log
$ git log --pretty=oneline
$ git reset --hard HEAD^
$ git reset --hard HEAD^^
$ git reset --hard HEAD~100
$ git reset --hard 版本号 1094a
记录命令
$ git reflog
撤回工作区修改
$ git checkout -- readme.txt
撤回暂存区修改
$ git reset HEAD readme.txt
$ git checkout -- readme.txt
撤回版本库修改
$ git reset --hard HEAD^
删除文件
$ git rm test.txt
$ git commit -m "remove test.txt"
撤回误删
$ git checkout -- test.txt
本地仓库和GitHub仓库关联,在本地仓库运行命令:
$ git remote add origin git@... ssh
$ git push -u origin master
加了参数-u后,以后即可直接用git push 代替git push origin master
$ git push
从远程库克隆
$ git clone git@... ssh
创建分支
$ git checkout -b dev
$ git branch dev
$ git checkout dev
$ git switch -c dev
查看分支
$ git branch
合并分支
$ git merge dev
$ git merge --no-f -m "merge with no-f" dev
删除分支
$ git branch -d dev
查看分支合并情况
$ git log --graph --pretty=oneline --abbrev-commit
选项 说明
-p 按补丁格式显示每个更新之间的差异。
--stat 显示每次更新的文件修改统计信息。
--shortstat 只显示 --stat 中最后的行数修改添加移除统计。
--name-only 仅在提交信息后显示已修改的文件清单。
--name-status 显示新增、修改、删除的文件清单。
--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
--graph 显示 ASCII 图形表示的分支合并历史。
--pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。
工作现场储存起来
$ git stash
恢复储存
恢复同时把stash删掉
$ git stash pop
查询stash
$ git stash list
选择恢复到那个stash
$ git stash apply stash@{0}
删除stash
$ git stash drop
复制一个特定提交到当前分支
$ git cherry-pick 4c805e2