Window下git的使用(2):git常用操作

git常用操作总结
https://shimo.im/docs/s8szkrRN8Kwlnoxy/read

git详细讲解:版本库、上传、克隆、多人协作
https://blog.csdn.net/qq_37925382/category_7718582.html

廖雪峰git讲解
https://www.liaoxuefeng.com/wiki/896043488029600

git学习测试
https://learngitbranching.js.org/?locale=zh_CN

删除文件夹
https://www.cnblogs.com/syq816/p/9301700.html

我的总结

工作区–add–暂存区–commit–版本库–remote–远程仓库


01 创建版本库

mkdir learngit
当前目录创建learngit文件夹

cd learngit
进入该目录

pwd
显示当前目录

git init
把这个目录变成Git可以管理的仓库
当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,删了就重新来了

02 提交

git status
查看仓库当前的状态

git diff
查看修改情况
Eg.  git diff readme.txt

git add
git commit -m "说明"
提交(add到暂存区,commit到版本库)
git add readme.txt
git commit -m "add distributed"

03 版本管理

git log
显示从最近到最远的提交日志

git reflog
记录每一次命令(关机也不怕~)

git log --pretty=oneline
查看日志,只显示 commit id版本号 和 说明
(每提交一个新版本,实际上Git就会把它们自动串成一条时间线。如果使用可视化工具查看Git历史,就可以更清楚地看到提交历史的时间线)

git reset --hard HEAD
回退到上一版本
在Git中,用HEAD表示当前版本
上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写成HEAD~100

git reset --hard 1094a
去“未来”的某个版本(1094a为版本号)
版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。

04 撤销修改 与 删除

4.1 撤销修改

git checkout -- file
把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和 **版本库** 一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到 **暂存区** 后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态
Eg:  git checkout -- readme.txt

git reset HEAD <file>
可以把暂存区的修改撤销掉(unstage),重新放回工作区
Eg:  $ git reset HEAD readme.txt

4.2 删除

rm test.txt
在文件管理器中把没用的文件删除

git rm
git commit
从版本库中删除该文件,那就用命令git rm删掉,并且git commit
Eg:   
$ git rm test.txt
$ git commit -m "remove test.txt"

git checkout -- test.txt
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

05 远程仓库

git remote
查看远程库的信息

git remote -v
显示更详细的信息

5.2 提交到远程仓库

$ ssh-keygen -t rsa -C "youremail@example.com"
创建公钥
在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人

$ git remote add origin git@github.com:michaelliao/learngit.git
在本地仓库运行,把一个已有的本地仓库与远程仓库关联
也可以用http是,而不用git@形式,那样就不需要公钥了
添加后,远程库的名字就是**origin**,这是Git默认的叫法,也可以改成别的,
但是origin这个名字一看就知道是远程库。

$ git push -u origin master
把本地库的所有内容推送到远程库上
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,
Git不但会把本地的master分支内容推送的远程新的master分支,
还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

$ git push origin master
从现在起,只要本地作了提交,就可以通过该命令推送上去
把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!

$ git push origin dev
推送其他分支,比如dev

在这里插入图片描述

5.1 从远程仓库克隆

git clone
远程库已经准备好了,使用该命令克隆一个本地库
Eg:   $ git clone git@github.com:michaelliao/gitskills.git

在这里插入图片描述
在这里插入图片描述

06 分支管理

6.1 创建、和并

切换分支有 git checkout 和 git switch 两种方法

$ git checkout -b dev
创建dev分支,然后切换到dev分支
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
$ git branch dev
创建
$ git checkout dev
切换

$ git switch -c dev
创建并切换到新的dev分支
$ git switch master
直接切换到已有的master分支

git branch
查看分支:列出所有分支,当前分支前面会标一个*号

git checkout master
切换到dev分支

git merge
用于合并指定分支到当前分支
Eg:   git merge dev
我们把dev分支的工作成果合并到master分支上

$ git branch -d dev
删除dev分支

在这里插入图片描述

6.2 冲突解决

https://www.liaoxuefeng.com/wiki/896043488029600/900004111093344

6.3 推送分支

推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上
但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?
在这里插入图片描述
在这里插入图片描述

6.4 多人协作

在这里插入图片描述
在这里插入图片描述

07 标签管理

标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。

git tag <name>
就可以打一个新标签
Eg: $ git tag v0.9 f52c633

git tag
查看所有标签
注意,标签不是按时间顺序列出,而是按字母排序的

git show <tagname>
查看标签信息
Eg: $ git show v0.9

$ git tag -a v0.1 -m "version 0.1 released" 1094adb
还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字

$ git tag -d v0.1
如果标签打错了,也可以删除:

git push origin <tagname>
如果要推送某个标签到远程,使用命令

$ git push origin --tags
或者,一次性推送全部尚未推送到远程的本地标签:

$ git tag -d v0.9
$ git push origin :refs/tags/v0.9
如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值