废话:Git,是分布式版本控制系统,在多人开发的模式下,相信很多人都在用高大上的git,git是目前版本控制系统中非常非常好的。本文不会详细介绍git的历史、发展和功能,都是干货,如果想详细了解git可以看廖雪峰的文章,写的非常好,我也是在这里学习的。
git命令列表:
git status
查看当前仓库的状态,查看修改和未提交的文件。
git diff
查看工作区与暂存区的区别。
git diff fileName
查看对fileName文件做了哪些修改,不写的话就会列出所有修改的文件。
git diff HEAD --fileName
查看工作区与上一条提交的区别。注:从来没有被 add 过 的文件,untracked files 并不会显示出来。
git diff --staged 或 git diff --cached
查看暂存区与最新提交的区别。
git add fileName
将fileName工作区的内容添加到暂存区,‘git add .’是将所有修改的文件的工作区内容添加。(工作区和暂存区大家自行了解吧!)
git commit -m"备注"
将暂存区的内容提交到当前库的当前分支上。
git commit --amend
发现刚刚的提交内容有错误时,并且不想再提交一次,可以在修复后使用git commit --amend。该命令会将工作区与上次提交的内容合并起来,并创建一个新的commit,将当前的commit替换掉。
git log
查看提交历史记录。
git log -p
查看每个提交中的详细修改内容。
git log --stat
查看每个提交中修改的文件。
git show commitId
查看指定提交的修改内容。不加commitId,即为最新的提交。
git show commitId 文件路径
查看指定提交的指定文件的修改内容。
git reset --hard HEAD^
回退到上一版本。‘git reset --hard HEAD^^’回退到上两个版本,以此类推。
git reset --hard commitId
回退到指定的版本,commitId可以通过git log或git reflog获取到。
git revert HEAD^
增加一个新的提交,内容与指定提交相反,达到互相抵消的效果,从而实现撤销提交。
git reflog
git命令的历史列表,记录了每次执行的git命令,包括commitId和提交信息。
git checkout --fileName
销毁fileName工作去的内容,让文件回退到最近一次git commit或git add的状态。
git checkout -b dev
在仓库中创建并切换到dev分支,dev是自己起的分支名。
git branch
列出库中的所有分支,*标注的是当前分支。
git checkout master
切换到master分支。
git merage dev
在master分支上执行该命令,就是将dev分支的内容合并到master上。
git branch -d dev
删除dev分支。
git merage --no-ff -m"备注" dev
在执行git merage命令合并分支时,在没有冲突的情况下,默认采用Fast forward模式进行合并。该命令是禁止Fast forward模式,并会创建一个commit。
git stash
将当前分支的当前工作现场储藏,储藏后git status查看不到修改状态。
git stash list
储藏列表。
git stash apply
恢复储藏的内容,恢复后stash内容不删除,列表中还存在。
git stash pop
恢复储藏内容,恢复后stash内容删除,列表中不存在。
git stash apply stash@{i}
恢复指定的储藏内容,i是列表中的序号。
git branch -D dev
强行删除dev分支,分支在未被合并的情况下执行‘git branch -d dev’删除会失败,需要强行删除,删除后dev的修改会丢掉。
git remote
查看远程库的信息。
git remote -v
查看远程库更加详细的信息,抓取(fetch)和推送(push)的地址。
git push origin dev
将本地仓库分支的所有提交推送到远程仓库对应的分支上面。
git push origin dev -f
强制将本次提交推送到远程仓库。
git tag
查看当前分支下所有的tag。
git tag v1.0
打一个新的tag:v1.o,默认是打在最新提交的commit上。
git tag v1.0 commitId
将tag打在指定的commit上。
git show v1.0
查看tag的信息,如时间、作者、commitId、说明等。
git tag - v1.0 -m“说明信息” commitId
创建带有说明的tag。
git tag -s v1.0 -m"说明信息" commitId
通过私钥签名打tag。
git tag -d v1.0
删除指定的tag。(本地)
git push origin v1.0
将指定的tag推送到远程。
git push origin --tags
将本地所有为推送至远程的tag,一次性推送至远程。
git tag -d v1.0
删除本地的tag。
git push origin :refs/tags/v1.0
删除已经推送至远程的tag,先要将本地的删除。
git merge --abort
取消本次merge操作。
git config --global alias.st status
配置git status命令的别名,--global表示全局有效,不写的话就只在当前库有效。alias.st,st是自定义的,代替status,配置后git st = git status.
git config --global alias.co checkout
git checkout的别名。
.gitignore
存放git提交忽略的文件,在gitignore中配置过的文件,通过git status无修改状态,git commit也不会被提交,不过可能会没用,执行git rm --cached fileName从staged移除之后再试试。
.git/config
别名的配置都存在了这个文件中,可以在里面直接修改或删除某个git命令的别名。
git clean -f
删除当前目录下未被track的文件,但是不会删除gitignore中指定的文件。
git clean -df
删除当前目录下未被track的文件和文件夹,但是不会删除gitignore中指定的文件和文件夹。
git clean -xf
删除当前目录下所有未被track的文件和,不管是否是gitignore中指定的文件和文件夹。
git show commitid 或 git diff commitid^!
查看某次commit的具体修改。