git的常用命令

git init

使用当前目录作为git仓库


git add

git add <file>将该文件添加到缓存区,如果需要添加所有的文件用git add .


git commit

使用git commit -m " "将缓存区的内容添加到版本库," "中填写本次的提交说明
git commit -am " " = git add . + git commit -m " "


git status

通过git status可以看到当前所处的分支,以及本地仓库最新更改的文件状态
Changes not staged for commit以及no changes added to commit表示有修改的文件但是并没有准备提交的修改,此时若是我们需要提交该文件,需要先git add <file>再git commit
Changes to be committed表示文件已经添加到了暂存区,但是还没提交
nothing to commit, working tree clean表示没有需要提交的修改,工作目录干净


git diff

通过git diff加文件名可以查看文件具体修改了哪些内容


git log

通过git log可以查看之前每次提交的作者、时间以及提交说明
使用git log --pretty=oneline可以看到每次提交的commit id(版本号)以及提交说明,使用q退出


git reset

通过git reset --hard HEAD^ 可以实现版本的回退,HEAD表示当前版本,HEAD^ 表示上一个版本,如果想回退到上上个版本用HEAD^^ ,^ 个数过多可以用数字表示,如HEAD^50
也可以直接使用git reset --hard + 版本号实现版本的回退或是回退后的恢复,版本号通过git log --pretty=oneline可以得到,使用时只用输入前几位的版本号即可
如果文件添加到了暂存区,但是想丢弃该暂存区中的修改可以用git reset HEAD <file>


git reflog

通过git reflog可以看到自己每一次操作的命令,也可以用于来查找之前某次版本回退前的版本号


git cheackout --

使用git checkout -- <file>可以在文件在工作区的修改撤销。分2种情况:

  • 文件修改后没有放到暂存区,那么会撤销到版本库的状态。包括如果文件误删了,但是版本库中有也可以使用
  • 文件添加到了暂存区,但是又做了修改,那么会撤回到暂存区保存的状态
    使用git checkout HEAD会用HEAD指向的master分支的文件替换暂存区以及工作区中的文件

git checkout

git checkout + 分支的名字表示切换到该分支上
git checkout -b + 分支的名字表示创建该分支并切换到该分支上


git rm

如果本地删除了一个文件,希望版本库中也同步删除,先git rm <file>,再git commit -m " "
如果希望同步删除本地和暂存区的文件用git rm -f <file>
如果希望删除暂存区的,但保留本地的文件使用git rm --cached <file>


git remote

使用git remote可以查看远程库的信息,使用git remote -v可以显示远程库更详细的信息


git clone

如果想把一个远程库中的项目直接克隆到本地使用git clone <repo>,其中repo为git仓库


git branch

查看当前所有的分支,前面标有*的是当前所处的分支
git branch <branch_name>表示新建一个分支branch_name
git branch -d + 分支名字表示删除该分支
git branch -D + 分支名字表示强行删除一个还没有被合并过的分支


git merge

当前所处分支1,使用git merge +分支2时表示将分支2上的操作与分支1合并,即分支1中指向的提交变为分支2的提交
如果需要保存分支2合并到了分支1中的信息,可以用git merge --no-ff -m " " + 分支2," "中填写此次提交合并的说明,以用于保存


git log --graph

使用git log --graph可以看到各分支的合并图


git stash

  • 直接使用git stash可以将当前未提交的工作区暂时保存
  • 使用git stash apply可以恢复工作区,但stash中的内容不删除
  • 使用git stash pop可以恢复工作区并删除stash中的内容
  • 使用git stash drop可以删除stash中的内容
  • 使用git stash list可以查看stash中保存的内容,若多次stash,可以在查看后选择恢复指定的内容

git push

使用git push origin master可以将本地版本库中的项目推送到远程库中,origin为远程库,master为版本库的分支,如果需要push其他分支可以将master改为其他分支,默认push到远程库上的是关联的分支,可以使用git branch --set-upstream-to=origin/branch-name branch-name进行关联


git rebase

若此时有2个分支


合并前分支图

A,B,C为之前的提交,模块D为远程分支origin上的提交,F、E为本地分支work的提交,此时若是要提交,首先需要将模块D和模块F合并,使用git merge可以得到


使用git merge合并后分支图

为模块D和模块F合并的模块,work分支上的模块G,在push前origin分支上是模块D,此时若是我们用git log --graph查看会出现一个闭合,不易操作和查看
但是使用git rebase后,可以得到
使用git rebase合并后分支图

模块F'为合并后的模块,work分支上是模块F',在push前origin分支上是模块D,原来模块E、F提交会被git rebase取消,然后保存为补丁patch
rebase的过程中也会出现冲突,需要去解决,解决完冲突后,用git add去更新,然后无需git commit,直接git rebase --continue,git就会继续应用余下的补丁
当需要终止rebase的行动时:git rebase --abort,本地分支会回到开始时的状态
使用rebase可以可以最大程度保证origin代码不会被错误修改


git fetch

从远程获取更新的最新的内容到本地,但不进行合并


git pull

git pull = git fetch + git merge
git pull -r = git fetch + git rebase


git tag

  • 切换到一个分支后,使用git tag <tagname>即可对该分支最新提交的commit打上该标签,如果还需要做有说明的标签的话,用git tag -a <tagname> -m " "," "内填写说明
  • 如果想对之前某次的提交打上标签,可以先用git log --pretty=oneline找到该提交的commit-id,然后使用git tag <tagname> commit-id即可
  • 使用git tag可以看到所有的标签列表,使用git show <tagname>可以查看某一标签的信息
  • 标签可以用git tag -d <tagname>进行删除
  • 标签可以用git push origin <tagname>推送到远程,也可以用git push origin --tags把所有未推送的标签全部推送
  • 如果希望删除一个远程的标签,先用git tag -d <tagname>删除本地的标签,再用git push origin :refs/tags/<tagname>进行远程删除
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容