赞
踩
目录
git删除 本地commit记录, 还没有push到远程分支上
.git删除 已经push到远程服务器的某些多个commit
Unix环境下,git commit --amend编辑页面无法退出
开局之前,送君一段话:如果你想学一门新技术,如果你想要读一本书,如果你是大学生,如果>>>...,为什么?问过自己吗?为什么不会,何妨不如说自己没有认真.
15辍学21岁在网吧做网管,27岁相亲,我喜欢你?就像你不确定她对我的说我喜欢你一样,30岁你有了孩子,体会到了父母的艰辛,你不敢休息一天,拼命的工作,甚至生病选择了硬抗,70岁怀念呕心沥血的父母,时常反思,将全部的溺爱宠于自己的孙子上,怕他走你走过的路,那种一眼望到死的生活不是我们想要的...作为22世纪生在红旗下,沐浴在逆风者的大树下,看过长津湖就会明白什么叫做....毅力
培养自己专注力,就一动不动盯着30分钟,思路跟上,在你困 在你感觉坚持不住的时候,你闭上眼睛,现在想一想,现在是2061年的九月份,你已经七八十岁了,在一个空荡荡的房间,臃肿老态,没钱没权,生活不能自理,这时,你对神仙许了一个心愿说,时间可以倒流吗,神说好,于是你睁开眼睛回到2021年的九月份,这一次你还不打算努力吗?
将前辈的话放在心里,虚心接受任何人的建议,但人无完人总会有瑕疵,总结出自己的逻辑思维!将其说过的话聊过的坑至少记住98%,你还学不会吗?我不是前辈,更不是老师!我是一只前端奔跑的程序猿,我在努力成为一位优秀的佬,可能永远不会实现,但我不会放弃,没有梦想,没有目标,你和boos谈理想吗,他拿什么激励你?
好了记录下git吧一直再用,有些命令页忘记了,可以自己看看,将其分享出来
世界上有一条很长很美的路,叫做梦想
工作区-->暂存区-->本地仓库--》远程仓库
git与svn区别
git
1.git是分布式的scm,svn是集中式的。(最核心)
2.git是每个历史版本都存储完整的文件,便于恢复,svn是存储差异文件,历史版本不可恢 复。(核心)
3.git可离线完成大部分操作,svn则不能。
4.git有着更优雅的分支和合并实现。
5.git有着更强的撤销修改和修改历史版本的能力
6.git速度更快,效率更高。
7.Git分支廉价,SVN分支昂贵,Git 分支是指针指向某次提交,而 SVN 分支是拷贝的目录。这个特性使 Git 的分支切换非常迅速,且创建成本非常低。
而且 Git 有本地分支,SVN 无本地分支。在实际开发过程中,经常会遇到有些代码没写完,但是需紧急处理其他问题,若我们使用 Git,便可以git stash 存储临时改动就可以将临时写的代码存起来,等做完着急处理的工作可以使用git stash pop恢复改动。。。
基于以上区别,git有了很明显的优势,特别在于它具有的本地仓库。
svn
- 集中管理都有一个服务器,用来保存文件,协作开发者需要通过客户端连到这台服务器,进行协作开发(更新、提交)
Subversion的特点
在易用性这方面,SVN 会好得多,简单易上手,对新手很友好。但是从另外一方面看,Git 命令多意味着功能多,若我们能掌握大部分 Git 的功能,体会到其中的奥妙,会发现再也回不去 SVN 的时代了。
1 git init 初始化git仓库 (mac中Command+Shift+. 可以显示隐藏文件) 如果初始化之后看不到.git 文件夹则可以通过 ls -ah查看 也可以通过命令 attrib -r -h .git 将隐藏的.git文件显示出来
2 git status 查看文件状态
3 git commit -m "对本次修改的具体描述"
1 | git log | 查询日志的命令 |
2 | git log --pretty=oneline | 美化日志格式的命令 日志会显示在一行 |
3 | git reflog | 查看之前所有日志 例如关闭了明天再打开 |
注意:切换分支需要先提交到暂存区,不然切换不过去的
1 | git branch | 查看本地分支 |
2 | git branch -r | 查看远程分支 |
3 | git branch -a | 查看所有分支(本地+远程) |
4 | git branch branchname | 创建分支(本地) |
5 | git checkout branchname | 切换分支(本地)(不要随意切分支,如果你在某个分支上面修改了一些东西,但没有stash,那么你切换分支后修改的东西就没有任何保存了,如果想切,请先git stash,然后git checkout dev) |
临时更改保存 | 临时更改保存可以这样理解,假如有一个急活可以先暂时保存,去做急活,git stash 存储临时改动就可以将临时写的代码存起来,等做完着急处理的工作可以使用git stash pop恢复改动, | |
6 | git checkout -b branchname | 创建并切换分支(本地) |
7 | git push origin branchname | 这样远程仓库中也就创建了一个xx分支 |
8 | git branch -d branchname | 删除本地分支(注意,如果当前在该分支,必须先切到其他分支,再删除该分支) |
9 | git branch -D branchname | 强制删除本地分支(适用于用 git branch -d 删除报:the branch XXX is not fully merged(分支有未合并的更改) 时,想强制删除分支的情况) |
10 | git push origin --delete branchname | 删除远程分支 origin基于配置好别名情况下 |
11 | git branch -d与git branch -D都是删除本地分支的方法git branch -d 会在删除前检查merge状态(其与上游分支或者与head)git branch -D 是git branch --delete --force的简写,它会直接删除 |
@活在风浪里 1334132303@qq.com
1 | git add <file> | 提交单独文件 |
2 | git add . | 将所有修改添加到暂存区 |
3 | git commit -m "commit msg" | 提交信息描述 |
1 | git reset HEAD file | 从暂存区撤回,执行 git add . 这个操作后,后悔了,想回到这个操作之前的状态 |
2 | git checkout -- file | 可撤销工作区文件的修改 (清除某一个文件的更改) |
3 | git checkout . && git clean -xdf | 清除本地所有改动 |
4 | git reset --hard HEAD^ | [ 回退到上一个版本 ] 回退上一版本 |
5 | git reset --hard HEAD^^ | [ 回退到上二个版本 (以此类推)] |
6 | git reset --hard HEAD~2 | [ 回退到上二个版本 (以此类推)] |
7 | git reset --hard id | 已经提交本地仓库撤回到暂存区 [ 根据id撤回具体版本 ] |
8 | git commit --amend | 修改最后一次提交的commit记录(它可以把我们这一次的修改合并到上一条历史记录当中,而不会产生一个新的 commit 记录) |
9 | git rebase -i HEAD~3 | 修改最近三条的commit记录 (这时候git会进入一个vim窗口,在这个窗口当中我们可以看到最近的三次提交记录。如下解释) |
10 | git push origin test --force | 撤回远程仓库的提交 |
11 | git rm -r --cached --force | 删除文件不需要加-r,删除文件夹需要-r, 该文件夹路径为本地文件夹所在路径 |
1:首先通过 git log
查看commit信息。
2:使用命令:git commit --amend
进入命令模式,这是按 a 或者 i 或者 o 进入编辑模式,我们修改好commit信息后按 Esc 健退出编辑模式,然后 :wq 保存我们编辑的信息(注意:如果无法退出,请采用英文输入法)。
3:强制推送仓库(根据你的分支名动态修改HEAD:xx)git push origin HEAD:classifications --force
1:我有a,b,c,d四个提交,我想修改c,d。需要 git rebase --interactive b提交记录的commit Id (也就是要修改的前一个commit Id)
进入了编辑模式:
这是按 a 或者 i 或者 o 进入了编辑模式,对应的 pick 改成 e 或者 edit。退出保存,然后 :wq 保存我们编辑的信息(注意:如果无法退出,请采用英文输入法)。
pick改成e或者edit:
修改commit 信息
退出VIM
2: 使用 git commit --amend
去保存修改具体的commit信息
3:用 git rebase --continue
完成
4:强制推送仓库(根据你的分支名动态修改HEAD:xx)git push origin HEAD:classifications --force
5: git log 查看提交记录
-
- 如果您想要修改本地commit信息,可以使用git commit --amend命令。例如,如果您想要修改最后一次提交的提交消息,可以使用以下命令:
-
- git commit --amend -m "新的提交消息"
-
- 这将打开您的默认编辑器,允许您编辑提交消息。如果您只想修改提交消息而不更改任何文件,可以使用--no-edit选项:
-
- git commit --amend --no-edit
-
- 这将保留最后一次提交所做的更改,但不会打开编辑器。
简单来说就是回退到指定提交记录然后强制推送 后面的代码都会没有
- # 1.通过找到想要退回到的哪个commit_id
- $ git log
- # 2.本地代码变成某个提交记录时刻的代码
- $ git reset --hard commit_id
- # 3.推送到服务器,一定要加 --force 参数 "master":对应的分支即可
- $ git push origin HEAD:master --force
简单来说本地就是回退 commit版本, 之前的代码在,回退之后提交的代码都没有了,删除本地的提交记录
- # 1.通过找到想要退回到的commit_id
- $ git log
- # 2.本地代码会变成你想要的那次代码。这次之后提交的代码都没有了
- $ git reset --hard id
- # 3.完成撤销,停留在当前版本,之前的代码还是在的。只是本地的提交记录没了
- $ git reset id
简单来说删除多个远程commit ,先找到要删除的前一个commit ID,如果abcd,你删除b,就需要合并cd ,建议删除后面的commit,不要跳着删除
回退后需要自己以及其他开发者重新克隆一份项目操作,因为老项目的git文件夹包含你没有回退之前的,如果他人再次提交,你回退的东西就会再次出现在仓库中,所有回退操作都如此
git rebase -i 目标的前一个commit_id
git push origin HEAD:master --force
Emacs 编辑器,输入 Ctrl X + Ctrl S(保存),再输入Ctrl X + Ctrl C(退出)
VIM编辑器,输入 ESC + :wq
UNIX 系统默认打开的是 Emacs 编辑器
在当前项目中,早先创建并已经push到远程的文件及文件夹,将名称大小写更改后,git无法检测出更改。
出现这种情况的原因是,git默认配置为忽略大小写,因此无法正确检测大小写的更改。
那么,解决办法是,在当前项目中,运行 git config core.ignorecase false,关闭git忽略大小写配置,即可检测到大小写名称更改。或者将源文件复制一份副本,删除源文件提交。然后将副提交
您可以使用以下命令在 GitLab 上更改分支名称:
1.首先,使用以下命令将本地分支与 GitLab 上的分支同步:
git fetch
git fetch 是从远程分支拉取代码。fetch结合merge一起用,git fetch + git merge == git pull;
2.然后,使用以下命令将本地分支重命名:
git branch -m <旧分支名> <新分支名>
3.最后,使用以下命令将重命名后的本地分支推送到 GitLab 上:
git push origin <新分支名>
这样就可以在 GitLab 上成功更改分支名称了。
tag是一个标签或者说是一个记录点,可以用于对某个commit点或分支进行标记,比如项目中V1版本对应某个commit点,对这个commit打一个V1 tag,那么,在查找或者回退代码时,可以直接查找V1找到对应的源码,相比去查找commit id更加方便与人性化。
tag 中文我们可以称它为 标签。
简单的理解,tag 就是 对某次 commit 的一个标识,相当于起了一个别名。
例如,在项目发布某个版本的时候,针对最后一次commit 起一个 v1.0.100 这样的标签来标识里程碑的意义。
git tag 'v1.0.0-多级监控试图' // 创建 tag
- git tag //查看本地所有tag
- git ls-remote --tags origin //查看远程所有tag
-
- git show <tag名字> //查看 tag 详细信息
- git push origin '版本号' // 推送单个tag到远程
-
- git push origin --tags // 推送所有本地tag到远程
- git tag -d '版本号' //删除本地tag
- git tag -l | xargs git tag -d //删除本地所有tag
-
- git push origin :refs/tags/版本号 //删除远程tag
- git show-ref --tag | awk '{print ":" $2}' | xargs git push origin //删除远程所有tag
详情看这里:git tag查看、新建、删除_git 查看tag_-阿大头的博客-CSDN博客
第一步:下载git工具,git下载,选择适合自己的版本进行安装。
第二步:安装完成后,鼠标右键找到Git bash,双击打开。
1、首先,你需要在远程仓库创建一个新的项目(github、gitee或是你自己的远程服务器),这个新的项目默认会有一个主分支 main,现在你需要新建一个 dev 分支,这个dev分支就是所谓的主战场,在以后的开发中,就在这个dev以及dev下的分支进行开发。
2、然后使用git命令git clone到一个空的文件夹
3、克隆下来的这个项目相当于你在远程创建的那个项目的镜像,所以现在你本地的项目里也有个dev分支,当然也有master分支,现在切换到dev分支 git checkout dev
4、现在就可以在这个dev分支上新建自己的分支愉快的开发了,命令 git checkout -b dev1
5、由于是多人开发,另一个人也可以以同样的方式(经历2、3、4步骤后)新建一个自己的分支dev2 命令git checkout -b dev2
6、在dev1 或 dev2 开发完成后,需要提交到本地仓库,在dev1分支下使用命令 git add . 和 git commit -m ‘commit msg’
7、提交完之后,需要汇总到dev分支上,先切回dev分支,命令git checkout dev,这个时候是没有你在dev1上修改或添加的东西的,需要合并之后才会有;
8、合并 在dev分支下使用命令 git merge dev1
现在就可以在dev分支下看到你在dev1分支下修改的东西了
9、提交 合并到dev分支之后就是提交到远程仓库的dev分支,可以先看一下现在都有什么分支,命令 git branch -a
10、提交到远程dev 命令 git push origin dev
11、现在远程仓库的dev分支上已经是最新的代码了;最后再把远程的dev分支合并到远程的main主分支上就可以了。一般主分支主要是存放比较稳定版本的版本,dev分支才是最活跃的。
总结:
https需要输入用户名和密码,网址开头为https ssh配置公钥不需要, 网址开头为git@github
当然还有在父分支合并子分支的时候如果A B子分支同时修改了,相同地方,git会提示冲突,此行为需人为解决冲突,达到理想效果,
临时更改保存可以这样理解,假如有一个急活可以先暂时保存,去做急活,git stash 存储临时改动就可以将临时写的代码存起来,等做完着急处理的工作可以使用git stash pop恢复改动,
克隆仓库:
克隆远端数据仓库到本地:git clone 仓库地址
拉取远程仓库中最新的版本:git pull 远程仓库地址 分支名称
第一种:
git push '远程地址' 分支名 //如果推送不上去 远程仓库里有别人的东西,需要先拉取在推送
git pull '远程仓库' 分支名 // 拉取
采用第二种推送方式:
1.如果远程仓库有内容,要先拉取最新代码-----》 git pull '远程地址' main //在github线上建仓库默认为main主分支
2.推送 -----》git push '远程地址' main
3.起别名---》 git remote add origin '远程仓库' //可以理解为将远程地址赋值给origin
3.1如果报错 remote origin already origin //说已经存在缓存
注意:使用 git 清除远程仓库地址等信息
git remote rm origin
git remote add origin '远程地址'
4.再次推送 git push -u origin main //-u记住推送地址以及分支,下次直接用git push推送不需要每次将远程地址填上了,也不需要指定分支了,应为-u是记住推送地址以及分支
邀请别人成为当前项目的开发者,别人就可以向公共仓库推送代码,不是开发者只有克隆权限不能推送
第一种:
进入github仓库---> settings---->Manage access----->第一次添加会弹出密码输入框------>Invite a collaborator (输入你邀请的B程序员github账号)----> 发送邀请------>B程序员登陆邮箱接受邀请------B程序员可以向仓库推送代码
第二种:
将组员的公钥添加到组长的公钥
创建.gitignore文件
以斜杠“/”开头表示目录;
以星号“*”通配多个字符;
以问号“?”通配单个字符;
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录。
git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效。
分享快乐,留住感动. '2023-3-09 23:33:22' --活在风浪里0.1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。