git - 无法从本地机器中的特定提交 ID 中提取相同的文件?
问题描述
环境:</h1>
- macOS 10.13.5
Git init 并在本地机器中推送更改的文件
注:XXX为本机用户名
➜ gittest git init
Initialized empty Git repository in /Users/XXX/Desktop/gittest/.git/
➜ gittest git:(master) echo "hello" > 1.md
➜ gittest git:(master) ✗ git add 1.md
➜ gittest git:(master) ✗ git commit -m"hello"
[master (root-commit) ea37549] hello
1 file changed, 1 insertion(+)
create mode 100644 1.md
gittest git:(master) ✗ git push --set-upstream /Users/XXX/Desktop/gittest/.git/ master
Branch 'master' set up to track remote branch 'master' from '/Users/XXX/Desktop/gittest/.git/'.
Everything up-to-date
gittest git:(master) ✗ echo "hello 2" >>1.md # change files
➜ gittest git:(master) ✗ git add 1.md
➜ gittest git:(master) ✗ git commit -m"hello 2"
[master 4593958] hello2
1 file changed, 1 insertion(+)
➜ gittest git:(master) ✗ git push
Everything up-to-date
Git 拉取第一个提交文件但失败
➜ gittest git:(master) git pull
From /Users/XXX/Desktop/gittest/
* branch master -> FETCH_HEAD
Already up to date.
但它无法返回首先提交给 git push 的文件。
预期的
- Git 拉取具有指定提交 ID 的文件并覆盖具有相同名称的原始文件。
- 我不想使用远程服务器或存储库(例如 Github)。请不要提供解决方案。
- 我不想创建另一个分支并合并它。我只想在 master 分支中完成我的目标。
解决方案
你把很多事情搞混了
git init
创建一个完整的存储库,因此git commit
是在该存储库中创建修订的命令。
git push
用于将更改发送到其他存储库。实际上,您只是通过推送创建了对同一存储库的自引用。因此,一切都是最新的,因为您正在尝试更新存储库本身。
git pull
用于从其他存储库获取更改,默认情况下是git fetch
(更新有关远程存储库的本地知识)和git merge
合并尝试将当前分支与远程存储库中分支的更新本地知识合并的快捷方式。
如果您不想处理远程存储库,请不要使用git pull
and git push
。
在 Git 中移动
要移动到存储库中的特定提交,请使用git checkout
. 但要注意,git checkout <commit id>
最终会处于分离的 HEAD状态。
推荐阅读
- javascript - 如何在 gatsby 中获取主机名?
- c++ - 在我们的项目中分配内存的语言语法问题
- xslt - XSLT SUM 其中 ItemCode 就像
- python - 删除具有特定条件的列
- python - 如何减少多变量方程的代码行数?
- json - Jq 以编程方式获取第一个主要值
- javascript - 在不使用 nativeElement 的情况下从 @ViewChild 读取元素
- java - NavigationUI 在主页目的地显示后退(向上)按钮
- ios - 如何观察 AVPlayerItem 准备播放以停止 ActivityIndicator 的那一刻?
- sql - 将多行的值合并为单个