git init
可以将本文件夹作为git仓库
git status
可以查看git状况
git diff 文件名
可以查看文件发生的改变
git add 文件名
将文件加入到提交队列,实际上就是把文件修改添加到暂存区;
git commit -m "本次提交信息"
,实际上就是把暂存区的所有内容提交到当前分支。你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
git log
命令显示从最近到最远的提交日志
在Git中,用HEAD
表示当前版本,上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。
git reset --hard HEAD^
可以将文件退回到上一个版本
Git提供了一个命令git reflog
用来记录你的每一次命令:
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。
穿梭前,用git log
可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog
查看命令历史,以便确定要回到未来的哪个版本。
命令git checkout --文件名
可以将文件退回到最近一次git commit
或git add
时的状态。
用命令git reset HEAD <file>
可以把暂存区的修改撤销掉(unstage),重新放回工作区
关于撤销修改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>
,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
要关联一个远程库,使用命令git remote add 起一个名字 git@github.com:gaoleilearnjava/仓库名.git
;
删除远程仓库: git remote rm 远程仓库名
关联后,使用命令git push -u 远程仓库名 master
第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push 远程仓库名 master
推送最新修改;
抓取的话就是 git pull (后面没参数)
git clone git@github.com:michaelliao/gitskills.git
可以克隆远程仓库到本地
创建分支git branch 分支名
切换分支 git checkout 分支名
两条命令也可以合并成一条命令 git checkout -b 分支名
git branch
查看当前分支
git merge 分支名
git merge
命令用于合并指定分支到当前分支
git branch -d 分支名
删除分支
创建并切换到新的dev
分支,可以使用:
$ git switch -c dev
直接切换到已有的master
分支,可以使用:
$ git switch master
git log --graph
命令可以看到分支合并图。
为了方便操作,Git专门提供了一个cherry-pick
命令,让我们能复制一个特定的提交到当前分支:
要丢弃一个没有被合并过的分支,可以通过git branch -D <name>
强行删除。
要查看远程库的信息,用git remote -v
敲命令git tag <name>
就可以打一个新标签,可以用命令git tag
查看所有标签:
git checkout 提交的节点
可以快速切换过去
git branch -f 分支名 节点名
强制把某个分支指向某个节点
git reset 分支名
可以将当前节点会退到另一个历史节点
git revert 分支名
和git reset 分支名
很像,但是不是直接回退,而是复制该历史节点,然后前进一格.
git cherry-pick <提交号>...
如果你想将一些提交复制到当前所在的位置(HEAD
)下面的话, Cherry-pick 是最直接的方式了。 比如说 git cherry-pick C2 C3 C4
就相当于直接把C2 C3 C4拿过来,然后复制到当前分支上.
git rebase -i 分支节点
出来一个UI界面,让你手动调整提交的顺序,甚至可以删除某些提交.
原文:https://www.cnblogs.com/shiguangqingqingchui/p/11922753.html