git管理代码分支 切换仓库

本文汇总了Git的常用命令及应用场景,包括分支管理、代码回退、撤销提交等实用技巧,帮助开发者高效地进行版本控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

repo 切换整个project 每个仓库的分支

repo forall -c git checkout branchname

repo forall -c git checkout master

https://www.cnblogs.com/hdk1993/p/8648030.html

repo相关命令

更新代码  repo sync 同步代码到最新版本

repo status  查看每个仓库的情况,有无提及,每个仓库当前是在什么分支

Repo常用命令_封尘印的博客-CSDN博客

最常用的repo命令:
repo abandon xxx 删除xxx分支
repo branch 查看当前分支
repo branch 查看所有分支
repo checkout 切换分支
repo cherry-pick
repo diff 显示提交树和工作树之间的更改
repo diffmanifests 清单差异
repo download 下载并切换到
repo grep 打印匹配的行模型
repo info 获取有关的分支清单、当前分支或未合并的分支信息
repo init 在当前目录中初始化repo
repo list 列出项目及其相关联的目录
repo overview 显示未合并项目分支的概述
repo prune 删除已经合并的主题
repo rebase 将本地分支重新建立在上游分支上
repo smartsync 将工作树更新为最新的已知良好版本
repo stage 提交的阶段文件
repo start --all xxx 开始一个新的开发分支
repo status 显示工作树的状态
repo sync 将工作树更新为最新版本
repo upload 上传更改以供代码审查
————————————————
版权声明:本文为CSDN博主「高级凡尔赛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_48430195/article/details/108857423 

首先来看看git push origin HEAD:refs/for/master的格式解析:

总体格式:git push <remote 名字> <本地分支的名字> : <远程库的名字>
git push :表示推送代码到远程服务器。
origin : 表示远程的库的名字。不一定是origin   有的公司是有对应的 比如现公司是mega
master:表示远程分支的名字。
HEAD: 表示一个特别的指针,指向你正在工作的本地分支的指针,可以当做是本地分支的别名。git通过它可以知道当前工作区间在哪个分支。
refs/for :表示我们提交代码到服务器之后是需要经过code review 之后才能进行merge操作的,而refs/heads是不需要的。
————————————————
版权声明:本文为CSDN博主「第一代码」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_21376777/article/details/123217743

android studio 快速进入仓库命令

右键随便选中一个文件,选择open in->Terminal  就进入了。

不需要 使劲cd  cd进入

git 命令 一定要看这个

Git 常用命令 - 知乎

git 查看日志

git 万能的几个命令 

git --help

git status 

git reflog

git log --oneline  

git branch -a

git remote -v

git remote set-url   origin 仓库名   比如            git remote set-url  mega 仓库名

git branch -a 或者

git branch --all查看本地和远程所有分支

git 操作命令总结_git reset --soft head-CSDN博客

git reset --soft HEAD^

这样就成功的撤销了你的commit

注意,仅仅是撤回commit操作,您写的代码仍然保留。

至于这几个参数:
--mixed 
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作

这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。

--soft  
不删除工作空间改动代码,撤销commit,不撤销git add . 

--hard
删除工作空间改动代码,撤销commit,撤销git add . 

注意完成这个操作后,就恢复到了上一次的commit状态。
————————————————
版权声明:本文为CSDN博主「喯啵儿灞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u598975767/article/details/103597757

提交代码  commit之前必须 git add . 

git add .

git commit -m

直接git commit 是有问题的 会提示你

git commit -s   会携带签名 用户名和 邮箱之类的  Signed-off-by: conglong.wang <conglong.wang@megatronix.co>i

git commit --amend  修改上一次的提交 commit --amend之前必须 git add . 否则新修改的文件不会commit

一定记住 任何commit 之前一定先git add .

如果需要回退代码   git log --oneline

看到提交的版本 或者那个head 值

然后执行回退到哪

进入vim编辑信息模式

VIM编辑器部分命令详解(基础)_vim编辑命令-CSDN博客

i 是进入编辑模式  下面会显示插入

没有按i 没进入编辑模式,是没有显示插入的 或者按esc 退出编辑模式 但是不能按esc后按ctr +z退出 否则会有 COMMIT_EDITMSG.swp 提示

编辑完后  按esc 是退出编辑模式

再保存退出 如下操作

在 非拼音输入下也就是英文输入下 输入shift +:   进入退出模式 底部会出现:

再输入wq!  加上上一步输入的: 合起来就是 :wq! 后确定按enter 就是保存并退出 这里的w 就是write

如果是:q!+enter就是不保存退出

如果中途无故或者不小心退出了,再次进入commit时会提示有swap交换文件。根据提示找到这个.COMMIT_EDITMSG.swp文件删除。再进入编辑

git branch -vv 是查看本地分支对应远程哪个分支

 git checkout -b <本地分支> <远程分支>  创建本地分支与远程哪个分支对应

git checkout <本地分支>  创建本地分支与远程同名分支对应

git checkout -b <本地分支>  创建本地分支与远程分支没有关系,特别注意

可以用 git branch -vv 查看

例如 

git checkout -b release/grandteton_hqx.1.2.1_20230517 mega/release/grandteton_hqx.1.2.1_20230517

提交代码信息 (android studio  有快捷方式)

git status

git add .            暂存

git commit -m "测试"

最常见的用法如下所示,如果没有 -m 参数,会进入 vi 编辑模式,然后写入提交信息

git commit -m [message]

git commit 如果是这个 就会进入编辑msg的模式

再次修改文件  暂存

git add .

 git commit --amend -m "测试修改"

git commit和  git commit -s 以及

git commit --amend  会进入

 git commit 一般还是用   git commit -s 吧 因为会自动帮你添加上Signed-off-by: 信息

i 是编辑模式

有时候会进入

多按几次方向下键  会出现让你选择  

我一般选择E 直接编辑

esc 是退出编辑

然后(或者直接不用esc  直接按shift+:也可以)

shift + :    此时出现:号    是选择模式  有时候没出现是因为要切换输入法 先按一次shift 再按 shift + :  才会出现:

  此时按esc  :会没有了后再按i 重新进入编辑

输入qa!  后回车 是放弃qa修改信息 退出

此时出现的信息是:终止提交因为提交说明为空。

如果输入wq 后回车就是保存退出了 并且 commit了 

[master 19e19a0] 提交信息测试
 1 file changed, 1 insertion(+)


 

git commit 途中。。按shift + :   输入q  回车可以退出

但是此时你输入 git status 会出现 要提交的变更 要想复原 需要用  git add . 或者 git restore --statged    因为git commit 之前 先git add .了一次

按 ESC 退出编辑模式,再输入 :wq 保存并退出VIM

如何撤销--amend 提交

一个commit 后 push到gerrit 了。这个时候还没merge 到仓库,这个时候你想继续修改 amend commit了  准备push 了

但是发现此时代码已经merge 了  你push会失败 这个时候需要撤销amend

那只能git  reflog

能看到日志  看到最后一次的amend   然后 执行reset   如果想保留代码就  soft  不想就hard

一、修改最后一次提交

方式一:直接输入命令:git commit --amend,会进入对最后一次提交信息编辑的vim编辑器界面(普通模式下,按i进入编辑模式,编辑模式下按esc退出到普通模式,普通模式下按:进入命令模式,输入wq即可保存修改并退出vim编辑器)。

image.png

方式二:如果提交信息简单也可以直接通过如下命令行完成:
git commit --amend -m 'new commit message'

去提交信息的时候出现  交换文件".git\.COMMIT_EDITMSG.swp"已经存在!

 先选Q 退出  直接不管这个提示直接去编辑提交信息也行 为了避免每次都看到这个信息

需要 执行命令  rm .git/.COMMIT_EDITMSG.swp

 Git无法恢复:找到一个交换文件"COMMIT_EDITMSG.swp" |

linux vi E325错误,不能正常编辑退出_安科网

如果出现

fatal: 无法创建 '/Users/hy/Desktop/project/app/xintraapp/.git/index.lock':File exists

 rm -rf .git/index.lock

在以上窗口 可以按ctrl + z 可以随时退出

作者:紫月凌枫
链接:https://www.jianshu.com/p/52590ac65c0b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

撤销commit   (android studio  有快捷方式)

在我们使用git作为版本控制工具进行代码管理之后,经常性的会碰到一个问题:git commit后,如何撤销commit,下面详细讲一下。

git add newFiles

git commit -m '新增xx页面'

执行commit后,还没执行push时,想要撤销这次的commit,该怎么办?

解决方案:
我们可以使用命令:git reset --soft HEAD^  这样就成功撤销了commit。

使用git reset --hard HEAD^  这样连add也撤销了。

*注:reset 命令只能回滚最新的提交,无法满足保留最后一次提交只回滚之前的某次提交。

命令解释:

HEAD^ 表示上一个版本,即上一次的commit,几个^代表几次提交,如果回滚两次就是HEAD^^。
也可以写成HEAD~1,如果进行两次的commit,想要都撤回,可以使用HEAD~2。
--soft
不删除工作空间的改动代码 ,撤销commit,不撤销add
--hard
 
删除工作空间的改动代码,撤销commit且撤销add
如果commit后面的注释写错了,先别急着撤销,可以运行git commit --amend 
进入vim编辑模式,修改完保存即可

————————————————
版权声明:本文为CSDN博主「绝命天涯 几许风雨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/w_p_wyd/article/details/126028094

回退代码(android studio  有快捷方式)

4、已push到远程仓库
这个就相对有点麻烦了  需要强制推送 git push --force

只是本地很方便

4.1覆盖
最简单的是再次提交一次正确的修改,问题是会留下一个commit_id,显得有点傻。
4.2回退
1、 首先回退本地分支
回退到自己修改之前的那次修改
git reset --hard <commit_id>
2、推送到远程
git push --force
其实这里有个疑问,如果在自己push上去之后,又有人提交了,那这样回退岂不把别人的提交给删除了吗?这里可以这样操作:
git rebase -i [commit_id] //any commit id
del pick[commit_id] //you want to rollback.
git push <branch> --force // is the branch you want to push
————————————————
版权声明:本文为CSDN博主「禾仔仔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43083491/article/details/111320974

git reflog

今天同事不小心误操作,将修改的代码没提交到远程且本地修改的代码已不存在。。。
这下可把我同事给急坏了

淡定有弥补的机会!!!

git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)

例如执行 git reset --hard HEAD~1,退回到上一个版本,用git log则是看不出来被删除的commitid,用git reflog则可以看到被删除的commitid,我们就可以买后悔药,恢复到被删除的那个版本。
————————————————
版权声明:本文为CSDN博主「月来better」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Kiruthika/article/details/122309224

git log --oneline

如下图 ;首先说下为啥会出现这种情况,本地push到gerrit上了,然后在gerrit上手动修改了代码里面的注释   然后在gerrit 上publish edit了

gerrit 上合入后

本地再执行 git pull --rebase  出现了这个文件的冲突   因为代码库改了。本地的没改  git log 里面出现了两个一样的log

解决冲突后

git rebase --continue

出现下面的问题

其实就是 有两个一样的commit 需要skip 一个

合并分支代码

一个原则

同一个分支更新代码用 rebase

会成一条线的提交记录

1.git pull --rebase

2.对冲突文件进行修改

3. git rebase --continue(继续合并。合并的过程中,还有可能产生冲突。解决方法同上。) 也可以用 git rebase --abort 回退终止 rebase 回到 rebase之前的状态

 4.git add

5.git commit

6.git push origin master(冲突解决完之后。推送到远端服务器)

不同的分支合并代码用merge 千万不要用 rebase 尤其是多人提交的分支 虽然会多一条merge记录

首先如果有冲突可能有多次rebase 冲突 很难解

还有原因如下  信息错乱 不好找 回溯问题

git rebase详解(图解+最简单示例,一次就懂)_风中一匹狼v的博客-CSDN博客

这里写图片描述

merge 和rebase相比解决冲突没有所谓的 --continue

只有对应的--abort

本地代码不在任何分支

不知道

commit了代码

然后发现了

先checkout 到一个分支 比如master

然后 git pull --rebase

然后 git reflog

查看到自己的commit

然后cherry-pick    最后再push 

第一种方法:

从develop分支上新建一个分支

每次开发的时候在自己的分支上开发 commit和push

然后切换到develop代码,pull  然后两个分支相互meger合并  就可以了

 第二种方法

直接在develop分支上开发,每次commit之前或者之后 先update(pull),但是选中Rebase

然后commit 后push

push 有问题

1.问下有没有权限
2.有没有hook的commit-msg文件
3.需要执行 git push origin HEAD:refs/for/master  master替换为自己的分支

有localChange 怎么切换分支

先Stash Changes 再切分支

切回来以后再 UnStash Changes

 

注意这几个选项

第二种方式 命令行

暂存git stash

切换分支

切换回来以后

git stash apply stash@{0}

git stash命令:可以将在当前分支修改的内容放到缓存区中,并会自动建立一个缓存的list集合,方便管理。

如果想将修改的内容重新释放出来,git stash apply 和 git stash pop 都可以达到这个目的。

git stash 可以形成list 集合。通过git stash list 可以看到list下的历史记录编号

使用git stash apply @{x} ,可以将编号x的缓存释放出来,但是该缓存还存在于list中

而 git stash apply,会将当前分支的最后一次缓存的内容释放出来,但是刚才的记录还存在list中

而 git stash pop,也会将当前分支的最后一次缓存的内容释放出来,但是刚才的记录不存在list中

————————————————

版权声明:本文为CSDN博主「zhuocr」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/zhuocr/article/details/59488390

1.git remote -v     查看当前的仓库

2.切换当前仓库

 git set-url url仓库链接

 git set-url gaoke ssh://yaqun.liu@git.kkkcom:83939/apps/Media

可以切换完了再看下git remote -v
 

怎么查看远程仓库有没了新的提交,如果有不想meger  就是用fetch命令,后看看git log 本地仓库和远端仓库的是不是在一个commit log上,如果是一个,表示远端没有新提交

有文件是红色没加入版本管理,不小心加入版本管理了变成绿色了,怎么办,直接rollback就可以了

回退代码

 选择hard 就跟当时这个点的代码一摸一样,你可以试下这个点的代码效果

你想用最新的点的代码。重新pull就可以到那个点了

  根据–soft –mixed –hard,会对working tree和index和HEAD进行重置:
    git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
    git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
    git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容

如果回退后 想强制更新到远程仓库

强制将本地代码推送至远程仓库
但是到了这里,其实只是本地回退了版本而已,远程仓库的并没有回退。如果想要将本地的代码直接push到远程仓库则会报错如下:

$ git push
To gitee.com:kubernete/Performance-Test-Management-demo.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@gitee.com:kubernete/Performance-Test-Management-demo.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
这里会提示需要更新远程仓库,如果更新执行git pull的话,又会将刚才回退的版本下载回来。

此时需要强制将本地代码推送至远程仓库之中,使用git push -f origin master

这样以后reset代码回退后,被回退的log在AS上也看不到了

追加上一次的提交,在commit中选中Amend commit

修改commit信息 ,在git log中直接选中commit  右键 edit commit message

可以有多次commit 然后一次push  log

git revert和reset区别 - 胡峻峥 - 博客园1.在github上建立测试项目并克隆到本地 2.本地中新建两个文本文件 3.将a.txt commit并push到远程仓库 执行 git add a.txt, git commit -m "icon-default.png?t=N7T8https://www.cnblogs.com/hujunzheng/p/5645718.htmlrevert和 reset

通过gitk查看提交历史,就会发现revert和reset的不同了,reset是将head往后退而revert执行后head继续前行

reset并回退代码以后 被回退的代码没有log了。。revert是产生一个新的commit 老的log还在

文件修改要反悔可以用rollback

git revert要慎用

git revert可以可以用rollback复原

git revert后可以再次git revert复原,这个不知道是不是可行

如果commit但是没有push   

使用revert以后会把commit的内容去掉(commit的文件此时会显示有改动,这个有改动会变成蓝色实际上是相对于本地代码commit来说的,),但是log还在。你可以使用reset 恢复到 已经提交commit 没有push的状态

也可能不弹出,文件会恢复到有改动但是未commit的状态,你commit会显示的信息是 revert ...(上一次的commit)

点击commit

 

 不push

对revert再进行revet操作。。也可能是不自动弹出这个窗口, 就手动进行commit 会出现 revert revert commit

 

 其实可以一直这样正操作 反操作下去

看有没有提交 你commit一下 看下有没有提交的文件

也就是 每次revert以后 改动都被现实出来 蓝色。。。你要再次commit才会不显示出改动状态

git revert 用法

git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销
作为一次最新的提交
    * git revert HEAD                  撤销前一次 commit
    * git revert HEAD^               撤销前前一次 commit
    * git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,
版本会递增,不影响之前提交的内容

--------------------------------------------------------------------------------------------------------------------------------------------

git revert 和 git reset的区别 
1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。 
2. 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。 
3. git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。

本地代码回退代码可以用reset

本地远程仓库都回退可以用reset +强制push

push之前或者push了又aband push以后,反悔提交可以用 undo commit

git meger和git rebase的区别

git rebase 与 merge 的那些事儿~(详细图解,通俗易懂) - Z_Hero - 博客园什么是 rebase? git rebase 你其实可以把它理解成是“重新设置基线”,将你的当前分支重新设置开始点。这个时候才能知道你当前分支于你需要比较的分支之间的差异。 原理很简单:rebaseicon-default.png?t=N7T8https://www.cnblogs.com/zheroXH/p/11578728.html

本地代码工程上传到github

如何把本地项目上传至GitHub_滚滚_1016的程序媛-CSDN博客1.首先下载git下载链接https://git-scm.com/downloads桌面右击显示Git Bash Here、Git GUI Here表示安装成功2.在github网页上创建一个git仓库 echo "# boot" &gt;&gt; README.md(创建一个名为README.md,内容为# boot的文件)git initgit add READM...https://blog.csdn.net/weixin_43052839/article/details/82623154

Git的使用--如何将本地项目上传到Github(三种简单、方便的方法)(二)(详解) - 云+社区 - 腾讯云我们使用git需要先安装git工具,这里给出下载地址,下载后一路(傻瓜式安装)直接安装即可:icon-default.png?t=N7T8https://cloud.tencent.com/developer/article/1504684

android studio git 快捷键拉代码失败

Couldn't save uncommitted changes
            Tried to save uncommitted changes in shelf before Update, but failed with an error.
            Shelving changes failed: Uncommitted changes before Update at 2021/11/18 14:09 [ignore list]

 这种情况是因为有两个文件夹不能 stash 导致的

直接用快捷菜单去rebase会有问题

用命令行  先git stash  可以用快捷键

然后命令行 git pull --rebase

然后再 git stash apply stash@{0} 可以用菜单快捷键  成功后可以删除stash里面保留的

如果别人有代码提交到gerrit上了

但是还没合进去

你要先下下来运行一下看看效果

 先执行git pull --rebase 再执行copy的这个命令

cherry pick 某些提交 有冲突 的时候,解决冲突 然后记得要public edit

有些提交 合入某些前面的提交 提示有 merge conflict     直接rebase一下就行

有些不能rebase了的时候 需要重新pick一下 就行 了

有些提交cherry pick 不了 那是因为之前cherry pick 过合入了。。或者 cp了但是没合入 但是abandon了  ,去restore一下 再去合入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值