For example, run the following: git stashĪnd later (after git reset), reapply these uncommitted changes: git stash pop Make sure to stash or commit anything you need. Uncommitted changes, even if staged (with git add), will be lost. Git branch new-branch-to-save-current-commitsĪfter this, all of the old commits will be kept in new-branch-to-save-current-commits. : It's worth noting that it is possible to maintain current local commits by creating a branch from master before resetting: git checkout master The -hard option changes all the files in your working tree to match the files in origin/master. Git reset resets the master branch to what you just fetched. Git fetch downloads the latest from remote without trying to merge or rebase anything. Jump to the latest commit on origin/master and checkout those files: git reset -hard origin/master Our good friend git checkout is the right tool for the job.Any uncommitted local change to tracked files will be lost, even if staged.īut any local file that's not tracked by Git will not be affected.įirst, update all origin/ refs to latest: git fetch -allīackup your current branch (e.g. The simplest thing that could possibly workĪs it turns out, we’re trying too hard. Maybe, but I think we might have our Git license revoked if we resort to such a hack. When in doubt, pull out the brute force approach? Surely we can just check out the feature branch, copy the files we need to a directory outside the repo, checkout the master branch, and then paste the files back in place. But we want to be done with this task in ten seconds, not ten minutes. Maybe we can just merge the whole branch using -squash, keep the files we want, and throw away the rest. You’re thinking of git add -interactive (which won’t work for our purposes either). We could hunt down the last commit to each of these files and feed that information to git cherry-pick, but that still seems like more work than ought to be necessary. We just want to grab these files in their current state in the feature branch and drop them into the master branch. We don’t want to have to track down all the commits related to these files. git cherry-pick wants to merge a commit - not a file - from one branch into another branch. The team has made numerous commits to the files in question. Isn’t this exactly what git cherry-pick is made for? Not so fast. This seems like it should be a simple enough task, so we start rummaging through our Git toolbox looking for just the right instrument. The code you need to grab is isolated to a handful of files, and those files don’t yet exist in the master branch. (For this example, we’ll assume mainline development occurs in the master branch.) You’re not ready to merge the entire feature branch into master just yet. Something comes up, and you need to add some of the code from that branch back into your mainline development branch. They’ve been working on the branch for several days now, and they’ve been committing changes every hour or so. Part of your team is hard at work developing a new feature in another branch.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |