初始化
git init
初始化一个Git仓库
提交
添加文件到Git仓库,分两步:
git add <file>
,把文件添加暂存区。可反复多次使用,添加多个文件。或使用git add .
添加所有文件git commit -m <message>
,把文件添加到分支上。-m 表示对每次提交后的说明,方便阅读。
打印信息|查看修改
git log [--pretty=oneline]
查看最近的提交日志,--pretty=oneline
表示一行输出
git reflog
打印输入过的每一条命令
git status
查看当前的状态信息,比如有修改未提交,在哪个分支
git diff HEAD -- readme.txt
查看工作区和最新版本库文件的区别,如果不加文件名则显示全部
git log --graph
查看分支合并图
版本穿梭
git reset --hard HEAD^
回退到上一个版本(如果有100个^就表示回退100个版本,简写git reset --hard HEAD~100
比如我回退了两个版本,就会从第一张图边到第二张图
git reset --hard 1094a
穿梭到hash值以1094a
为前缀的版本
其实这个回退只是修改了HEAD
的指针,如上图中黄色的就是当前的版本
git会检测检测工作区内容的变化
修改
撤销修改
git checkout -- readme.txt
有以下两种情况
- readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
- readme.txt已经添加到暂存区后,又作了修改。使用这个命令后又回到了修改前的状态。
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>
,就回到了场景1,第二步按场景1操作。
删除
- 先
git rm
,在git commit
从本地和版本库中删除 - 如果误用了
git rm
,用git checkout -- <filenaem>
则可以拉取最新的版本
仓库
推到仓库上分两部
git remote add origin git@github.com:<账户名>/xxx.git
创建与远程仓库的连接git push -u origin master
第一次把文件push到远程仓库上
以后每次提交,只需输入git push -u origin master
注意:
提交时需要进行验证,确保对仓库的修改是我们本人(不然任何一个人都可以随意修改
id_rsa 和 id_rsa.pub文件,如果存在,说明已经有SSH Key
如果没有,使用以下命令进行配置
ssh-keygen -t rsa -C “<邮箱>”
cd ~/.ssh
:进入有ssh公钥的文件夹
cat id_rsa.pub
查看公钥的内容
然后在创建的仓库进行配置部署公钥ssh
http://git.mydoc.io/?t=180845
分支管理
git branch
查看分支
git branch dev
创建dev的分支
git checkout dev
切换到dev分支
缩写 git checkout -b dev
或者使用更好理解的命令 git switch -c dev
创建并切换到dev分支
git switch master
切换到master分支
git merge dev
把dev分支合并到当前master分支上
注意:合并分支时可能会引起冲突问题,需要手动把冲突的文件修改为我们想要的内容,才能合并。
git branch -d dev
删除dev分支
在分支合并后,会变成这样
但这种模式下,删除分支后,会丢掉分支信息。
可以不使用Fast forward
模式,merge后就像这样
命令:git merge --no-ff -m "merge with no-ff" dev
(-m时消息的参数
实际开发中,都在dev分支上上干活(即从dev分支上创建新的分支,然后把自己的的分支合并到dev分支上。
git push origin master
推送master分支到远程仓库上
git push origin dev
推动dev分支到远程仓库上
-----------待补-------------