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 

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 

  代码回滚:Reset、Checkout、Revert的选择

 

    

 

 

 

*** 待续 ***

 

 

  参考文献

  1. http://yijiebuyi.com/blog/8f985d539566d0bf3b804df6be4e0c90.html

  2. http://blog.csdn.net/wh_19910525/article/details/7468549

  3. https://github.com/geeeeeeeeek/git-recipes/wiki/5.2-%E4%BB%A3%E7%A0%81%E5%9B%9E%E6%BB%9A%EF%BC%9AReset%E3%80%81Checkout%E3%80%81Revert%E7%9A%84%E9%80%89%E6%8B%A9

posted @ 2017-06-25 17:58  娇小优  阅读(267)  评论(0编辑  收藏  举报