git 日常使用

1.git介绍

Git是一个开源的分布式版本控制系统。Linus Benedict Torvalds,芬兰赫尔辛基人,著名的电脑程序员,Linux内核的发明人及该计划的合作者,2005年,git的第一个版本正式上线。2周完成Git系统开发

Git是分布式的,SVN是集中式的, git 是单机版的SVN

2.基础命令

1.查看版本

1.git --version

查看日志

git log online
git log --oneline --graph --color --all --decorate

截屏2023-09-18 15.48.47.png
2.添加账户和邮箱

git config --global user.name '你的账号昵称'
git config --global user.email '你的账号邮箱'

3.查看git配置信息

git config —list

截屏2023-09-18 15.50.29.png
截屏2023-09-21 13.15.07.png
4.创建本地仓库,关联到远程仓库
a.创建git仓库

git init

b.添加所有改动的文件到暂存期

git add . 点代表 全部

c.提交至本地仓库

git commit -m "提交的备注信息"

d.本地仓库和远程仓库想关联

git remote add origin https://xxxxxxxx

4.查看远程的源

git remote -v


截屏2023-09-18 16.02.01.png
5.重命名本地分支

git branch -m <oldbranch> <newbranch>


截屏2023-09-18 16.11.06.png
6.拉去远程分支

git pull
git pull --rebase origin master

7.推送到代码到远程分支

git push origin master
git push --f origin master 强制提交

截屏2023-09-18 16.21.21.png

8.查看单前的分支

git branch
git branch -r 查看远程所有分支
git branch -a 查看本地和远程的所有分支

9.创建本地新的分支

git branch dev

10.切换到相应的分支

git checkout dev

10.创建分支的同时切换到该分支

git checkout -b release


截屏2023-09-18 16.37.10.png
11.删除本地分支

git branch -d 'release'

12.将本地分支推送到远程分支

git push origin 'dev'
截屏2023-09-18 16.40.49.png
13.查看文件状态

git status


截屏2023-09-20 16.02.39.png
14.暂存代码

git stash
git stash save ‘stash说明信息’


截屏2023-09-18 16.50.38.png

[图片上传中...(截屏2023-09-20 16.01.50.png-c512fc-1695196917569-0)]

14.查看当前缓存列表。

git stash list


截屏2023-09-18 16.52.50.png
15.将stash的内容弹出,默认弹出最上面的那条,即stash@{0} 同时删除恢复的缓存条目。

git stash pop [stash]

16.丢弃stash条目,默认丢弃最上面的那条,即stash@{0},此外还可以在drop后加stash@{n}来指定要丢弃的stash条目。

git stash drop [stash]

17.查看stash的具体内容

git stash show [stash]
git stash show [stash] -p

18.应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},

git stash apply stash@{n}

19.清除所有的stash条目。

git stash clear

20.获取某个分支上的某个commit 提交

git cherry-pick
然而git merge会把一个分支的commits都应用到当前分支,这时候我们可以使用git cherry-pick来完成这一操作,它的作用是选择已存在的commit应用到当前分支上,并产生新的commit SHA-1 校验和。

多个commits

git cherry-pick commit1 commit2

连续多个commits
git cherry-pick commit1..commit8 (不包含commit1 2-8)(2,8]

连续多个commits
git cherry-pick commit1^..commit8 (包含commit1 1-8)[1,8]

发生冲突后 解决冲突再执行

git add .
git cherry-pick --continue
完成 cherry-pick操作

放弃这次cherry-pick

git cherry-pick --abort

21.git版本回退

git reset --soft commit号/HEAD
将本地仓回滚到Y版本,但是暂存区和工作区保持不变。此时本地仓回滚到Y版本号commit完成的那一刻。


截屏2023-09-19 14.04.51.png

截屏2023-09-19 13.43.23.png

git reset --hard commit号/HEAD
本地仓、暂存区、工作区,三区都回滚


截屏2023-09-19 14.07.02.png
截屏2023-09-19 13.47.48.png

git reset --mixed commit号/HEAD 或者 git reset
本地仓和暂存区,都回滚到Y版本号。工作区代码不受影响

截屏2023-09-19 14.08.10.png

截屏2023-09-19 13.36.55.png

HEAD
HEAD 说明:
HEAD 表示当前版本
HEAD^ 上一个版本
HEAD^^ 上上一个版本
HEAD^^^ 上上上一个版本

可以使用 ~数字表示
HEAD~0 表示当前版本
HEAD~1 上一个版本
HEAD^2 上上一个版本
HEAD^3 上上上一个版本

使用git reflog命令可以帮助恢复git误操作,进行数据恢复

git reflog

截屏2023-09-20 16.07.02.png

22.git rebase 和 git merge
1.merge 和 rebase 的区别:

1.使用merge命令合并分支,解决完冲突,这个时候会产生一个commit。rebase不会产生这个commit

  1. 使用rebase命令合并分支,解决完冲突,执行git add.和git rebase--continue,不会产生额外的commit。
    这样的好处是,‘干净’,分支上不会有无意义的解决分支的commit;

坏处,如果合并的分支中存在多个commit,需要重复处理多次冲突。

3.merge 的提交树是非线性的,rebase 的提交树是线性的(通过重写提交历史)

如果你想要一个干净的,没有merge commit的线性历史树,那么你应该选择git rebase
如果你想保留完整的历史记录,并且想要避免重写commit history的风险,你应该选择使用git merge

截屏2023-09-20 11.05.54.png

截屏2023-09-20 11.12.02.png
截屏2023-09-21 16.36.15.png
  1. git rebase -i HEAD~3 “HEAD~3” 表示从当前最新的版本号开始,往前的三个版本
截屏2023-09-20 18.14.21.png
截屏2023-09-20 16.09.25.png
git tag 标签

git tag -a v1.4 -m "my version 1.4"

git tag -a v1.2 9fceb02 后期在某一个commit打标签

git tag 查看标签

git push origin v1.5 推送一个tag到远程

git push origin --tags 如果想要一次性推送很多标签,也可以使用带有 --tags 选项

git tag -d <tagname> 要删除掉你本地仓库上的标签(注意上述命令并不会从任何远程仓库中移除这个标签,用 git push <remote> )

git push origin --delete <tagname> 直接删除远程标签

git push origin :refs/tags/v1.4

.gitignore 文件

/mtk/ 过滤整个文件夹
*.zip 过滤所有.zip文件
/mtk/do.c 过滤某个具体文件

!src/ 不过滤该文件夹
!*.zip 不过滤所有.zip文件
!/mtk/do.c 不过滤该文件

星号 * 代表零个或多个任意字符。例如, *.txt 会匹配所有的 .txt 文件。
问号 ? 代表一个任意字符。例如, ?.txt 会匹配 a.txt 但不会匹配 ab.txt。
两个星号 ** 表示任意中间目录。例如, **/foo 会匹配 foo,a/foo,a/b/foo 等
前缀 ! 表示不忽略。例如, *.txt 和 !important.txt 会忽略所有的 .txt 文件,但不会忽略 important.txt。
前缀 / 表示只忽略当前目录下的文件。例如, /test 会忽略当前目录下的 test 文件,但不会忽略 a/test
后缀 / 表示只忽略目录。例如, test/ 会忽略 test 目录,但不会忽略 test 文件

注意

最后需要强调的一点是,如果你不慎在创建.gitignore文件之前就push了项目,那么即使你在.gitignore文件中写入新的过滤规则,这些规则也不会起作用,Git仍然会对所有文件进行版本管理。

git rm -r --cached .
git add .
git commit -m 'update .gitignore'
git push origin master

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容

  • 前14条在工作中会经常用到 1.如何将远程仓库克隆到本地 注意如果此时你的项目是空的,要先建个页面push到远程仓...
    _花阅读 320评论 0 1
  • 创建代码库 cd到某个目录,然后创建一个Git本地代码库 $ git init cd到某个目录,将其初始化为带名字...
    cyhai阅读 494评论 0 0
  • 开篇 如今,Git 大行其道,颇有一统天下之势。 如果你的技能树上 Git 和 Github 的图标还没有点亮的话...
    sufun_wu阅读 188评论 0 0
  • git 日常使用 ==查看隐藏文件 -ah== 初始化本地仓库 添加文件到git 提交 查看当前仓库的状态 查看修...
    sunjiandev阅读 205评论 0 1
  • Git概念介绍 Git描述 Git是一个开源的分布式版本控制系统,分布式的含义是(它不需要服务器端软件的支持)。另...
    暖小忧阅读 257评论 0 0