如何在 git 分支中重新提交相同的更改
How to re commit same changes in git branch
我已经使用 git 一个星期了。我在一个功能分支中工作,有时当我将代码推送到我的分支时,它显示出与开发分支的很多冲突。所以这次我按照以下步骤避免在工作场所发生不必要的冲突和问题:(
git分支abc
git结帐abc
- 完成我的工作
- git 隐藏
- git拉源开发
- 有冲突
- 解决了冲突,git 隐藏了 pop
- git commit-m'message' // 不知道如何合并不属于冲突的已删除行
- git 推送原点
现在这些步骤导致提交了 2 个文件,一个是我解决冲突的,另一个是我工作的。分别说File1和File2。
现在我需要重新推送我的代码,但只有文件 2,即我工作的那个文件,而不是我在其中解决冲突的文件。
但是 git 状态不会显示任何内容,因为我已经完成了所有的提交和推送。
此外,在某些自动合并期间,必要的代码也会从 File1 中删除。如何恢复?
如有任何帮助,我们将不胜感激?
因为我还在学习GIT所以任何解释都会对我和其他人有所帮助。
我正在使用 BITBUCKET。
谢谢!!
对于 #1 和 #2:它们可以组合 -- git checkout -b abc
对于 #4:你为什么藏起来?我相信你应该在这里提交你的更改。
对于#6:冲突在哪里?在您新创建的功能分支上?那应该是不可能的。
典型的工作流程如下:
- 确保主分支(master 或 developer 或其他)是最新的。在本例中,我将使用 master。
git checkout master
git fetch
git rebase origin/master
- 创建并签出功能分支
git checkout -b featureBranch
- 进行更改
- 提交对 featureBranch 的更改(理想情况下,这将完成多次;而不是一次大的提交)
git add .
# 这只是一个例子;适当地有选择地添加
git commit
- 将本地 featureBranch 推送到远程,以供审查或其他
git push origin featureBranch
- 准备就绪后(例如审查和批准),将 featureBranch 合并到 master
- 根据最新的 master 重新设置 featureBranch
git checkout featureBranch
git fetch
git rebase origin/master
- 确保 master 是最新的
git checkout master
git rebase origin/master
- 合并
git merge --no-fast-forward featureBranch
这个工作流程,通过在合并和使用非快进合并之前重新设置 featureBranch,将导致 master[ 的线性但被描述的历史记录=77=].
祝你好运!
为了扩展之前的答案,我要补充:Git stash 将在 "pocket" 中保存您的更改(如果它们尚未准备好提交)。但是您的更改已经准备就绪,因此没有必要。
关于你在之前评论中的问题(我没有足够的声誉在评论中回答你):git 使用远程存储库中的更改拉更新你的本地存储库和你的工作目录,是一个git 获取的快捷方式,然后是 git 合并。但是,由于 git merge 在历史方面有一些缺点,因此使用 git fetch + git rebase 可能会有用。
Git rebase 在本地工作,因此它可以以与 git merge 类似的方式使用,但不能用于 git pull!。关于git rebase,很多回答都比我解释得好,希望能帮到一点点。
我已经使用 git 一个星期了。我在一个功能分支中工作,有时当我将代码推送到我的分支时,它显示出与开发分支的很多冲突。所以这次我按照以下步骤避免在工作场所发生不必要的冲突和问题:(
git分支abc
git结帐abc
- 完成我的工作
- git 隐藏
- git拉源开发
- 有冲突
- 解决了冲突,git 隐藏了 pop
- git commit-m'message' // 不知道如何合并不属于冲突的已删除行
- git 推送原点
现在这些步骤导致提交了 2 个文件,一个是我解决冲突的,另一个是我工作的。分别说File1和File2。
现在我需要重新推送我的代码,但只有文件 2,即我工作的那个文件,而不是我在其中解决冲突的文件。
但是 git 状态不会显示任何内容,因为我已经完成了所有的提交和推送。 此外,在某些自动合并期间,必要的代码也会从 File1 中删除。如何恢复?
如有任何帮助,我们将不胜感激?
因为我还在学习GIT所以任何解释都会对我和其他人有所帮助。
我正在使用 BITBUCKET。
谢谢!!
对于 #1 和 #2:它们可以组合 -- git checkout -b abc
对于 #4:你为什么藏起来?我相信你应该在这里提交你的更改。
对于#6:冲突在哪里?在您新创建的功能分支上?那应该是不可能的。
典型的工作流程如下:
- 确保主分支(master 或 developer 或其他)是最新的。在本例中,我将使用 master。
git checkout master
git fetch
git rebase origin/master
- 创建并签出功能分支
git checkout -b featureBranch
- 进行更改
- 提交对 featureBranch 的更改(理想情况下,这将完成多次;而不是一次大的提交)
git add .
# 这只是一个例子;适当地有选择地添加git commit
- 将本地 featureBranch 推送到远程,以供审查或其他
git push origin featureBranch
- 准备就绪后(例如审查和批准),将 featureBranch 合并到 master
- 根据最新的 master 重新设置 featureBranch
git checkout featureBranch
git fetch
git rebase origin/master
- 确保 master 是最新的
git checkout master
git rebase origin/master
- 合并
git merge --no-fast-forward featureBranch
- 根据最新的 master 重新设置 featureBranch
这个工作流程,通过在合并和使用非快进合并之前重新设置 featureBranch,将导致 master[ 的线性但被描述的历史记录=77=].
祝你好运!
为了扩展之前的答案,我要补充:Git stash 将在 "pocket" 中保存您的更改(如果它们尚未准备好提交)。但是您的更改已经准备就绪,因此没有必要。
关于你在之前评论中的问题(我没有足够的声誉在评论中回答你):git 使用远程存储库中的更改拉更新你的本地存储库和你的工作目录,是一个git 获取的快捷方式,然后是 git 合并。但是,由于 git merge 在历史方面有一些缺点,因此使用 git fetch + git rebase 可能会有用。
Git rebase 在本地工作,因此它可以以与 git merge 类似的方式使用,但不能用于 git pull!。关于git rebase,很多回答都比我解释得好,希望能帮到一点点。