首页 > 其他分享 >git使用

git使用

时间:2022-12-28 16:13:23浏览次数:34  
标签:git 合并 branch 使用 test commit 分支

1、克隆代码

git clone url

 

2、暂存更改

git add .

 

3、提交更改

git commit -m "提交代码"

 

4、将本地代码推送到远程

git push

git push -u origin test_branch

 

5、拉取远程最新代码

git pull

 

6、查看当前分支及状态

git status

 

7、新建分支

git branch test_branch       // 只是新建分支,但是不切换到新建的分支

git checkout test_branch 切换到test_branch分支

git checkout -b test_branch2    // 新建一个分支test_branch2,并切换到该分支

 

8、查看分支

git branch     //查看本地分支,分支前带*号的为当前分支

git branch -r    // 查看远程分支,出现冒号说明没有全部显示远程分支,回车继续加载,按q退出该命令

git branch -a     //查看所有分支,包括本地和远程的,会有颜色区分,如果出现冒号,则说明没有完全显示远程分支,回车会继续加载远程分支,按q则退出

git branch -vv     //查看本地分支及追踪的分支

 

9、删除本地分支

删除本地分支test_branch2,如果当前处于test_branch2分支,则会提示无法删除分支,必须切换到其他不删除的分支才可以删除test_branch2分支

git branch     // 先查看当前的分支

git checkout master //切换分支到master分支

git branch -d test_branch2   // 删除test_branch2分支  (如果当前的分支有未推送的提交或者未合并的更改,-d删除会失败,可以使用-D来强制删除,但是应该谨慎使用-D,因为不会有二次确认提示)

git branch // 可以看到test_branch2分支已经没有了

 

10、删除远程分支

git branch -a   // 先查看分支

git push origin -d test_branch     // 删除远程分支test_branch

或者也可以先删除本地的分支,然后将操作推送到远程,这样也会删除远程分支

git branch -d -r test_branch      //执行这个命令后提示“未能找到远程跟踪分支”,所以先建立远程分支跟踪

git branch --set-upstream-to=origin/test_branch test_branch     //提示分支test_branch设置为来自origin的远程分支test_branch

执行git branch -d -r test_branch 还是不行,还是提示未能找到远程跟踪分支,但是查看远程分支分明能看见,不知道为啥,以后有机会遇到了再查吧,使用第一种方法删除成功。

 

11、本地分支重命名

git branch -m old_branch new_branch      //将分支old_branch重命名为new_branch

 

12、合并分支

将分支A合并到分支B,首先切换到分支B拉取分支B的最新代码,然后git merge 分支A,就可以将分支A合并到分支B

git merge 分支A。    //当前所在分支为分支B,执行该命令会将分支A合并到分支B

 

13、合并分支并将commit消息合并为一条

将分支A合并到分支B,分支A有多次commit消息,现在要将分支A的多个commit消息合并成一个,然后合并到分支B

git checkout 分支B。   // 先切换到分支B

git pull      // 拉取分支B最新的代码

git merge 分支A --squash。     // 将分支A合并到分支B,如有冲突需要解决冲突

git commit -m "将分支A合并到分支B".    // 分支A合并到分支B,只有一条commit消息

 

14、合并多条commit消息为一条,然后合并到另一个分支

上面的方法是将分支A合并到分支B,但是不会将分支A的commit消息合并到分支B,最后只commit自己输入的那条

通常情况下,可以使用13种的方法合并,比如修bug拉了一个新的分支,有多次提交,然后合并到master分支,只提交一条commit消息到master,然后把master的修改push到远端。

但是工作场景中,master一般是受保护的

这个方法是先将分支A的所有commit消息合并为一条,然后再将分支A合并到分支B,这样合并到分支B的commit消息也就只有最后总的那一条,这个方法要注意小心合漏代码,

可以先拉一个分支A的新的备份分支,将新的备份分支的commit消息合并为一条,然后将新分支合并到分支B

 

 

15、将暂时不想暂存的修改存到栈中

git stash

 

16、查看现有的栈

git stash list

 

17、将栈重新应用

git stash apply  // 默认会应用最顶上的栈信息,且不会删除栈信息

git stash apply stash@{1}  // 指定应用stash@{1}的栈信息

git stash pop     //应用最顶上的栈信息,并且删除了栈信息(因为pop是弹出的意思嘛)

 

18、删除栈信息

git stash drop stash@{1}    // 删除指定的栈信息

git stash clear     // 删除所有的栈信息

 

19、显示具体的栈信息

git stash show stash@{1}     // 显示具体的栈信息,即对文件的更改信息

 

20、查看commit信息

git log

 

21、从分支的某个提交处新建一个分支

从分支A的一个commit提交9aa5cc5处新拉一个新的分支test_branch3

git checkout -b test_branch3 9aa5cc5      // 会从commit提交9aa5cc5处新建一个分支test_branch3

 

22、撤销本地的提交

git reset HEAD~    或者  git reset HEAD~1     //撤销上一次的提交

git reset HEAD~3     //撤销最近3次的commit提交

 

23、git回退到某个版本

先回退本地,再把本地的回退推到远程,这样就都回退了

git reset --hard commitId.        (--hard是重置丢弃commitID之后的所有代码变化)

git push --force。      (强制push)

 

24、配置本地git是否大小写敏感

git config core.ignorecase        查看是否大小写敏感,true是不敏感,false是区分大小写

git config core.ignorecase false      配置git区分大小写

 

25、把某个文件的提交释放,变成暂存状态(有个文件提交到远程了,但是现在想重新修改了,再提交)

 问题的原因就是,我的本地git不区分大小写,然后我先修改了文件的名字(从小写改成了驼峰),然后又改成了区分大小写,然后

提交代码,最后发现远程的代码有两个文件,一个小写一个驼峰,本地只有小写,现在要把远程驼峰的撤回来,让本地和远程保持一致

我重新拉了代码,先把本地改成区分大小写,然后撤销远程驼峰的文件的提交

git rm --cached /Users/xes/Desktop/personal/gitcode/work_project/talos/apidoc-vue-new/src/views/talos/performScript.vue

命令行显示 rm '/src/views/talos/performScript.vue' 表示本地撤销成功,

把这个文件删了,本地提交,push后,现在远程和本地的代码展示一致了,都没有驼峰的那个文件了。

 

 

26、查看git提交信息

git log 最新的提交在最上面,退出git log,输入大写的Q就行  

 

27、合并多次commit为一次

 

 我要把9fb3c到8d730之间的所有commit合并

git rebase -i 8d7306c15c1e6735e4075ae5f05a96d31d7afe79

然后页面上出现了下面的,按i进入编辑模式,将commitID是30ae和9fb3前面的pick改成squash,然后esc,然后:wq退出,然后push,就会把几次commit合并为一个,但是我这里报错了,因为有冲突

然后git rebase --continue也还是报错的,因为合并的冲突没有解决,然后vscode上当前分支名称旁边一直有一个rebasing,我现在要直接取消这次rebase

 

 使用命令git rebase --abort 或者git rebase --skip来撤销这次rebase,执行后,分支名称旁边不再有rebasing。

 

上面的4个提交rebase成一个提交的时候发生了冲突,是因为合并的时候是倒着合并的,先4和3合并,然后再和2合并,最后和1合并,

4和3合并没问题,但是4和3合并后再和2合并的时候就冲突了,因为2里多了一个大写的文件不知道怎么处理,所以我打算先2和3合并,

然后4和2、3合并后的结果合并,最后和1合并,这样应该就不会再有冲突了。

 

28、git合并中间两次的commit为一次commit:

命令还是git rebase -i 8d7306c15c1e6735e4075ae5f05a96d31d7afe79

执行这个命令后,还是出来下面的页面,按i进入编辑模式,将中间的那个commit改为squash(pick是保留这个commit,squash是将这个commit和上一个commit合并)

(所以图2的意思就是讲30ae和8a62合并,保留8a62,保留9fb3。),然后esc退出编辑模式,:wq保存修改退出。

 

 

 

 又因为那个文件大小写报错了,我的妈呀,不准备改了,准备拉一个新的分支,把这些commit提交到一起,把现在这个分支删掉。

 

29、把分支切换到某个commit下

git checkout commitID

 

30、解决git大小写冲突的问题

由于之前不区分大小写,然后改了文件名字,提交之后,远程有两个一样的文件,但是文件名字区分了大小写,然而本地只有一个小写的文件

这里我又将本地改成了区分大小写,所以每次提交都会冲突报错,说大写的文件会丢,但我本地又看不到大写的文件。

解决方法: 先把本地再次设置成不区分大小写,把这个文件改名为temp,实际上就是两个都改名了,然后再把本地设置成区分大小写,这个时候再把

temp文件改成小写名字,这样的话,本地git就会展示你删除了大写的文件,这样提交就不会报错了,然后远程也只会展示一个小写的文件,本地和远程就代码一致了。

参考:https://www.cnblogs.com/qianguyihao/p/15906060.html

 

 31、更新vscode的分支

git remote update origin --prune

 

 

 

 

 

    

标签:git,合并,branch,使用,test,commit,分支
From: https://www.cnblogs.com/comeoncode/p/16428910.html

相关文章

  • Spring Cloud 使用 Resilience4j 实现服务熔断
    CircuitBreaker断路器服务熔断是为了保护我们的服务,比如当某个服务出现问题的时候,控制打向它的流量,让它有时间去恢复,或者限制一段时间只能有固定数量的请求打向这个服务......
  • vue3使用vue-router构建SPA
    使用自动化构建工具vite搭建新项目#某个目录下执行npmcreatevite@latest 按照提示初始化项目,并按照提示:cdvite-projectnpminstallnpmrundev生成目录结构......
  • git客户端配置用户名和邮箱地址
    1、本地git客户端配置用户名和邮箱地址的作用:用户每次用git提交代码时都会记录用户名和邮箱。2、git设置用户名和邮箱的命令gitconfig--globaluser.name"username"......
  • git 常用命令
    目录​​添加到暂存区​​​​提交到本地仓库​​​​查看git状态​​​​查看日志​​​​对比文件内容​​​​回退一个版本​​​​回退二个版本​​​​回退版本​​​......
  • 什么是Docker?为什么使用docker?
    Docker是基于Go语言进行开发实现,一个开源的应用容器引擎。采用Linux内核的cgroup,namespace,以及AUFS类的UnionFS等技术,对进程进行封装隔离,也可以实现虚拟化。隔......
  • wsl安装和使用
    1、安装wsl的版本1、使用管理员身份打开powershell,执行wsl--list--online2、安装相应的版本wsl--install-dUbuntu-20.042、更改ubuntu的用户为root1、安装......
  • react中使用插槽
    react中的插槽react和vue不一样,没有插槽这个组件,如果要实现这个效果,可以从下面两个角度来实现。插槽实现方法1functionson(props){return(<div><di......
  • 如何在Excel表格中使用百度翻译Byserver公式?
     时光荏苒,2022年即将过去,大家今年的工作也到了收尾的阶段。为了让提高大家的工作效率,Excel网络函数库推出了百度翻译byserver公式,使用该公式,能够快速批量的翻译表格里的......
  • 矩池云上 git clone --recursive 出错,怎么解决
    遇到问题有时候安装包教程里gitclone的时候会出现以下错误:gitclone--recursivehttps://github.91chi.fun/https://github.com/onnx/onnx-tensorrt.git多了一个re......
  • 使用 udev 高效、动态地管理 Linux 设备文件(转载)--1
     ​​黄懋​​,软件工程师,IBM简介: 本文以通俗的方法阐述udev及相关术语的概念、udev的配置文件和规则文件,然后以RedHatEnterpriseServer为平台演示一......