Git
一、安装
$git //查看是否安装git
$git --version //查看git版本
Mac上可以使用homebrew来安装,安装完需要设置:
$git config --global user.name "xujiaxin"
$git config --global user.email "xujiaxin@beatosion.com"
二、创建版本库
$mkdir learngit
$cd learngit
$pwd //显示当前目录
/Users/xujiaxin/learngit
$git init //此时ls -al 会发现有一个.git目录
三、新建一个文件
$vim readme.md
Git is a distributed version control system.
Git is free software distributed under the GPL.
四、提交
$git add readme.md
$git commit -m "提交readme.md"
$git log //查看历史提交的信息
五、版本回退
$git reset --hard HEAD^ //退回上一个版本
$git reflog //查看每次退回的commit id
d9656e9 (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
a118a37 HEAD@{1}: reset: moving to HEAD^
7c975c7 HEAD@{2}: commit: dudu
a118a37 HEAD@{3}: commit: append Gpl
d9656e9 (HEAD -> master) HEAD@{4}: commit (initial): append Gpl
$git reset --hard 7c975c7 //退回到commit:dudu
HEAD 现在位于 7c975c7 dudu
六、工作区和缓存区
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Naw6uVV-1658822887001)(https://www.liaoxuefeng.com/files/attachments/919020037470528/0)]
第一步是用git add
把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master
分支,所以,现在,git commit
就是往master
分支上提交更改。
你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
$git status //查看状态
七、撤销修改
git checkout -- readme.txt
命令git checkout -- readme.txt
意思就是,把readme.txt
文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit
或git add
时的状态。
八、删除文件
$ git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
[master d46f35e] remove test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
九、远程仓库
添加远程库
1、首先需要把ssh密钥输入输入到github
本地:
$ssh-keygen -t rsa -C "xujiaxin@beatosion.com" //一直回车
$cd ~/.ssh
$ls(查看目录是否有id_rsa.pub文件)
查看公钥:cat id_rsa.pub 或者vim id_rsa.pub
复制到github中即可
2、登陆github新建仓库
3、
$git remote add origin git@github.com:xujiaxindudu/learngit.git
$git push -u origin master
枚举对象中: 4, 完成.
对象计数中: 100% (4/4), 完成.
使用 8 个线程进行压缩
压缩对象中: 100% (2/2), 完成.
写入对象中: 100% (3/3), 265 字节 | 265.00 KiB/s, 完成.
总共 3(差异 0),复用 0(差异 0),包复用 0
To github.com:xujiaxindudu/learngit.git
6ae5491..27023cb master -> master
从现在起,只要本地作了提交,就可以通过命令:
$ git push origin master
删除origin
git remote rm origin
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
;
关联一个远程库时必须给远程库指定一个名字,origin
是默认习惯命名;
关联后,使用命令git push -u origin master
第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改
从远程库克隆
$git clone git@github.com:xujiaxindudu/yiyi.git
$ cd gitskills
$ ls
README.md
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone
命令克隆。
Git支持多种协议,包括https
,但ssh
协议速度最快。
十、分支管理
$git checkout -b dev //创建并切换分支
git checkout
命令加上-b
参数表示创建并切换,相当于以下两条命令:
$ git branch dev
$ git checkout dev
Switched to branch 'dev'
$git branch
* dev
main
git branch
命令会列出所有分支,当前分支前面会标一个*
号。