git 常用命令
以下介绍一些 git 常用命令:
基本设置
git config --global user.name yourName 设置用户名
git config --global user.email your_email@youremail.com 设置邮箱
$ssh-keygen -t rsa -C "your_email@youremail.com" 生成 SSH 公钥
快捷键设置
git config --global alias.st status 设置常用快捷键
git config --global alias.co checkout
git config --global alias.cm commit
git config --global alias.br branch
提交代码基本流程
git add . 把工作区的所有变化(修改的及新增的文件,但不包含删除的文件)提交到暂存区
git commit -m "commit record" 输入提交记录
git push 如果 myBranch 是远程分支,push 到远端。如果不是,不需要这一步
git checkout dev 切回 dev 分支(默认 dev 为主分支)
git pull 更新 dev 最新代码
git checkout [myBranch] 切回 myBranch 分支
git merge dev 把 dev 最新改动合并到 myBranch
git checkout dev 切回 dev 分支
git pull 及时更新代码,以免别人也往 dev 提交代码
git merge [myBranch] 把 myBranch 修改的文件 合并到 dev 分支
git push 把合并的代码推送到远端
git checkout [myBranch] 切回自己的分支继续开发
git add -u 仅把已经add文件(tracked file)及删除文件(delete)提交到暂存区,不包含新增文件。(git add --update 的缩写)
git add -A 是git add .和git add -u 的集合。(git add -all的缩写)
修改的文件暂时不需要,但是需要切分支或者更新代码
git stash 把修改的文件临时存储起来
git stash save "stash record" 临时存储加提交信息
git stash list 查看被临时存储起来的文件
git stash apply 恢复文件,但是不删除 stash 列表中的内容
git stash drop 删除 stash 文件
git stash pop 恢复并删除 stash 文件
git stash apply stash@{0} 恢复指定的 stash 文件
修改的代码不想提交了
- A 情况: 代码还在工作区
- git checkout --[filename]
- B 情况:代码在暂存区
- git reset HEAD [filename]
- git checkout --[filename]
- C 情况:代码在本地仓库
- git reset HEAD^
- git reset HEAD^^
- git reset HEAD~100
删除没有 git add 的文件
git clean -n 显示将要删除的文件及目录
git clean -f 删除文件
git clean -df 删除文件及目录
删除已经 git add 的文件
git rm [filename] 删除文件
git rm -r [fileFolder] 删除 fileFolder 文件夹
查看分支
git branch 查看本地分支
git branch -r 查看所有远程分支
git branch -a 查看本地和远程分支
重命名分支名
git branch -m [old-branch-name] [new-branch-name] 本地分支重命名
git branch -m [old-local-branch-name] [new-local-branch-name] 重命名远程分支对应的本地分支
git push origin :[old-local-branch-name] 删除远程分支
git push origin [new-local-branch-name]: [new-local-branch-name] 上传新命名的本地分支(把本地分支上传到远程)
删除本地或者远程分支
git branch -d [myBranch] 删除本地分支
git branch -D [myBranch] 强制删除本地分支
git branch -d -r [myBranch] 删除远程分支
git branch -D -r [myBranch] 强制删除远程分支
git push origin : [myBranch] 删除远程分支
git fetch --prune 清理本地陈旧分支
新建分支
git branch -f [myBranch] 新建一个分支不切换至新分支
git branch -b [myBranch] 新建一个分支并切换至新分支
git push origin [myBranch] 把本地分支推送到远端分支
git branch --set-upstream [myBranch] origin/[myBranch] 建立本地分支与远端分支的关系
git branch --unset-upstream [myBranch] 取消本地分支与远端分支的关系
把某一次commit的文件提交到另外一个分支
git cherry-pick commit-id 把某一次commit 合并到另外一个分支
git cherry-pick 多个commit-id 把多次commit 合并到另外一个分支(合并顺序以提交为顺序)
git cherry-pick --continue 出现冲突,解决冲突继续合并
git cherry-pick --abort 取消此次合并
创建标签(以版本发布)
git tag [tagName] 创建轻量标签
git tag -a [tagName] -m "commit record" 创建附注标签
git checkout [tagName] 切换标签
git show [tagName] 查看标签信息
git tag -d [tagName] 删除本地标签
git tag -a [tagName] commit -m "commit record" 给指定的 commit 打标签
git push origin [tagName] 将 [tagName] 标签推送到远端
git push origin --tags 将本地所有标签一次性提交到远端
git push origin --delete tag [tagName]
git push origin :[tagName] 删除远程标签
查看提交历史记录
git log --stat 展示修改的文件及每个文件修改了多少行
git log -5 显示最新5次修改记录信息
git log -p 按补丁格式显示每个更新之间的差异
git log --pretty=online 把commit 描述及commit-id 一行展示
git log --shortstat 只展示修改了多少个文件不具体显示修改哪些文件
git log --author=张三 展示 张三 这个用户的修改历史
git reflog show --date=iso branch-name 查看分支创建时间
版本回退
1. 没有 push
git reset --mixed 会保留源码,只是将git commit 和 index 信息回退到某个版本
git reset --soft 会保留源码,只回退到commit 信息到某个版本,不涉及 index 的回退,如果还需要提交,直接 commit 即可
git reset --hard 源码也会回退到某个版本, commit 和 index 都会回退到某个版本(这种方式是改变本地代码仓库源码)
2. 已经 push
git revert 用一个新提交来消除一个历史提交所做的任何修改
git revert commit_id 回退到某个版本
注:git revert 是用一次新的commit 来回滚之前的commit, git reset 是直接删除指定的commit
*** 待续 ***
参考文献
1. http://yijiebuyi.com/blog/8f985d539566d0bf3b804df6be4e0c90.html