How to commit a partial file (hunks) to gi

2019-03-22 19:12发布

问题:

I'm a heavy Eclipse PyDev + EGit user and looking to switch to PyCharm. In Eclipse, I can choose to add only certain hunks/lines of a file to the git index, the same as using git add -p from the terminal. I find doing it through a GUI to be faster, and I have been looking for the same functionality in PyCharm. Does it exist? Thanks

回答1:

This is not currently supported. Follow this ticket for details (comment/watch to be notified when it will be implemented).

http://youtrack.jetbrains.com/issue/IDEA-63201


UPDATE 2018-03-13:

This functionality is now implemented (more or less) and will be available in 2018.1 version. A bit more can be found in this blog post.



回答2:

PyCharm manages this through change lists. Here is an example.

  1. We create a new change list from an existing one (one that we've already created, or the default changelist).
  2. We make a couple of changes and hit VCS -> Commit Changes
  3. In the diagram below at {1}, you can see that the changelist is set to Default, and in {2} you can see the actual change. Right click on {2} and select the change.

Now, say we want to commit only this change. We can do this by adding it to a new changelist, by clicking on {3}, and this will pop up:

Since we don't have a new one, let's just create a new changelist using the dialog box. And then let's change the currently selected changelist to New Changelist:

Notice that there is only one file, with one change, just like our changelist. How about we add a few things from the default changelist to the new one:

Now, let's head back to the New Changelist:

Now that we're done with our selective changes, press Commit. After this, we can push:

I pushed to bitbucket, so let's see the changes:

As you can see, only the stuff in the New Changelist was added.



回答3:

Since Pycharm 2018 partial commit (similar to git add -p) can be set up by two settings:

  1. Settings-> General -> Other -> Highlight modified lines in gutter

  2. Settings -> Version Control -> Changelists -> Track changed blocks in text files separately

  3. After that, you will be able to move code blocks to different change-lists or de-select blocks from the commit



回答4:

This is a late comment, but may be helpful to some.

  1. PyCharm has this issue open. This issue, and its duplicates, has been open since at least 2012. Don't hold your breath.

  2. Putting changes in file by file is trivial, just by clicking boxes.

  3. On OS/X, use the GitHub Desktop tool for those cases where you want fine grain commits. It has the correct 'click and drag over blocks of line' interface for this.



标签: git pycharm