第一次gti前端提交
根据提示一步步看
首先
git check dev
此时可能会报错:
error: Your local changes to the following files would be overwritten by checkout:
.env.development
package.json
Please commit your changes or stash them before you switch branches.
_____________
错误:您对以下文件的本地更改将被签出覆盖:
.env.development
package.json
请在切换分支之前提交或隐藏您的更改。
然后
git stash
git stash 是 Git 版本控制系统中一个非常有用的命令,它允许你将当前工作区(working directory)和暂存区(staging area)的修改“储藏”起来,即暂时保存这些修改,以便稍后能够恢复它们。这个命令在你需要切换分支,但又不希望提交当前分支的修改时特别有用。当你执行 git stash 命令时,Git 会将你的工作区和暂存区的所有改动保存到一个新的 stash 栈中,并清理工作区和暂存区,使其看起来就像你从未做过任何修改一样。之后,你就可以自由地切换到其他分支进行工作,或者进行其他 Git 操作,如拉取(pull)或推送(push)等。当你想要恢复之前储藏的修改时,可以使用 git stash pop 命令。这个命令会将最近储藏的修改应用到当前的工作区和暂存区。如果你想要查看储藏的列表,可以使用 git stash list 命令。此外,git stash 命令还有一些变体,比如:git stash save "message":在储藏时,你可以提供一个消息来描述这次储藏,这样你就可以更容易地识别每个储藏的修改内容。
git stash apply:这个命令与 git stash pop 类似,但它不会从 stash 栈中移除该储藏。这在你想要多次应用同一个储藏时很有用。
git stash drop:如果你想要从 stash 栈中移除一个特定的储藏,可以使用这个命令。你可以通过 git stash list 查看 stash 栈中的储藏,然后使用 git stash drop stash@{index} 来移除指定索引的储藏,其中 {index} 是 stash 栈中储藏的索引号。
git stash 是 Git 中处理临时修改的一个非常灵活的工具,它让你可以在不中断当前工作流程的情况下,轻松地在不同的 Git 分支之间切换。
然后
git checkout dev
git pull
git stash pop
运行结果如图所示:
然后开始加文件:
git add src
git add index.html
git add package.json
git status
最后提交和推送:
git pull
git add src
git commit -m "111"
git push
推送成功:
Enumerating objects: 63, done.
Counting objects: 100% (52/52), done.
Delta compression using up to 8 threads
Compressing objects: 100% (27/27), done.
Writing objects: 100% (29/29), 7.74 KiB | 1.94 MiB/s, done.
Total 29 (delta 13), reused 0 (delta 0), pack-reused 0 (from 0)
remote:
remote: To create a merge request for dev, visit:
remote: http://****/front-end/sate-admin/-/merge_requests/new?merge_request%5Bsource_branch%5D=dev
remote:
To http://****/front-end/sate-admin.git161ad67..a5f0fc2 dev -> dev
这段输出是Git在执行git push命令时,将本地的dev分支推送到远程仓库时的日志信息。顺序解读如下:
这一步是Git在准备推送前,枚举出需要处理的文件对象(objects)总数为63个,现在已经完成。
Git正在计算需要推送的文件对象数量,这里显示的是52个对象已全部计算完成(100%)。
Git使用delta压缩技术来减少传输的数据量,这里使用了最多8个线程来加速压缩过程。
正在压缩需要推送的文件对象,总共27个对象已全部压缩完成(100%)。
正在将压缩后的对象写入到网络传输流中,总共29个对象已全部写入,总大小为7.74 KiB,写入速度为1.94 MiB/s。
本次推送共包含29个对象,其中13个是通过delta压缩(差异压缩)处理的。没有重用之前已经存在于远程仓库的对象,也没有因为pack-reused(包重用)而减少的对象。
remote: 后的几行是远程仓库的提示信息,具体说明:
提示你可以通过访问指定的URL来为新的dev分支创建一个合并请求(Merge Request)。
To 表示推送的远程仓库地址。
161ad67..a5f0fc2 dev -> dev
这表明在远程仓库中,dev分支已经从原来的提交161ad67更新到了新的提交a5f0fc2。同时,也说明你推送的是本地的dev分支到远程的dev分支。
整个输出显示你的git push命令已经成功执行,你的dev分支已经更新到了远程仓库。如果你想要基于这个新的dev分支创建一个合并请求,可以按照远程仓库提示的URL进行操作。
学习
git stash和git checkout/switch
作用:
git stash命令用于暂存你当前的工作目录和暂存区的改动,使其可以稍后恢复,同时让你的工作目录干净(即没有未提交的改动)。这在你需要切换分支但不想提交当前正在进行的工作时非常有用。
git checkout命令在Git 2.23之前被广泛用于切换分支和恢复工作树文件。但是,当Git 2.23版本引入git switch和git restore命令后,git checkout用于分支切换的功能被认为是被git switch命令所取代,尽管它仍然可以用于此目的。
git switch命令专门用于切换分支。
是否先使用git stash取决于你是否需要暂存当前分支的改动以便稍后恢复。
使用顺序:
如果你需要切换到另一个分支(比如dev),但当前有未提交的改动,并希望保留这些改动以便之后继续工作:
首先,使用git stash
暂存你的改动。然后,使用git checkout dev
(如果你使用的是较旧的Git版本)或git switch dev
(如果你使用的是Git 2.23或更高版本)来切换到dev分支。
如果你没有未提交的改动,或者你想丢弃这些改动:
你可以直接使用git checkout dev
或git switch dev
来切换分支,而无需先执行git stash
。
示例:
假设你正在feature分支上工作,但突然需要切换到dev分支来处理一些紧急问题,同时你又不想提交或丢失feature分支上的当前工作:
# 暂存当前分支的改动
git stash # 切换到dev分支
git switch dev
# 或者,如果你使用的是较旧的Git版本
# git checkout dev # ...在dev分支上工作... # 当你回到feature分支并希望恢复之前暂存的改动时
git switch feature
# 或者,如果你使用的是较旧的Git版本
# git checkout feature # 列出所有暂存的改动
git stash list # 恢复最近一次暂存的改动
git stash pop
# 或者,如果你只是想查看但不恢复改动,可以使用
# git stash apply
git stash pop
git stash pop 是一个 Git 命令,用于从 stash 列表中恢复最近一次(或指定的一次)暂存的改动,并将这些改动从 stash 列表中移除。这个命令将你的工作目录和暂存区恢复到 git stash 命令执行之前的状态,但不同之处在于,它会同时删除那个 stash 条目,因为它认为你已经不再需要它了。
当你使用 git stash 暂存你的改动时,Git 会将这些改动保存在一个叫做 stash 列表的地方。这个列表可以包含多个 stash 条目,每个条目都保存了你某次暂存的改动。你可以随时使用 git stash list 查看所有的 stash 条目。
git stash pop 命令的工作流程大致如下:
查找最近的 stash 条目:Git 会找到 stash 列表中最近(也就是最上面)的条目。
恢复改动:然后,Git 会将这些改动应用到当前的工作目录和暂存区中。如果这些改动与当前工作目录中的文件有冲突,Git 可能会要求你解决这些冲突。
删除 stash 条目:一旦改动被成功恢复,Git 就会从 stash 列表中删除那个条目。
如果你只想查看改动而不实际恢复它们,可以使用 git stash apply 而不是 git stash pop。git stash apply 会像 git stash pop 一样恢复改动,但它不会从 stash 列表中删除那个条目。
此外,如果你想要恢复 stash 列表中的特定条目(而不是最近的条目),你可以使用 git stash pop stash@{n} 或 git stash apply stash@{n},其中 {n} 是你想要恢复的 stash 条目的索引(从 0 开始计数)。例如,git stash pop stash@{1} 会恢复第二个 stash 条目(注意索引是从 0 开始的)。
git status
git status 是一个 Git 命令,用于显示工作目录和暂存区的状态。它帮助你了解当前仓库的变动情况,包括哪些文件已经被修改但尚未暂存(staged),哪些文件已经被暂存但尚未提交(committed),以及哪些文件没有被 Git 跟踪(即不在版本控制中)。
当你运行 git status 时,Git 会检查你的工作目录和暂存区,并输出一个报告,通常包括以下几个部分:
当前分支:首先,它会显示你当前所在的分支名称,以及如果当前分支与远程分支有联系,还会显示它们之间的关系(比如,是否有跟踪的远程分支,以及它们是否同步)。
未跟踪的文件:接着,它会列出所有未被 Git 跟踪的文件,即那些还没有被 git add 命令添加到暂存区的文件。
已修改但尚未暂存的文件:然后,它会列出所有已经被修改但尚未被 git add 暂存的文件。这些文件的内容与最后一次提交到仓库的版本不同,但还没有准备好被提交。
已暂存但尚未提交的文件:最后,它会列出所有已经被 git add 暂存但尚未通过 git commit 提交的文件。这些文件的内容已经准备好被包含在下一次提交中。
git status 命令的输出对于理解仓库的当前状态非常有用,尤其是在你准备提交更改或需要了解哪些文件已经改变时。
此外,Git 还提供了一些选项来自定义 git status 的输出。例如,git status -s 或 git status --short 会以更紧凑的格式显示状态信息,这对于脚本或自动化任务可能更有用。