当前位置:   article > 正文

你这一手 Git 玩的冒烟,_活在风浪里csdn

活在风浪里csdn

目录

初始化

查看操作

分支操作

提交操作

撤销操作

修改远程最近一次commit的信息

 修改远程某多个commit信息

修改本地comiit信息

 

 git删除 已经push到远程服务器的commit 

git删除 本地commit记录, 还没有push到远程分支上  

.git删除 已经push到远程服务器的某些多个commit

 Unix环境下,git commit --amend编辑页面无法退出

一些经验小细节 

Git无法检测到文件名大小写的更改 

 怎么在gitlab上修改分支名

git tag作用

git tag命令

1、创建tag

 2、查看tag

3、提交tag 

4、删除tag

下载git

​编辑

多人协作开发

http与ssh

冲突概念

临时保存修改 

 克隆、推送、起别名

组长可以有两种方式添加组员

忽略清单 

配置规则:


开局之前,送君一段话:如果你想学一门新技术,如果你想要读一本书,如果你是大学生,如果>>>...,为什么?问过自己吗?为什么不会,何妨不如说自己没有认真.

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. 1 git init 初始化git仓库 (mac中Command+Shift+. 可以显示隐藏文件)
  2. 如果初始化之后看不到.git 文件夹则可以通过 ls -ah查看
  3. 也可以通过命令 attrib -r -h .git 将隐藏的.git文件显示出来
2 git status 查看文件状态
3 git commit -m "对本次修改的具体描述"

查看操作

1git log查询日志的命令
2git log --pretty=oneline美化日志格式的命令 日志会显示在一行
3git reflog查看之前所有日志 例如关闭了明天再打开

分支操作

注意:切换分支需要先提交到暂存区,不然切换不过去的

1git branch查看本地分支
2git branch -r查看远程分支
3git branch -a查看所有分支(本地+远程)
4git branch branchname创建分支(本地)
5git checkout branchname切换分支(本地)(不要随意切分支,如果你在某个分支上面修改了一些东西,但没有stash,那么你切换分支后修改的东西就没有任何保存了,如果想切,请先git stash,然后git checkout dev)
临时更改保存临时更改保存可以这样理解,假如有一个急活可以先暂时保存,去做急活,git stash 存储临时改动就可以将临时写的代码存起来,等做完着急处理的工作可以使用git stash pop恢复改动,
6git checkout -b branchname创建并切换分支(本地)
7git push origin branchname这样远程仓库中也就创建了一个xx分支
8git branch -d branchname删除本地分支(注意,如果当前在该分支,必须先切到其他分支,再删除该分支)
9git branch -D branchname强制删除本地分支(适用于用 git branch -d 删除报:the branch  XXX is not fully merged(分支有未合并的更改) 时,想强制删除分支的情况)
10git push origin --delete branchname删除远程分支 origin基于配置好别名情况下
11git branch -d与git branch -D都是删除本地分支的方法git branch -d 会在删除前检查merge状态(其与上游分支或者与head)git branch -D 是git branch --delete --force的简写,它会直接删除

提交操作

@活在风浪里 1334132303@qq.com

1git add <file>提交单独文件
2git add .将所有修改添加到暂存区
3git commit -m "commit msg"提交信息描述

撤销操作

1git reset HEAD file 从暂存区撤回,执行 git add . 这个操作后,后悔了,想回到这个操作之前的状态
2git checkout -- file可撤销工作区文件的修改 (清除某一个文件的更改)
3git checkout . && git clean -xdf清除本地所有改动
4git reset --hard HEAD^    [ 回退到上一个版本 ] 回退上一版本
5git reset --hard HEAD^^   [ 回退到上二个版本 (以此类推)]
6git reset --hard HEAD~2   [  回退到上二个版本 (以此类推)]
7git reset --hard  id 已经提交本地仓库撤回到暂存区  [ 根据id撤回具体版本 ]
8git commit --amend修改最后一次提交的commit记录(它可以把我们这一次的修改合并到上一条历史记录当中,而不会产生一个新的 commit 记录)
9git rebase -i HEAD~3修改最近三条的commit记录 (这时候git会进入一个vim窗口,在这个窗口当中我们可以看到最近的三次提交记录。如下解释)
10git push origin test --force撤回远程仓库的提交
11git rm -r --cached --force 删除文件不需要加-r,删除文件夹需要-r, 该文件夹路径为本地文件夹所在路径

修改远程最近一次commit的信息

1:首先通过 git log 查看commit信息。

2:使用命令:git commit --amend 进入命令模式,这是按 a 或者 i 或者 o 进入编辑模式,我们修改好commit信息后按 Esc 健退出编辑模式,然后 :wq 保存我们编辑的信息(注意:如果无法退出,请采用英文输入法)。

 3:强制推送仓库(根据你的分支名动态修改HEAD:xx)git push origin HEAD:classifications --force


 修改远程某多个commit信息

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  查看提交记录 


修改本地comiit信息 

  1. 如果您想要修改本地commit信息,可以使用git commit --amend命令。例如,如果您想要修改最后一次提交的提交消息,可以使用以下命令:
  2. git commit --amend -m "新的提交消息"
  3. 这将打开您的默认编辑器,允许您编辑提交消息。如果您只想修改提交消息而不更改任何文件,可以使用--no-edit选项:
  4. git commit --amend --no-edit
  5. 这将保留最后一次提交所做的更改,但不会打开编辑器。


 git删除 已经push到远程服务器的commit 

简单来说就是回退到指定提交记录然后强制推送 后面的代码都会没有

  1. # 1.通过找到想要退回到的哪个commit_id
  2. $ git log
  3. # 2.本地代码变成某个提交记录时刻的代码
  4. $ git reset --hard commit_id
  5. # 3.推送到服务器,一定要加 --force 参数 "master":对应的分支即可
  6. $ git push origin HEAD:master --force

git删除 本地commit记录, 还没有push到远程分支上  

简单来说本地就是回退 commit版本, 之前的代码在,回退之后提交的代码都没有了,删除本地的提交记录

  1. ​# 1.通过找到想要退回到的commit_id
  2. $ git log
  3. # 2.本地代码会变成你想要的那次代码。这次之后提交的代码都没有了
  4. $ git reset --hard id
  5. # 3.完成撤销,停留在当前版本,之前的代码还是在的。只是本地的提交记录没了
  6. $ git reset id

.git删除 已经push到远程服务器的某些多个commit

简单来说删除多个远程commit ,先找到要删除的前一个commit ID,如果abcd,你删除b,就需要合并cd ,建议删除后面的commit,不要跳着删除

回退后需要自己以及其他开发者重新克隆一份项目操作,因为老项目的git文件夹包含你没有回退之前的,如果他人再次提交,你回退的东西就会再次出现在仓库中,所有回退操作都如此

git rebase -i 目标的前一个commit_id
  •  将 pick改为drop,然 :wq 即会删除指定的 commit;

  •  接着执行以下命令,推送到远程仓库; 
git push origin HEAD:master --force


 Unix环境下,git commit --amend编辑页面无法退出

Emacs 编辑器,输入 Ctrl X + Ctrl S(保存),再输入Ctrl X + Ctrl C(退出)

VIM编辑器,输入 ESC + :wq

UNIX 系统默认打开的是 Emacs 编辑器


一些经验小细节 

Git无法检测到文件名大小写的更改 

在当前项目中,早先创建并已经push到远程的文件及文件夹,将名称大小写更改后,git无法检测出更改。
出现这种情况的原因是,git默认配置为忽略大小写,因此无法正确检测大小写的更改。
那么,解决办法是,在当前项目中,运行 git config core.ignorecase false,关闭git忽略大小写配置,即可检测到大小写名称更改。

或者将源文件复制一份副本,删除源文件提交。然后将副提交

 怎么在gitlab上修改分支名

您可以使用以下命令在 GitLab 上更改分支名称:

1.首先,使用以下命令将本地分支与 GitLab 上的分支同步:

git fetchgit fetch 是从远程分支拉取代码。fetch结合merge一起用,git fetch + git merge == git pull;

2.然后,使用以下命令将本地分支重命名:

git branch -m <旧分支名> <新分支名>

3.最后,使用以下命令将重命名后的本地分支推送到 GitLab 上: 

git push origin <新分支名>

这样就可以在 GitLab 上成功更改分支名称了。


git tag作用

tag是一个标签或者说是一个记录点,可以用于对某个commit点或分支进行标记,比如项目中V1版本对应某个commit点,对这个commit打一个V1 tag,那么,在查找或者回退代码时,可以直接查找V1找到对应的源码,相比去查找commit id更加方便与人性化。 

git tag命令

tag 中文我们可以称它为 标签。

简单的理解,tag 就是 对某次 commit 的一个标识,相当于起了一个别名。
例如,在项目发布某个版本的时候,针对最后一次commit 起一个 v1.0.100 这样的标签来标识里程碑的意义。

1、创建tag

git tag 'v1.0.0-多级监控试图' // 创建 tag

 2、查看tag

  1. git tag //查看本地所有tag
  2. git ls-remote --tags origin //查看远程所有tag
  3. git show <tag名字> //查看 tag 详细信息

3、提交tag 

  1. git push origin '版本号' // 推送单个tag到远程
  2. git push origin --tags // 推送所有本地tag到远程

4、删除tag

  1. git tag -d '版本号' //删除本地tag
  2. git tag -l | xargs git tag -d //删除本地所有tag
  3. git push origin :refs/tags/版本号 //删除远程tag
  4. git show-ref --tag | awk '{print ":" $2}' | xargs git push origin //删除远程所有tag

详情看这里:git tag查看、新建、删除_git 查看tag_-阿大头的博客-CSDN博客


下载git

第一步:下载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分支才是最活跃的。

总结: 

http与ssh

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文件

  1. 点击项目文件,右键选择Git Bash进入命令行,输入touch .gitignore,生成.gitignore文件。
  2. 在生成的.gitignore文件里输入你要忽略的文件件及其文件即可。

配置规则:

以斜杠“/”开头表示目录;
以星号“*”通配多个字符;
以问号“?”通配单个字符;
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录。
git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效。

  分享快乐,留住感动. '2023-3-09 23:33:22' --活在风浪里0.1

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/399597
推荐阅读
相关标签
  

闽ICP备14008679号