git
参考 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
- 版本回退
git reset --hard HEAD^ 或者git reset --hard 版本号前几位
查看命令历史 git reflog
- 撤销修改
git checkout -- readme.txt
一种是
readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;一种是
readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。总之,就是让这个文件回到最近一次
git commit
或git add
时的状态。git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原” 把暂存区的文件重新放回工作区 git reset HEAD file
- 删除
git rm test.txt
- 关联远程仓库 git remote add origin git@github.com:michaelliao/learngit.git
将本地仓库推送 git push -u origin master 我们第一次推送
master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。- 推送其他分支
git push origin dev
git clone git@github.com:michaelliao/gitskills.git
git checkout -b dev
git checkout
命令加上-b
参数表示创建并切换,相当于以下两条命令:$ git branch dev $ git checkout dev Switched to branch 'dev'
- 合并指定分支到当前分支
git merge dev
- 删除
dev
分支git branch -d dev
-
查看分支:
git branch
创建分支:
git branch <name>
切换分支:
git checkout <name>
创建+切换分支:
git checkout -b <name>
合并某分支到当前分支:
git merge <name>
删除分支:
git branch -d <name>
-
- 把当前工作现场“储藏”起来
git stash
- 查看
git stash list
- 恢复 git stash apply 恢复后,stash内容并不删 需要用
git stash drop
来删除git stash pop
,恢复的同时把stash内容也删了 -
你可以多次stash,恢复的时候,先用
git stash list
查看,然后恢复指定的stash,用命令:git stash apply stash@{0}
- 强行删除分支 git branch -D feature-vulcan
- 查看远程库的信息 git remote -v 或git remote
- 当你的小伙伴从远程库clone时,默认情况下,你的小伙伴只能看到本地的
master
分支,你的小伙伴要在dev
分支上开发,就必须创建远程origin
的dev
分支到本地,于是他用这个命令创建本地dev
分支:$ git checkout -b dev origin/dev
- 指定本地
dev
分支与远程origin/dev
分支的链接git branch --set-upstream dev origin/dev
- 抓取远程的最新提交
git pull
-
-
查看远程库信息,使用
git remote -v
; -
本地新建的分支如果不推送到远程,对其他人就是不可见的;
-
从本地推送分支,使用
git push origin branch-name
,如果推送失败,先用git pull
抓取远程的新提交; -
在本地创建和远程分支对应的分支,使用
git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致; -
建立本地分支和远程分支的关联,使用
git branch --set-upstream branch-name origin/branch-name
; -
从远程抓取分支,使用
git pull
,如果有冲突,要先处理冲突。
-
- 打一个新标签
git tag v1.0 默认标签是打在最新提交的commit上
给提交6224937打标签 git tag v0.9 6224937
- 查看标签
git tag
- 查看标签信息
git show v0.9
- 指定标签信息 git tag -a <tagname> -m "blablabla..."
- 删除
git tag -d v0.1
- 推送某个标签到远程
git push origin <tagname> 一次性推送全部尚未推送到远程的本地标签
git push origin --tags
-
如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:
git tag -d v0.9
然后,从远程删除。删除命令也是push,但是格式如下:
$ git push origin :refs/tags/v0.9
-
可以用
-f
强制添加.ignore中的文件到Gitgit add -f App.class
- 配置别名 配置Git的时候,加上
--global
是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。$ git config --global alias.co checkout $ git config --global alias.ci commit $ git config --global alias.br branch
$ git config --global alias.unstage 'reset HEAD' 把reset HEAD 设置成unstage
配置文件放哪了?每个仓库的Git配置文件都放在
.git/config
文件中:$ cat .git/config [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true precomposeunicode = true [remote "origin"] url = git@github.com:michaelliao/learngit.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master [alias] last = log -1
别名就在
[alias]
后面,要删除别名,直接把对应的行删掉即可。而当前用户的Git配置文件放在用户主目录下的一个隐藏文件
.gitconfig
中:$ cat .gitconfig [alias] co = checkout ci = commit br = branch st = status [user] name = Your Name email = your@email.com
配置别名也可以直接修改这个文件,如果改错了,可以删掉文件重新通过命令配置。
参考 http://www.jianshu.com/p/072587b47515?utm_campaign=haruki&utm_content=note&utm_medium=reader_share
git add . | 添加当前目录的所有文件到暂存区 |
---|---|
git add <dir> | 添加指定目录到暂存区,包括子目录 |
git add <file1> | 添加指定文件到暂存区 |
git commit -m <message> | 提交暂存区到本地仓库,message代表说明信息 |
---|---|
git commit <file1> -m <message> | 提交暂存区的指定文件到本地仓库 |
git commit --amend -m <message> | 使用一次新的commit,替代上一次提交 |
git branch | 列出所有本地分支 |
---|---|
git branch -r | 列出所有远程分支 |
git branch -a | 列出所有本地分支和远程分支 |
git branch <branch-name> | 新建一个分支,但依然停留在当前分支 |
git checkout -b <branch-name> | 新建一个分支,并切换到该分支 |
git branch --track <branch><remote-branch> | 新建一个分支,与指定的远程分支建立追踪关系 |
git checkout <branch-name> | 切换到指定分支,并更新工作区 |
git branch -d <branch-name> | 删除分支 |
git push origin --delete <branch-name> | 删除远程分支 |
git fetch <remote> | merge之前先拉一下远程仓库最新代码 |
---|---|
git merge <branch> | 合并指定分支到当前分支 |
git reset —soft <commit> | 只改变提交点,暂存区和工作目录的内容都不改变 |
---|---|
git reset —mixed <commit> | 改变提交点,同时改变暂存区的内容 |
git reset —hard <commit> | 暂存区、工作区的内容都会被修改到与提交点完全一致的状态 |
git reset --hard HEAD | 让工作区回到上次提交时的状态 |
git push <remote><branch> | 上传本地指定分支到远程仓库 |
---|---|
git push <remote> --force | 强行推送当前分支到远程仓库,即使有冲突 |
git push <remote> --all | 推送所有分支到远程仓库 |
git status | 显示有变更的文件 |
---|---|
git log | 显示当前分支的版本历史 |
git diff | 显示暂存区和工作区的差异 |
git diff HEAD | 显示工作区与当前分支最新commit之间的差异 |
git cherry-pick <commit> | 选择一个commit,合并进当前分支 |