我有两个项目。一是“官方”项目,二是轻微修改(添加了一些文件)。我创建了新分支并将新文件放入其中。但是在开发过程中,两个分支共有的一些文件被更改了。
我如何只提交这些文件?
我有两个项目。一是“官方”项目,二是轻微修改(添加了一些文件)。我创建了新分支并将新文件放入其中。但是在开发过程中,两个分支共有的一些文件被更改了。
我如何只提交这些文件?
我想您想将更改提交到一个分支,然后使这些更改在另一个分支中可见。在 git 中,更改分支时不应在 HEAD 顶部进行任何更改。
您通过以下方式仅提交更改的文件:
git commit [some files]
或者如果你确定你有一个干净的暂存区,你可以
git add [some files] # add [some files] to staging area
git add [some more files] # add [some more files] to staging area
git commit # commit [some files] and [some more files]
如果您想让该提交在两个分支上都可用,您可以
git stash # remove all changes from HEAD and save them somewhere else
git checkout <other-project> # change branches
git cherry-pick <commit-id> # pick a commit from ANY branch and apply it to the current
git checkout <first-project> # change to the other branch
git stash pop # restore all changes again
获取要提交的文件列表
$ git status
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: file1
modified: file2
modified: file3
modified: file4
将文件添加到暂存
$ git add file1 file2
检查您正在提交的内容
$ git status
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: file1
modified: file2
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: file3
modified: file4
使用提交消息提交文件
$ git commit -m "Fixed files 1 and 2"
如果你不小心提交了错误的文件
$ git reset --soft HEAD~1
如果您想取消暂存文件并重新开始
$ git reset
Unstaged changes after reset:
M file1
M file2
M file3
M file4
您可以提交一些更新的文件,如下所示:
git commit file1 file2 file5 -m "commit message"
其中一些似乎“不完整”
一群人不会知道他们是否应该使用引号等。
添加1 个显示位置路径的特定文件
git add JobManager/Controllers/APIs/ProfileApiController.cs
提交 (记住,提交只是本地的,它不会影响任何其他系统)
git commit -m "your message"
推送到远程仓库
git push (this is after the commit and this attempts to Merge INTO the remote location you have instructed it to merge into)
其他答案显示您有时想要做的存储等
假设您对多个文件进行了更改,例如:
但是您只想提交 File1 和 File3 的更改。
有两种方法可以做到这一点:
1.仅暂存这两个文件,使用:
git add file1 file3
然后,提交
git commit -m "your message"
然后推,
git push
2.直接提交
git commit file1 file3 -m "your message"
然后推,
git push
实际上,如果我们定期修改文件并暂存它们,则第一种方法很有用-->大型项目,通常是实时项目。
但是如果我们正在修改文件而不是暂存它们,那么我们可以直接提交 --> 小型项目
如果您已经暂存文件,只需取消暂存它们:
git reset HEAD [file-name-A.ext] [file-name-B.ext]
然后将它们一点一点地添加回去。
我想你也可以使用命令行:
git add -p
这使您可以一一查看所有未提交的文件,并选择是否要提交它们。
然后你有一些选项会出现在每次修改中:我用“y”表示“是的,我想添加这个文件”,“n”表示“不,我稍后会提交这个”。
Stage this hunk [y,n,q,a,d,K,g,/,e,?]?
至于其他选项( q,a,d,K,g,/,e,? ),我不确定它们是做什么的,但我猜是“?” 如果您需要更深入地了解细节,可能会对您有所帮助。
这样做的好处是您可以推送您的工作,然后创建一个新分支,所有未提交的工作都将跟随您在该新分支上。如果您编写了许多不同的东西并且您确实想在推送之前在 github 上重新组织您的工作,这将非常有用。
希望这会有所帮助,我之前没有看到它说过(如果被提及,我的错)
如果您没有太多代码更改,这是一种简单的方法:
1. git stash
2. git stash apply
3. remove the files/code you don't want to commit
4. commit the remaining files/code you do want
然后,如果您希望在单独的提交或另一个分支中删除您删除的代码(您未提交的位),那么仍然在此分支上执行:
5. git stash apply
6. git stash
在第 5 步中,您已经应用了存储并提交了您在第 4 步中确实想要的代码,新应用的存储中的差异和未跟踪只是您在第 4 步中提交之前在第 3 步中删除的代码。
因此,第 6 步是您不想 [想要] 提交的代码的存储,因为您可能真的不想丢失这些更改,对吧?因此,现在可以通过在正确的分支上执行 git stash apply 并提交来将步骤 6 中的新存储提交到该分支或任何其他分支。
显然,这假定您在一个流程中执行这些步骤,如果您在这些步骤中的任何其他点进行存储,则需要注意上述每个步骤的存储引用(而不仅仅是基本存储并应用最近的存储)。