编辑:在提出问题之前,我已经检查了What does FETCH_HEAD in Git mean? 抱歉原始的不准确的问题。
我的问题是fetch是如何工作的? fetch会丢弃所有当前日志吗?
这是我的情况:我的队友和我正在使用只有一个分支的相同存储库。因此我们必须在推送之前进行取指。
我们通常这样做:
git status
git add .
git commit -m message1
git fetch origin
git reset head
git status
git add .
git commit -m message
git push
但重置后,似乎我之前的提交(message1
)已经消失。
这是正常还是有什么问题?
如何访问我的本地历史记录?
他们已经同步但我的当地历史已经消失。
老员工,忘记了:我最近一直在学习Git CLI
有人告诉我键入" git fetch head
"跟踪远程分支。
但我想知道这是做什么的?此命令是否覆盖我的本地日志?
" git fetch
"之间有什么区别?和" git fetch head
" ?
答案 0 :(得分:4)
您不必进行两次单独的提交,git fetch
也不会删除任何日志。
--o--o--o (origin/master)
\
x--x (master: my local commits)
您应该做的是在git fetch
命令提取的任何新提交的基础上重新定义本地提交:
git fetch
--o--o--o--O--O (origin/master updated)
\
x--x (master)
git rebase origin/master
--o--o--o--O--O (origin/master updated)
\
x'--x' (master rebased)
git push
--o--o--o--O--O--x'--x' (origin/master, master)
更简单,since Git 2.6,我会使用配置:
git config pull.rebase true
git config rebase.autoStash true
然后,一个简单的git pull
会在origin/master
之上自动重播您的本地提交。然后你可以git push
。