git 切换_git切换项目
2025-02-25 16:38 - 立有生活网
如何把Git的某个commit提交到指定的本地分支和远程分支
如果你是新创建的仓库,,是不可以直接创建的,你应该有一次提交才行,不然会报错:fatal: Not a valid object name: ''.Git的分支合并主要依赖于checkout命令和cherry-pick 命令。cherry-pick就是从不同的分支中捡出一个单独的commit,并把它和你当前的分支合并。如果你以并行方式在处理两个或以上分支,你可能会发现一个在全部分支中都有的bug,如果你在一个分支中解决了它,你可以使用cherry-pick命令把它commit到其它分支上去,而不会弄乱其他的文件或commit。
git 切换_git切换项目
git 切换_git切换项目
1.例子:如我的Git文件在H:盘下,/h/myfirstproject,该目录中有三个分支:test分支,newbranch1分支和mater分支。如果想把test分支的某个commit合并到,需要经过下面的步骤:
执行git log -3 --graph test,查看test分支下的commit: 注:commit 后面的hash值代表某个commit,这里把”2e1ada53819d46557b24ee7376dc61d37a06939d“这个commit提交到。
执行git checkout ,切换到分支。
执行 git cherry-pick 2e1ada53819d46557b24ee7376dc61d37a06939d,该commit便被提交到了分支。
到此,”2e1ada53819d46557b24ee7376dc61d37a06939d“这个commit便被提交到了分支。 2.例子:把本地的test分支的某个commit提交到远程testdlop分支。
从远程分支 checkout 出来的本地分支,称为跟踪分支(tracking branch)。跟踪分支是一种和远程分支有直接联系的本地分支。在跟踪分支里输入Git push,Git
在克隆仓库时,Git 通常会自动创建一个名为 的分支来跟踪 origin/。这正是git push 和 git pull 一开始就能正常工作的原因。当然,你可以随心所欲地设定为其它跟踪分支,比如origin 上除了 之外的其它分支。刚才我们已经看到了这样的一个例子:git checkout -b [分支名]
[远程名]/[分支名]。
1.首先新建一个临时分支,并把临时分支与远程分支关联。
git checkout -b tempbarch --track origin/testdlop
2.此时已经切换到了tempbgit分支切换时,提示Deletion of directory '' failed. Should I try again? 原创arch分支。再执行:git log -3 --graph test,查看test分支下的commit:
3.执行git cherry-pick f6cb436ff5a010cdd72dc2c8ff018db8e8832271 即可把”f6cb436ff5a010cdd72dc2c8ff018db8e8832271“这个commit提交到tempbranch分支。
然后再通过Tortoise客户端的push命令,即可把该commit提交到远程testdlop分支。
4.切换到任何非tempbranch分支,如分支,执行git branch -d tempbranch,即可把tempbranch分支删除掉。
git 切换本地分支 删除了文件
问题: git checkout ‘本地分支’ 的时候,莫名其妙的删除了好几个文件。
终端提示让: git add/rm
分析: 应该是新分支上没有这些文件
证明: 分别拉取库里指定分支,证实两个分支上/project/build/ 路径在project/build下的所有文件都有那些文件。
解决: 感觉这时候应该使用 git checkout --
我解决的办法: 多切换了几次,2.如果是之前的旧的分支,已经有过修改的,肯定分更新本地代码,不然分支又有什么用吗? 没有问题了
git(三)分支作
git push origin --tag //提交所有tag至比如你可以创建一个README.md文件
我们将当前分支切换到dev分支上,并在dev分支上,创建一个dev.md文件,然后在README.md文件中随便写点东西,
并建立存档(git add .; git commit -m "xxx"作),然后我们再切换回,看看是什么结果
同时再观察一下README文件,是空的!!!!
所以,从这里我们就明白了,分支之间就像是平行空间,每个分支之间的作互不影响,所以我们在多人开发时,为了不影响主线的开发,我们就可以单独分离出一个分支单独开发
需要注意的是,若要合并分支,是必须要在分支上才能进行合并的
(附上我们刚才的流程图)
如果你没有对分支合并就进行删除,git会给你一个提示
如果你要删除未合并的分支,就用D
注git add test.txt意 :当你在进行分支切换的时候,要对当前分支的作进行存档,以防出现程序的丢失或污染其他分支,所以你可以先用git status命令查看当前的状态,确保当前分支工作区是干净的
不论是我们单独开发或者多人协作开发,难免都会出现冲突。当多个分支修改同一个文件时,合并分支的时候就会产生冲突。
这里就不演示具体例子
一般项目比较大,文件繁多,我们可以使用git status命令快速查看哪些文件发生了冲突
修复成功后需要再进行一次git add . , git commit -m "xxx"进行存档
git如何使用
rebase又称为衍合,是合并的另外一种选择。由于Git对于项目的管理很高效,因此现在使用Git的公司很多,在Ja开发中,我们经常使用的IDEA和Eclipse都可以很好的集成Git;
在IDEA中,天然集成Git插件,因此我们不需要再额外的进行作,只需要在本地中安装Git就可以。
首先我们需要从远程仓库将代码克隆到本地:
当我们打开本地的Git仓库项目之后,我们可以在项目中右击进行Git作,其中包含提交,拉去,推送等命令。
当我们修改完成代码之后,可以在Git下一级菜单中选择commit的选项进行提交,其中可以选择修改过的文件,添加commit message(提交说明),以及每个文件修改的地方。确认无误之后,可以点击commit进行提交,对应的Git命令:
git commit filename -m ‘test’
参数介绍:
filename:需要提价的文件,多个文件用空格隔开,如果是所有文件可以使用参数-a代替-m message,后面跟提交说明
修改完成之后,可以选择git->reitory->push可以将代码推送到远程分支
对应的git命令
git push
我们也可以在git->reitory->pull将代码从远程仓库拉取下来进行更新
Git基本命令
克隆远程仓库到本地:git clone [myproject],将远程代码克隆到本地并重命名myproject(可选)
Git查看远程仓库地址: git remote -v
查看每个文件的修改对比: git diff
提交文件: git commit -m ‘提交信息’ filename
查看提交日志:git log
查看创建新分支:git branch [name] 如果name不为空则创建一个新的分支name
切换分支: git checkout name 需要切换的分支名name会自行推断应该向哪个的哪个分支推送数据。反过来,在这些分支里运行git pull 会获取所有远程索引,并把它们的数据都合并到本地分支中来。
撤销对文件的修改: git checkout filename 将filename(文件名)的修改内容撤销
拉取远程仓库代码: git pull origin/name 如果之前拉取过这个分支,直接使用git pull就可以
将代码推送到远程仓库: git push
.gitignore文件介绍
有时候我们在上传代码的时候,只需要将主要的文件上传即可,对于一些编译后的文件,我们并不需要上传,因此我们可以在.gitignore讲我们不需要的文件进行过滤;
a.txt 忽略指定文件a.txt
target/ 忽略target路径下的所有文件
.class 忽略所有以.class结尾的文件
/build/ 忽略所有build下的文件
希望以上内容对您有所帮助,
如何在Visual Studio中配置git
git branch -a列出所有本地分支和远程分支除了以上方法外,也可以根据Visual Studio中团队资源管理器的提示安装第三方工具。不过有可能出现打不开链接的情况,所以使用前面提到的方法。
安装好后,打开Visual Studio的工具->选项->源代码管理,选择“当前源代码管理插件”为“Microsoft Git 提供程序”。
将需要上传得解决方案添加到源代码管理器,可以从文件->添加到源代码管理,或者在解决方案管理器中选中解决方案,然后右键选择“将解决方案添加到源代码管理”。
点击后会弹出选择对话框,此时选择第二个选项“Git”,复选框“将来创建项目时使用随选的系统”可选可不选,一般选上方便其他项目的管理。
此时,添加后的项目会在团队资源管理器中显示,此时我们先点击主页图标,打开项目管理目录,包括“更改”、“分支”、“未同步提交”和“设置”。此处我们选择“设置”,并点击“Git设置”。
在git设置中,设置好用户名和电子邮件地址,使用github的用户名和邮箱即可。
设置好后点击更新,系统在项目目录下添加了两个文件,忽略文件“.gitignore”和属性文件“.gitattributes”。这两个文件也可以自己编辑修改,设置需要忽略的文件。
设置好以后,回到团队资源管理器主页,选择“更改”,然后输入commit消息,点击提交。
点击"发布",此时将弹出对话框提示连接到github,输入即可。确定后就发布成功了。
注意事项
Visual Studio仅支持HTTP and HTTPS,不支持ssh协议,所以设置仓库地址时一定要选用hgit add 添加指定文件到暂存区ttps的地址。
Android开发,切换Git分支等作,切换后再切回来,编译时是否需要make clean?
场景: 你在一个更早期的 commit 里忘记了加入一个文件,如果更早的 commit 能包含这个忘记的文件就太棒了。你还没有 push,但这个 commit 不是最近的,所以你没法用 commit --amend.如果你当前的环境编译过,会产生很多编译过的文件(未提交)。低版本的git,想切分支想切不过去。高版本的git是可以切的,同时会把没提交的那些文件也带过去。不做make clean可能也会编译过。但不提交后便可以推送到github了,前提是在github中已经创建好了一个仓库用来存储该项目。我已经在我的github中创建了“UDP”仓库,根据Visual Studio中的提示选择同步,或点击“未同步提交”,将仓库地址(一定是你想要的结果。特别是比较底层的东西,切过分支后有改变,但刚才已经编译过,可能就不编了。编译结果就跟当前分支的代码不一致了
git checkout 为什么叫“签出”,不叫"切换"
方法: git branch feature, git reset --hard origin/, and git checkout feature在初次创建分支时,即用git branch
这样用可以创建新的分支并切换到新分支上去,b代表branch的意思,newbranch 是新分支的名称,如果没有指定提交点(start_point),默认从HEAD指向的提交创建分支。
g对应命令 git pullit branch
创建新的分支,但是不会切换到新建的分支上,如果没有指定start_point,默认从HEAD指向的提交创建分支。
不仅是签出,还有切换分支的功能
如何用 Git 将代码恢复到一个历史的版本
关注有些时候,在一些特殊情况下,我们需要将代码恢复到一个历史的提交版本上。而这个历史提交版本,离的提交已经比较久远了。
比如,我希望将如下的仓库的提交,恢复到上上上上次提交。当然,我可以一次一次的 rrt,但是有没有更快更简单的办法呢?
暴git reset —hard 暂存区、工作区的内容都会被修改到与提交点完全一致的状态力的方式
如果你的仓库是自己在用(不影响别人),那么你可以使用 git reset --hard
对于刚刚的例子,需要执行的命令就是:
// 备份当前的分支到 backup_commit
git tag backup_commit
git push origin backup_commit
// 重置 source 分支
git reset --hard 23801b2
// 强制 push 更新远程分支
git push origin source -f
温和的方式
如果你的仓库是多人在协作,那么你这么作会使用别人本地的代码库混乱,所以只能建一个新的提交,这个新的提交中把想取消的提交都 rrt 掉,那么具体应该如何做呢?方法如下:
首先,和刚刚一样,用 git reset --hard 23801b2 将代码切换到目标提交的 id。接下来,用 git reset --soft origin/source 命令,将当前代码切换回的提交。
不过经过念茜的提醒,该方法需要保证 reset 的时候没有别人做新的提交,如果有的话,会一并把别人的提交也撤销了。所以还是挺危险的,慎用。
虽然用到的时候很少,但是理解它的原理有助于大家理解 Git 的工作区,暂存区和版本库的各种指针作的意义,希望对大家有用。
ideagit切换分支提示删除
如果你需要保留 commit 的内容,而是对 commit 消息进行编辑,你可以使用 reword 命令。 把列里的 pick 替换为 reword (或者直接用 r)。有人会觉得在这里直接重写 commit 消息就行了,但是这样不管用 —rebase -i 会忽略 SHA 列前面的任何东西。它后面的文本只是用来帮助我们记住 0835fe2 是干啥的。当你完成 rebase -i 的作之后,你会被提示输入需要编写的任何 commit 消息。闫小样丶
如果是你自己在做这个项目那么保留哪个你就自己清楚了,如果是团队开发的,你就需要和对应冲突模块的开发者交流,再进行冲突修改2019-10-15 17:27:38
4点赞
闫小样丶
码龄7年
今天在分支切换的过程中,突然给我提示:
提示信息为:有文件修改了需要提交,但我并没有对其进行修改。
注意:不要去选择 y/n,进行作。否则会一直报出这样的提示。
问题的原因是你工作目录有某些文件正在被程序使用,这个程序多半是Idea,vsCode或者eclipse,当然也可能是其他程序。
解决方案不是简单的选择y或者n,而是关闭vsCode,让vsCode把这些文件释放掉。
关闭vsCode之后,在使用git bash试一次:
fxbfxb111
idea 无法切换分支情况 原创
2021-11-24 16:10:40
fxbfxb111
码龄5年
1.Couldn't checkout origin/winner_single_test: The following untracked working
参考文档:SourceTree 切换分支出现错误:The following untracked working tree files would be overwritten by checkout_php菜鸟技术天地-CSDN博客
git clean -d -fx
即可。可能很多人都不明白-d,-fx到底是啥意思,其实git clean -d -fx表示:删除 一些 没有 git add 的 文件;
git clean 参数
-n 显示将要删除的文件和目录;
-x -----删除忽略文件已经对git来说不识别的文件
-d -----删除未被添加到git的路径中的文件
-f -----强制运行
如何在 Git 里撤销任何作
git clone , clone后面跟随远程仓库的链接地址撤销一个“已公开”的改变
场景: 你已经执行了 git push, 把你的修改发送到了 GitHub,现在你意识到这些 commit 的其中一个是有问题的,你需要撤销那一个 commit.
方法: git rrt
原理: git rrt 会产生一个新的 commit,它和指定 SHA
对应的 commit 是相反的(或者说是反转的)。如果原先的 commit 是“物质”,新的 commit 就是“反物质” — 任何从原先的
commit 里删除的内容会在新的 commit 里被加回去,任何在原先的 commit 里加入的内容会在新的 commit 里被删除。
这是 Git 最安全、最基本的撤销场景,因为它并不会改变历史 — 所以你现在可以 git push 新的“反转” commit 来抵消你错误提交的 commit。
修正一个 commit 消息
场景: 你在一条 commit 消息里有个笔误,已经执行了 git commit -m "Fxies bug #42",但在 git push 之前你意识到消息应该是 “Fixes bug #42″。
方法: git commit --amend 或 git commit --amend -m "Fixes bug #42"
原理: git commit --amend 会用一个新的 commit 更新并替换最近的 commit ,这个新的 commit 会把任何修改内容和上一个 commit 的内容结合起来。如果当前没有提出任何修改,这个作就只会把上次的 commit 消息重写一遍。
撤销“本地的”修改
场景: 一只猫从键盘上走过,无意中保存了修改,然后破坏了编辑器。不过,你还没有 commit 这些修改。你想要恢复被修改文件里的所有内容 — 就像上次 commit 的时候一模一样。
方法: git checkout --
原理: git checkout 会把工作目录里的文件修改到 Git 之前记录的某个状态。你可以提供一个你想返回的分支名或特定 SHA ,或者在缺省情况下,Git 会认为你希望 checkout 的是 HEAD,当前 checkout 分支的一次 commit。
记住:你用这种方法“撤销”的任何修改真的会完全消失。因为它们从来没有被提交过,所以之后 Git 也无法帮助我们恢复它们。你要确保自己了解你在这个作里扔掉的东西是什么!(也许可以先利用 git diff 确认一下)
重置“本地的”修改
场景: 你在本地提交了一些东西(还没有 push),但是所有这些东西都很糟糕,你希望撤销前面的三次提交 — 就像它们从来没有发生过一样。
方法: git reset
原理: git reset 会把你的代码库历史返回到指定的 SHA 状态。 这样就像是这些提交从来没有发生过。缺省情况下, git reset 会保留工作目录。这样,提交是没有了,但是修改内容还在磁盘上。这是一种安全的选择,但通常我们会希望一步就“撤销”提交以及修改内容 — 这就是 --hard 选项的功能。
在撤销“本地修改”之后再恢复
场景: 你提交了几个 commit,然后用 git reset --hard 撤销了这些修改(见上一段),接着你又意识到:你希望还原这些修改!
方法: git reflog 和 git reset 或 git checkout
原理: git reflog 对于恢复项目历史是一个超棒的资源。你可以恢复几乎 任何东西 — 任何你 commit 过的东西 — 只要通过 reflog。
你可能已经熟悉了 git log 命令,它会显示 commit 的列表。 git reflog 也是类似的,不过它显示的是一个 HEAD 发生改变的时间列表.
一些注意事项:
它涉及的只是 HEAD 的改变。在你切换分支、用 git commit 进行提交、以及用 git reset 撤销 commit 时,HEAD 会改变,但当你用 git checkout --
git reflog 不会永远保持。Git 会定期清理那些 “用不到的” 对象。不要指望几个月前的提交还一直躺在那里。
你的 reflog 就是你的,只是你的。你不能用 git reflog 来恢复另一个开发者没有 push 过的 commit。
那么…你怎么利用 reflog 来“恢复”之前“撤销”的 commit 呢?它取决于你想做到的到底是什么:
如果你希望准确地恢复项目的历史到某个时间点,用 git reset --hard
如果你希望重建工作目录里的一个或多个文件,让它们恢复到某个时间点的状态,用 git checkout
如果你希望把这些 commit 里的某一个重新提交到你的代码库里,用 git cherry-pick
利用分支的另一种做法
场景: 你进行了一些提交,然后意识到你开始 check out 的是 分支。你希望这些提交进到另一个特性(feature)分支里。
原理: 你可能习惯了用 git checkout -b
,用 git checkout 切换到新的 feature 分支,并且让你最近所有的工作成果都完好无损。
及时分支,省去繁琐
场景: 你在 分支的基础上创建了 feature 分支,但 分支已经滞后于 origin/ 很多。现在 分支已经和 origin/ 同步,你希望在 feature 上的提交是从现在开始,而不是也从滞后很多的地方开始。
方法: git checkout feature 和 git rebase
原理: 要达到这个效果,你本来可以通过 git reset (不加 --hard, 这样可以在磁盘上保留修改) 和 git checkout -b
git rebase 会做如下的事情:
首先它会找到你当前 check out 的分支和 分支的共同祖先。
然后它 reset 当前 check out 的在使用 --squash 和 --fixup 的时候,你可能不记得想要修正的 commit 的 SHA 了— 只记得它是前面第 1 个或第 5 个 commit。你会发现 Git 的 ^ 和 ~ 作符特别好用。HEAD^ 是 HEAD 的前一个 commit。 HEAD~4 是 HEAD 往前第 4 个 – 或者一起算,倒数第 5 个 commit。分支到那个共同祖先,在一个临时保存区存放所有之前的提交。
然后它把当前 check out 的分支提到 的末尾部分,并从临时保存区重新把存放的 commit 提交到 分支的一个 commit 之后。
大量的撤销/恢复
场景: 你向某个方向开始实现一个特性,但是半路你意识到另一个方案更好。你已经进行了十几次提交,但你现在只需要其中的一部分。你希望其他不需要的提交统统消失。
方法: git rebase -i
原理: -i 参数让 rebase 进入“交互模式”。它开始类似于前面讨论的 rebase,但在重新进行任何提交之前,它会暂停下来并允许你详细地修改每个提交。
rebase -i 会打开你的缺省文本编辑器,里面列出候选的提交。如下所示:
前面两列是键:个是选定的命令,对应第二列里的 SHA 确定的 commit。缺省情况下, rebase -i 定每个 commit 都要通过 pick 命令被运用。
要丢弃一个 commit,只要在编辑器里删除那一行就行了。如果你不再需要项目里的那几个错误的提交,你可以删除上例中的1、3、4行。
如果你需要把两个 commit 合并到一起,你可以使用 squash 或 fixup 命令,如下所示:
squash 和 fixup 会“向上”合并 — 带有这两个命令的 commit 会被合并到它的前一个 commit 里。在这个例子里, 0835fe2 和 6943e85 会被合并成一个 commit, 38f5e4e 和 af67f82 会被合并成另一个。
如果你选择了 squash, Git 会提示我们给新合并的 commit 一个新的 commit 消息; fixup 则会把合并清单里个 commit 的消息直接给新合并的 commit 。 这里,你知道 af67f82 是一个“完了完了….” 的 commit,所以你会留着 38f5e4e as的 commit 消息,但你会给合并了 0835fe2 和 6943e85 的新 commit 编写一个新的消息。
在你保存并退出编辑器的时候,Git 会按从顶部到底部的顺序运用你的 commit。你可以通过在保存前修改 commit 顺序来改变运用的顺序。如果你愿意,你也可以通过如下安排把 af67f82 和 0835fe2 合并到一起:
修复更早期的 commit
方法: git commit --squash
原理: git commit --squash 会创建一个新的 commit ,它带有一个 commit 消息,类似于 squash! Earlier commit。 (你也可以手工创建一个带有类似 commit 消息的 commit,但是 commit --squash 可以帮你省下输入的工作。)
如果你不想被提示为新合并的 commit 输入一条新的 commit 消息,你也可以利用 git commit --fixup 。在这个情况下,你很可能会用commit --fixup ,因为你只是希望在 rebase 的时候使用早期 commit 的 commit 消息。
rebase --autosquash -i 会激活一个交互式的 rebase 编辑器,但是编辑器打开的时候,在 commit 清单里任何 squash! 和 fixup! 的 commit 都已经配对到目标 commit 上了,如下所示:
停止一个文件
场景: 你偶然把 application.log 加到代码库里了,现在每次你运行应用,Git 都会报告在 application.log 里有未提交的修改。你把 .login 放到了 .gitignore 文件里,可文件还是在代码库里 — 你怎么才能告诉 Git “撤销” 对这个文件的呢?
原理: 虽然 .gitignore 会阻止 Git 文件的修改,甚至不关注文件是否存在,但这只是针对那些以前从来没有过的文件。一旦有个文件被加入并提交了,Git 就会持续关注该文件的改变。类似地,如果你利用 git add -f 来强制或覆盖了 .gitignore, Git 还会持续改变的情况。之后你就不必用-f 来添加这个文件了。
如果你希望从 Git 的对象中删除那个本应忽略的文件, git rm --cached 会从对象中删除它,但让文件在磁盘上保持原封不动。因为现在它已经被忽略了,你在 git status 里就不会再看见这个文件,也不会再偶然提交该文件的修改了。
android studio 怎么切换git分支
方法: git rm --cached application.log打开Android studio编写的代码的工具,点击软件中部的位置分支按钮的选项
git merge release 显示冲突弹出了一个Git branches的小窗口的界面中,点击“new branch”新建分支。
在create new branch的需要进行输入分支的昵称,昵称输入完成之后,点击“ok”。
可以看到的提示信息是分支创建成功了。
会弹出一个下一级的菜单中,选中“checkout as new local branch”的选项。
在输入框中输入远程昵称,如果远程分支存在会重新命名,点击“ok”。
可以看到提示信息是远程分支创建成功了。
平安夜 祝福 平安夜祝福语大全简短10个字

小柳今天给分享平安夜 祝福的知识,其中也会对平安夜祝福语大全简短10个字进行解释,希望能解决你的问题,请看下面的文章阅读吧! 平安夜 祝福 平安夜祝福语大全简短10个字 平安夜 祝福 平安···
光有订单编号怎么知道运单号 知道订单编号能

您好,今天小爱来为大家解答以上的问题。光有订单编号怎么知道运单号相信很多小伙伴还不知道,现在让我们一起来看看吧! 光有订单编号怎么知道运单号 知道订单编号能查到什么信息 光有订单编···
考研成绩查询 2020年考研成绩查询入口

大家好我是小怡,考研成绩查询,关于2020年考研成绩查询入口很多人还不知道,那么现在让我们一起来看看吧! 考研成绩查询 2020年考研成绩查询入口 考研成绩查询 2020年考研成绩查询入口 考研成···