git的常用命令

git init

使用当前目录作为git仓库


git add

git add 将该文件添加到缓存区,如果需要添加所有的文件用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 再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


git reflog

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


git cheackout --

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

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

git checkout

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


git rm

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


git remote

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


git clone

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


git branch

查看当前所有的分支,前面标有*的是当前所处的分支
git branch 表示新建一个分支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 即可对该分支最新提交的commit打上该标签,如果还需要做有说明的标签的话,用git tag -a -m " "," "内填写说明
  • 如果想对之前某次的提交打上标签,可以先用git log --pretty=oneline找到该提交的commit-id,然后使用git tag commit-id即可
  • 使用git tag可以看到所有的标签列表,使用git show 可以查看某一标签的信息
  • 标签可以用git tag -d 进行删除
  • 标签可以用git push origin 推送到远程,也可以用git push origin --tags把所有未推送的标签全部推送
  • 如果希望删除一个远程的标签,先用git tag -d 删除本地的标签,再用git push origin :refs/tags/进行远程删除

你可能感兴趣的:(git的常用命令)