git 常用命令总结
-
创建新目录
- mkdir + newname
- cd + newname
-
显示当前目录 pwd
-
把这个目录变成Git可以管理的仓库 git init
-
显示隐藏的目录 1s -ah
-
添加文件到仓库 git add + filename
-
提交文件到仓库 git comit -m + 输入说明
-
查看当前工作区和暂存区文件的状态 git status
-
查看修改内容 git diff
git diff HEAD – readme.txt(文件名)命令可以查看工作区和版本库里面最新版本的区别 -
显示从最近到最远的提交日志 git log
当其后加上参数 --pretty=oneline 可省略某些输出信息 -
回到历史版本 git reset + --hard + commit_id
HEAD:当前版本 HEAD^:上一版本 HEAD~100:上一百个版本
回退了又想返回未来?:找到版本号即可 -
查看历史命令 git reflog
-
丢弃工作区的修改 git checkout –
让这个文件回到最近一次git commit或git add时的状态 -
把暂存区的修改撤销掉(unstage),重新放回工作区:git reset HEAD
-
撤销单独某个文件 “git restore --staged …” to unstage
-
删除文件 rm
从版本库中删除 git rm
当把版本库内的文件误删想复原时,用 git checkout – -
关联一个远程库 git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
-
分支
-
查看分支:git branch
-
创建分支:git branch
-
切换分支:git checkout || git switch
-
创建+切换分支:git checkout -b || git switch -c
-
合并某分支到当前分支:git merge
-
删除分支:git branch -d
-
丢弃一个没有被合并过的分支:git branch -D 强行删除
-
查看分支合并图:git log --graph
- 储存当前工作现场 git stash
- 查看存储的工作现场 git stash list
- 恢复工作现场
- git stash apply恢复(但是恢复后,stash内容并不删除,需要用git stash drop来删除)
- git stash pop 恢复的同时把stash内容也删了
- 在多分支上修改相同bug 用git cherry-pick 命令,把bug提交的修改“复制”到当前分支,避免重复劳动。
- 丢弃一个没有被合并过的分支 通过git branch -D 强行删除
- 多人协作
- 查看远程库信息,使用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,如果有冲突,要先处理冲突。
- rebase操作可以把本地未push的分叉提交历史整理成直线;目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
- 创建标签
- git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
- git tag -a -m "blablabla…"可以指定标签信息;
- git tag 可以查看所有标签。
- 操作标签
- 命令git push origin 可以推送一个本地标签;
- 命令git push origin --tags可以推送全部未推送过的本地标签;
- 命令git tag -d 可以删除一个本地标签;
- 命令git push origin :refs/tags/可以删除一个远程标签。
注意
- git只能跟踪文本文件,且Microsoft的Word,Windows自带的记事本也不可用
- 可以用add多次后,用一个comit提交多份文件
- 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。 - 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
Git管理的文件分为:工作区,版本库,版本库又分为暂存区stage和暂存区分支master(仓库)
工作区>>>>暂存区>>>>仓库
git add把文件从工作区>>>>暂存区,git commit把文件从暂存区>>>>仓库,
git diff查看工作区和暂存区差异,
git diff --cached查看暂存区和仓库差异,
git diff HEAD 查看工作区和仓库的差异,
git add的反向命令git checkout,撤销工作区修改,即把暂存区最新版本转移到工作区,
git commit的反向命令git reset HEAD,就是把仓库最新版本转移到暂存区。