常用命令
创建仓库
git init
——初始化一个 git
仓库git clone [*.git]
——将远程库中的内容克隆到本地
本地仓库改动
git add [filename]
——把文件添加(提交的修改)放进修改暂存区git add
只关注你当前对文件的修改 在 add
之后再对文件进行修改 不会被 commit
git commit -m "commit message"
——提交一次修改 将暂存区的所有修改提交到分支git status
——查看当前仓库状态git diff
——查看当前仓库发生变化文件的详情git rm
——在版本库中删除改文件 完成后需要进行 commit
查看提交历史
git log
——查看最近到最远的提交日志(--pretty=oneline
可以令日志在一行内输出 方便查看)git log --graph
——以图形格式查看分支合并git reflog
——查看在本仓库中执行的每一次命令
回退提交
git reset [commit]
——将仓库回退到某个版本 commit
可以是 16 进制版本号,也可以用 HEAD 代替git reset [commit] [filename]
——将该文件在暂存区的修改撤销掉,重新放回工作区git checkout -- [filename]
——令该文件回到最近一次 commit
或者 add
时的状态
标签相关
git tag
——查看所有标签git tag -a [tag name] -m [description] [commit]
——新建一个标签 默认绑定在 HEAD 上 也可以指定一个 commit id
(-a
指定标签名 -m
指定说明文字)git tag -d [tag name]
——删除一个本地标签
远程仓库相关
ssh-keygen -t rsa -C "youremail@example.com"
——生成SSH Key
git remote add origin git@github.com:[github username]/[github repository name.git]
——将本地仓库与github
上的仓库关联 在添加后 远程库的名字就是 origin
git remote rm origin
——删除与当前绑定的远程库的关联git push -u origin [branch name]
——将本地库 branch name
分支的内容推送到远程库(-u
参数 用于将本地master
分支和远程master
分支关联起来,在以后 push
和 pull
时可以简化命令)git pull
——将当前分支与服务器绑定的分支的最新的提交抓下来git push origin [tag name]
——推送一个本地标签git push origin --tags
——推送全部未推送过的本地标签git push origin :refs/tags/[tag name]
——删除一个远程标签(要删除已经推送上去的远程标签,需要先删除本地标签,再删除远程标签)
分支相关
git checkout -b [branch name]
——表示创建并切换到某分支git checkout -b [branch name] origin/[branch name]
——在本地创建和远程分支对应的分支 本地和远程分支的名称最好一致git rebase
——将本地未 push
的分叉提交历史整理成直线git branch
——查看当前分支git branch [branch name]
——创建一条分支git branch -d [branch name]
——删除一条分支git branch -D [branch name]
——强行删除一条分支 用于丢弃一个没有被合并过的分支git branch --set-upstream [branch name] origin/[branch name]
——建立本地分支与远程分支的关联git merge [branch name]
——将目的分支合并到当前分支上(默认是“快进模式”,还有其他方式)git merge --no-ff -m "message" [branch name]
——禁用Faster forward
模式进行合并 由于不使用Fast forward
模式时,在merge
时git
会生成一个新的commit
,因此需要在后面打上commit
的信息git switch [branch name]
——切换到某一条分支git switch -c [branch name]
——创建并切换到某一条分支git cherry-pick [commit]
——将一个特定的 commit
提交到当前分支(等于复制一个 commit
所做的修改到本分支)cat [filename]
——查看某文件
stash 暂存区相关
git stash
——将工作现场“储藏”起来git stash list
——查看 stash 列表git stash apply
——恢复第一个 stash 恢复后 stash 内容不删除git stash apply stash@{0}
恢复指定的 stashgit stash drop
——删除 stashgit stash pop
——恢复工作现场 同时将 stash 内容删除
something else
在Git
中,用HEAD
表示当前版本,也就是最新的提交,上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上 100 个版本写 100 个^比较容易数不过来,所以写成HEAD~100
。
git 撤销修改
场景 1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景 2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>
,就回到了场景 1,第二步按场景 1 操作。
场景 3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
禁用 Fast forward 模式
通常,合并分支时,如果可能,Git
会用Fast forward
模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward
模式,Git
就会在merge
时生成一个新的commit
,这样,从分支历史上就可以看出分支信息。