git reset HEAD
取消暂存的文件,暂存区的目录树会被重写,被master分支指向的目录树所替换,工作区不受影响。
git rm --cached
直接从暂存区删除文件,工作区则不做出改变。
git checkout或者git checkout--
会用暂存区全部或指定的文件替换工作区的文件。
git checkout HEAD或者git checkout
HEAD <file>
会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。
git reset --hard HEAD^
版本回退(或某一次的commit id)
git reset HEAD~1
最近一次提交放回暂存区, 并取消此次提交
git reflog
记录你每一次的命令。
git add <file>
暂存(跟踪)一个新文件
对每个文件使用git add命令来将其标记为冲突已解决。一旦暂存这些原本有冲突的文件,Git就会将它们标记为冲突已解决。
git status
查看哪些文件处于什么状态。
git status -s或git status--short
更为紧凑的格式输出。
git diff
想知道具体修改了什么地方。
将通过文件补丁的格式显示具体哪些行发生了改变。
git diff --cached
查看已暂存的将要添加到下次提交里的内容。
git commit -m
提交更新。
git commit -a -m
自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add。
git commit --amend
有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。
git rm
从暂存区域移除文件。
git rm-f
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f。
git rm--cached
我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中,使用--cached选项。
git mv file_from file_to
移动文件。
$ mv README.md README
$ git rm README.md
$ git add README
git log
回顾下提交历史。
-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 log --pretty=format 常用的选项
%H:提交对象(commit)的完整哈希字串
%h: 提交对象的简短哈希字串
%T:树对象(tree)的完整哈希字串
%t:树对象的简短哈希字串
%P:父对象(parent)的完整哈希字串
%p:父对象的简短哈希字串
%an:作者(author)的名字
%ae:作者的电子邮件地址
%ad:作者修订日期(可以用 --date= 选项定制格式)
%ar:作者修订日期,按多久以前的方式显示
%cn:提交者(committer)的名字
%ce:提交者的电子邮件地址
%cd:提交日期
%cr:提交日期,按多久以前的方式显示
%s:提交说明
-(n):仅显示最近的 n 条提交
--since, --after:仅显示指定时间之后的提交。
--until, --before:仅显示指定时间之前的提交。
--author:仅显示指定作者相关的提交。
--committer:仅显示指定提交者相关的提交。
--grep:仅显示含指定关键字的提交
-S:仅显示添加或移除了某个关键字的提交
git log --pretty=format:"%h %s"--graph
ssh-keygen -t rsa -C"youremail@example.com"
三次回车即可生成ssh key
可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,id_rsa.pub是公钥。
git remote add origingit@gitee.com:whiteblue1216/TestGit.git
添加远程仓库(git给远程库起的默认名称是origin)
git remote -v
查看远程库信息
git clone -o [remote-name]
默认的远程分支名字将会是remote-name/master。
git push [remote-name] [branch-name]
推送远程仓库
git remote show [remote-name]
查看远程仓库
git remote rename pb paul
将 pb 重命名为 paul,值得注意的是这同样也会修改你的远程分支名字。 那些过去引用 pb/master 的现在会引用 paul/master。
git remote rm paul
移除远程仓库
git tag
列出标签
git tag -l 'v1.8.5*'
查找具体标签
git tag v1.0
创建轻量级标签
git show v1.4 -lw
查看标签
git tag -a v1.4 -m 'my version 1.4’
-m选项指定了一条将会存储在标签中的信息。如果没有为附注标签指定一条信息,Git会运行编辑器要求你输入信息。
git tag -a v1.2 commitid
对历史版本打标签
git push [remote-name] [tag-name]
如果想要一次性推送很多标签,也可以使用带有--tags选项。这将会把所有不在远程仓库服务器上的标签全部传送到那里。
git checkout -b [branch-name][tag-name]
在特定的标签上创建一个新分支
git tag -d v0.9
删除标签
git push origin :refs/tags/v0.9
删除远程标签
git branch [branch-name]
创建分支
-b新建一个分支并同时切换到那个分支上。
git log --oneline --decorate
查看各个分支当前所指的对象。
git checkout [branch-name]
切换分支,这样 HEAD 就指向 branch-name 分支了
git log --oneline --decorate --graph--all
查看分叉历史,它会输出你的提交历史、各个分支的指向以及项目的分支分叉情况。
git merge [branch-name]
将[branch-name]合并到你当前所在的分支。
git merge --no-ff -m "yourcommit message" [branch-name]
禁用Fast-forward,生成一个新的commit,这样从分支历史上就可以看出分支信息。
git branch -d hotfix
删除分支
git branch
查看所有分支列表
-v查看每一个分支的最后一次提交
--merged与--no-merged这两个有用的选项可以过滤这个列表中已经合并或尚未合并到当前分支的分支。
把尚未提交的内容藏匿起来
$ git stash
# 查看藏匿区
$ git stash list
# 从藏匿区恢复(但是恢复后,stash内容并不删除)
$ git stash apply
# 删除藏匿区
$ git stash drop
# 从藏匿区恢复(同时删除)
$ git stash pop
git push [remote-name] [branch-name]
推送到远程仓库
git push originserverfix:awesomebranch
将本地的 serverfix 分支推送到远程仓库上的awesomebranch 分支
git fetch origin
这个命令查找“origin” 是哪一个服务器,从中抓取本地没有的数据,并且更新本地数据库,但不会merge(它并不会修改工作目录中的内容。它只会获取数据然后让你自己合并。大多数情况下它的含义是一个git fetch 紧接着一个git merge命令。)
git checkout -b [branch][remote-name]/[branch-name]
$ git checkout --track[remote-name]/[branch-name]
设置本地跟踪分支
git branch -u origin/serverfix
-u或--set-upstream-to
修改本地分支的上游分支
git branch -vv
查看分支跟踪信息
git pull
查找当前分支所跟踪的服务器与分支,从服务器上抓取数据然后尝试合并入那个远程分支。(git pull = git fetch + git merge)
git push origin --delete serverfix
删除远程分支