TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

I kind of like rebasing

307 点作者 nalgeon11 个月前

52 条评论

AceJohnny211 个月前
Ah! My people.<p>I, too, much prefer a rebase-heavy workflow. It allows me to both have a dirty &quot;internal&quot; history and clean up for publication.<p>As a side-effect, it also makes me comfortable having a mostly linear-history for what I publish, as opposed to a many-branched, merge-heavy one, which I dislike, and makes history confusing.<p>I reject the argument that a no-rebase, merge-only history &quot;preserves the true history of how commits were created&quot;, because I believe that is irrelevant. What is relevant is what the tree looks like once the merge (or rebase) lands.<p>Should a merge conflict arise, in a rebase workflow the conflict resolution is folded into the rebased commit, so it looks like it was fine all along. In a merge workflow, the fix is in the separate merge commit. In both cases you still have to handle the merge conflict. And in my opinion it is not significant for the merge conflict resolution to be separate from the original commit itself because, again: what&#x27;s important is the final state of the repo.
评论 #40754344 未加载
评论 #40754565 未加载
评论 #40764504 未加载
评论 #40759731 未加载
评论 #40765833 未加载
评论 #40754907 未加载
评论 #40762719 未加载
评论 #40758854 未加载
评论 #40762620 未加载
评论 #40758735 未加载
评论 #40762512 未加载
000ooo00011 个月前
Everyone&#x27;s got an opinion on &quot;rebase&quot;, and IMO you can safely ignore those that conflate:<p>* the rebase command, as a means of adjusting commits<p>* the practice of squashing all commits into a single commit (typically, but not always, via rebase)<p>* the &quot;rewriting of history&quot;, whether on public or private branches<p>* rebasing on merge vs. creating a merge commit<p>This article starts by saying they &quot;like rebasing&quot; only to then say<p>&gt;Git rebase allows me to squash my disordered commits into a neat little one<p>Rebase allows this practice but you could just as easily `git reset @~` a few times and then `git add .; git commit -m &quot;My big commit&quot;`. Alternatively the author could just `git add .; git commit --amend --no-edit` throughout the task and end up with the same result. To be fair to the author, they later add that they don&#x27;t always squash to a single commit, but here I&#x27;m talking about &quot;rebasing&quot; vs. commit practices. Rebase is just a tool which allows various practices and it&#x27;s tiresome seeing the same arguments against this nebulous &quot;rebase&quot;, when the arguments are actually directed at practices.
评论 #40764329 未加载
评论 #40778720 未加载
mrinterweb11 个月前
Atomic commits can be great. I really prefer to see intentional atomic commits with meaningful messages than 20+ files changed with a commit message: &quot;Feature X&quot;.<p>I am 100% onboard with devs squashing their &quot;lint fix&quot;, &quot;test fix&quot;, &quot;whatever minor fix to get CI working&quot;, &quot;generally meaningless commit to cross the finish line&quot;. Also, if devs are working on something they check in a &quot;WIP&quot; commit. It is great if you smash your WIPs into a single meaningful commit. These manual squash strategies require some discipline to clean things up.<p>I think the &quot;squash branch to a single commit&quot; merge strategy defeats the purpose of atomic commits. Of course devs will be bad at atomic commits if the commits will inevitably smashed to a single commit. IMO squashing branches on merge is a bad version control strategy. I love it when commits are intentional.<p>One rule I have for any rebasing is, when there may be more than one person using the branch, no more rebasing that branch.
评论 #40754323 未加载
评论 #40758493 未加载
评论 #40759750 未加载
评论 #40761583 未加载
评论 #40754354 未加载
评论 #40761272 未加载
评论 #40778739 未加载
评论 #40763191 未加载
quibono11 个月前
Personally I am squarely in the rebase team although I&#x27;m not completely anti-merge. I find the interactive rebase to be so useful that I pretty much never rebase non-interactively. I wonder if part of the reason the merge flow is more popular (or at least it seems more popular) is because native Git tooling around rebasing isn&#x27;t the best. In fact doing anything more than the simple reword&#x2F;squash&#x2F;reorder (like commit splitting or moving chunks between commits) is abysmal. Magit really shines here and makes it a breeze.
评论 #40754188 未加载
评论 #40754065 未加载
switchbak11 个月前
I had a colleague (smart guy, lots of impressive Ivy League creds after his name) who just _insisted_ that rebasing was evil. There was simply no way to communicate that:<p>- I can rebase all I want in my own private repo<p>- Rebasing is fine if no one else thinks they can depend on your branch&#x27;s history<p>- You obviously don&#x27;t rebase master (!) or a branch that you&#x27;ll collaborate on (not without proper warning at least).<p>I&#x27;ve seen this attitude more than a few times, and I think it&#x27;s fear born of ignorance. I just don&#x27;t get the inability to consider a different perspective.<p>Edit: formatting.
评论 #40754359 未加载
评论 #40754265 未加载
评论 #40763118 未加载
评论 #40764931 未加载
评论 #40762975 未加载
fleekonpoint11 个月前
I also like rebasing. Sometimes my squashing cannot be completed without manual intervention, so I&#x27;ll do a squash merge into a temporary branch instead:<p><pre><code> git checkout main git checkout -b squash-branch git merge --squash [branch-to-rebase] </code></pre> At this point I usually git diff the two branches as a sanity check before merging back into main:<p><pre><code> git diff [branch-to-rebase] git checkout main git merge squash-branch </code></pre> I am normally able to squash rebase 99% of the time using git rebase -i main, but doing a git merge --squash into a temp branch has saved me a lot of hassle over the years.
评论 #40754177 未加载
krick11 个月前
That&#x27;s pretty weak defense of rebase. It almost seems like an attempt to promote the opposite. To &quot;squash my disordered commits into a neat little one&quot; is like <i>the only</i> bad and questionable practice involving the word &quot;rebase&quot; which people can rightfully object to. And rejecting that they will usually (unjustly) reject a dozen of other practices involving &quot;rebase&quot;. &quot;rebase&quot; does not equal &quot;squash&quot;. Using &quot;squash&quot; checkbox in Gitlab is not synonymous to &quot;rebasing&quot;.<p>If you actually care about organizing you disordered commits, you can do it in a sane way and use git rebase -i master. That&#x27;s basically how I work all the time, I don&#x27;t even try to write meaningful commits first, I even commit stuff I know I must drop later and I commit every little incremental change file-by-file (to make re-ordering commits easier). Then I&#x27;ll rebase them interactively to review what I did and make several (most of the time) clean atomic commits.<p>Then, rebase is simply superior to making merge commits all over the place, because it... well, &quot;does nothing&quot; as opposed to &quot;makes your commit tree into a complete mess&quot;. There <i>can</i> be reasons why you would rather not bother rebasing on a particular project, but if you <i>don&#x27;t</i> have them (i.e. you just don&#x27;t have a strong justifiable opinion on that matter), just set [pull] rebase = true, and use git merge --ff whenever possible. Most of the time it doesn&#x27;t even feel any different and <i>just works</i>.
osigurdson11 个月前
The problem with rebase is it creates a lot of friction when sharing with others. Even if a single dev has two checkouts, it can get confusing (&quot;can I just pull the changes or do I need to reset the branch? - dammit what did I do again? I guess I&#x27;ll have to review both checkouts history in detail&quot;). Merge based git push &#x2F; git pull in the other hand, have none of this, thus conceptually much simpler.<p>Furthermore, since pushes must necessarily overwrite (--force), you actually risk loosing work.<p>This is all fine and doable but you have to be &quot;on the ball&quot; &#x2F; paying close attention all the time thus introducing higher cognitive load.<p>The bottom line is getting work done and making history look good are competing objectives to some extent. There are all kinds of reasons to commit code (I got something working, I want to share something, I need to try this on another machine, etc.). Thus, the only way for commits to appear logical &#x2F; atomic is to review the current state and refactor it to a logical looking but artificial series of commits. I can&#x27;t imagine such efforts being useful enough to actually do in most cases. Perhaps even a task better suited to AI.<p>In reality, the PR is the only commit that anyone cares about. Everything else is mostly just noise. Therefore it would be best if the PR was a first class concept in git vs something only available outside of it (i.e. github).
评论 #40759152 未加载
评论 #40759140 未加载
elijahbenizzy11 个月前
100% team rebase -- I think the fear comes from &quot;rewriting history&quot;, which sounds scary until you realize that git is entirely immutable data store (through the API at least). Blockchain for the win!<p>I find merging to be extremely tough to work with -- I don&#x27;t think I actually got <i>good</i> at git until I learned to rebase entirely.<p>Also, cherry-picking (effectively an atomic rebase-type) is underrated.
评论 #40754252 未加载
评论 #40754314 未加载
peter_l_downs11 个月前
Enforce squash merging to main and move on with your life. Linear history on main, individual contributors can rebase and merge or format-patch or do whatever they want on their PR branches and it doesn’t matter. There are zero downsides to this approach.
评论 #40766292 未加载
评论 #40759439 未加载
评论 #40763450 未加载
NathanFlurry11 个月前
Our team switched over to Graphite [1] 8 months ago now. Graphite involves a lot of &quot;restacking&quot; (i.e., rebasing for every commit&#x2F;branch in a &quot;stack&quot;).<p>No one on our team had used rebasing extensively before this, but it&#x27;s hard to go back. Similar to the article, the benefits we see are:<p>- Fast iteration with `gt m` (`git commit --amend`) and `gt s` (`git push --force`) - Using `gt restack` (`git rebase` on each parent commit) helps make merge conflicts more transparent in what happened - Commit histories are much more legible<p>I highly recommend giving it a go.<p>[1] <a href="https:&#x2F;&#x2F;graphite.dev&#x2F;" rel="nofollow">https:&#x2F;&#x2F;graphite.dev&#x2F;</a>
Carrok11 个月前
&gt; Some like to rebase, while others prefer to keep the disorganized records.<p>Keeping disorganized records is the only thing you can say in favor of merge commits, and I&#x27;m unconvinced that&#x27;s a positive thing to begin with.
评论 #40754076 未加载
评论 #40754169 未加载
评论 #40754086 未加载
fastball11 个月前
The best solution is to squash messy commits into one atomic commit, and then use rebasing for a clean history on top of that. But I find that squash-merging <i>all</i> the commits from a PR or branch is generally <i>not</i> what you want.<p>And if you have atomic commits, then merge commits generally aren&#x27;t helpful. As others have pointed out, what matters is when the code was added and what it does, which becomes very clear if you have a linear history without merge commits (but atomic commits as much as possible).<p>If during the development process your commits aren&#x27;t atomic, that is fine, but then you should <i>make them atomic</i> with squashing before they actually get rebased into main.<p>So for example if I&#x27;m in a personal dev branch and I have &quot;messy fix feat A&quot;, &quot;fix feat A but better&quot;, &quot;even better feat A&quot;, and &quot;add feat B&quot;, I should just squash the first three into &quot;Improve feat A&quot; and leave the fourth alone as &quot;Add feat B&quot;. Then after a PR review or tests or whatever you just rebase into main. Now there is still a clear delineation between my fixes to A and my addition of B, without forcing me to make separate PRs for highly related features. I end up with:<p>- clean history<p>- atomic commits<p>- limited mental overhead when doing quick and dirty commits<p>- not forcing atomic PRs which can be overwhelming
breatheoften11 个月前
Strongly pro rebase here.<p>I sometimes wish I could require squash merging to main so that history on main is fully linear -- however the fatal flaw with doing that is that it becomes impossible to know from git history whether a given branch has actually been merged to main or whether it was abandoned and left to dangle and rot forever. The inability to observe merge state for a given commit increases the effort required to know whether some given piece of work was merged (or at least requires using mechanisms that are not native to git to make such a determination) and complicates cleaning up old local branches after they are merged. If you use a graphical git client then seeing a brunch of old local branches that are already merged everywhere is noisy and distracting. When real merges are done then can easily write a script to remove all the branches that are already merged to main which helps to reduce noise and maintain better focus and faster navigation.
stevebmark11 个月前
I find merges more confusing than rebasing. At the end of rebasing you just have commits. Merges are commits with multiple parents, which is a confusing concept.
评论 #40808051 未加载
Taylor_OD11 个月前
I love rebasing. I know a few people who have disliked it when they first started doing it and most of the time its because they would not rebase into their branches often while working. This made for one big rebase at the end which can be a nightmare.
anordal11 个月前
Why haven&#x27;t more people heard of git revise? Unless you actually want to transplant your changes onto a new base, honestly, do yourself a favor and use this instead:<p><a href="https:&#x2F;&#x2F;github.com&#x2F;mystor&#x2F;git-revise">https:&#x2F;&#x2F;github.com&#x2F;mystor&#x2F;git-revise</a><p>Its inability to change your worktree (operates in memory instead) is a big speed and safety feature: It won&#x27;t invalidate your build, and you can&#x27;t screw up the end state.<p>It also has features that regular rebase lacks, like splitting a commit and editing all commits at once. I&#x27;m more than a big fan of it.
PUSH_AX11 个月前
I haven’t found meaningful use for history in years. Neither has anyone on any of the teams I’ve worked on. Nitpicking git practices really feels like a waste of time. Pick something that works and roll with it.
评论 #40765797 未加载
评论 #40765939 未加载
jauntywundrkind11 个月前
GitHub uses the committee date, and the committee date changes with rebase. So I almost always --committer-date-is-author-date. Most people don&#x27;t and it kind of makes their rebases ugly in GitHub, appear to all have happened at time of rebase, which is obviously no good &amp; useless.<p>Rebasing is excellent. It&#x27;s a whole suite of tools, unlike merge, which is just merge, for managing history. Rebasing is how I build a sensible history.<p>I should see if there&#x27;s some way to set --committer-date-is-author-date by default. Also haven&#x27;t found a way to make git pull --rebase do c-d-i-a-d.
micimize11 个月前
Rebasing potentially allows for clean, clear documentation of changeset intent in a way that integrates easily with our existing tooling, at the expense of a potential footgun in highly collaborative scenarios. Ie, if someone forked off your branch or referenced a commit you might break a reference accidentally. So it can be nice, but really depends on the environment you&#x27;re working in.<p>Gerrit solves the referencing issue by using git notes and maintaining its own ID for changesets across rebases. Without such a system, some seeming benefits of the rebase workflow, like atomically reviewable stacked commits, become fairly awkward. IE, if we want to review commits themselves, but their references get clobbered due to a rebase, that&#x27;s no good (this was the case a few years ago with GH&#x27;s rebasing support, maybe improved since).<p>IMO, that we have to make the &quot;rebase or merge&quot; tradeoff at all, or accept the deep limitations of pure commit-based history, is fairly sub-optimal. It&#x27;d be nice if more tooling&#x2F;workflows were built more around notes. I envision someone&#x2F;some bot going back and annotatinb a range of commits with a note that associates them into some coherent code documentation system, or amends some faulty assertion, links artifacts, etc. That way blame could take us to salient docs or surface behavior snapshot gifs or w&#x2F;e. From directly within IDEs
jaredsohn11 个月前
I look forward to the day that I can run a local LLM (for confidentiality reasons) to automatically reorganize commits within my PR. Should be very safe compared to generating code or merging&#x2F;rebasing other code since it is just changing the grouping of commits and the final code should be unchanged.<p>This would free up developers to spend more time solving problems for the business instead of tidying up code.<p>Could also delay doing this to when somebody is trying to understand the code (during review or later) or doing a bisect.
overgard11 个月前
I feel like squash-merge accomplishes what I want (easy revertibility and simpler history). I&#x27;ll admit I need to learn it better, but every time I&#x27;ve tried to use rebase I feel like I&#x27;m playing with fire and I end up doing silly things like making a backup of the whole folder. I just think the process is unintuitive and somewhat scary, and I don&#x27;t get the net gain. Like, outside of looking at the last couple days is anyone really spelunking into history that much anyway?
danjc11 个月前
Your commit history is part of your product, not scaffolding. Well designed commits make a codebase a pleasure to work on and reduce the accrual rate of technical debt.
jaza11 个月前
I just git commit --amend and then git push -f origin feat_branch all my incremental changes. Saves me having to think of even one word commit messages like &quot;typo&quot; or &quot;renaming&quot;. And saves me having to do an interactive rebase later (which basically has the same end result as git commit --amend anyway). Nobody on my team cares about those incremental changes, including me.
jacobr11 个月前
Any article about rebase is incomplete without the mention of `git commit --fixup fb2f677`. When committing you usually already know which commit you’re “fixing” so you specify that.<p>Then you run `git rebase -i --autosquash origin&#x2F;main` instead and the commits are already in the right order.
评论 #40808742 未加载
dham11 个月前
I don&#x27;t know why anyone cares about this stuff. You can literally do whatever you want on your private branch. If you want to make your life harder, that&#x27;s cool. Just squash into the main and call it a day. None of this stuff matters anymore, like it did when I started my career.
评论 #40759167 未加载
评论 #40763455 未加载
kutenai11 个月前
I&#x27;ve looked at the &quot;arguments&quot; for not rebasing and reject them. I&#x27;ve never once thought &#x27;oh shit, I wish I had not rebased that&#x27;.<p>Keeping things neat in the repo has gained me far more than I ever <i>theoretically</i> lost by some conceptual &quot;loss&quot; of history.
pseudoramble11 个月前
Not too interested into diving into the debate itself, but one minor point I wanted to add to the article where they count the commits to squash and then do `git rebase -i HEAD~n` is that you can replace this strategy with using the branch you&#x27;re targeting. So if you&#x27;re working on a feature branch to merge into `main` you can update the local main branch first, then punch in `git rebase -i main` and it&#x27;ll handle finding all the commits for you.<p>I&#x27;m sure there&#x27;s even more clever ways to do this, as it always seems like there&#x27;s more when it comes to git. This is just the most intuitive way I&#x27;ve seen so far, and so it sticks in my mind.
评论 #40762547 未加载
cocoto11 个月前
In my opinion squashing is all you need. You keep the organic history on the original branch and the clean and easy to follow history on the master branch. Ideal would be to have a “collapsing” commit instead of squashing for ergonomy.
评论 #40754174 未加载
评论 #40754451 未加载
评论 #40754099 未加载
swiftcoder11 个月前
One of the biggest barriers to rebasing these days is that GitHub&#x27;s UX for pull requests doesn&#x27;t keep track of comments across a rebase-and-force-push. Frustrating for those of us who prefer this style
xs8311 个月前
I will die on the hill of squash-merge only. It doesnt make the history that confusing having branching visible with some run of the mill standardisation in process.<p>My biggest issue is that if you have to delay a feature then the sheer amount of conflicts you have to resolve (many of which you had nothing to do with) becomes prohibitive.<p>I have no problems with rebasing master or a published branch - thats the release managers problem to deal with everything on but I really dont know where this &quot;rebase everything&quot; comes from
IshKebab11 个月前
Rebasing is definitely the better option if you can do it. Sometimes it is just too much of a pain resolving conflicts if you are rebasing a branch with lots of commits and there are lots of conflicts. In that case I normally squash and then rebase. Branches where there&#x27;s enough history to be worth maintaining multiple commits should - 99% of the time - be separate PRs.<p>The rare exception is when you have multiple people contributing to a branch before it is merged into master, but for obvious reasons you should avoid that when at all possible.
评论 #40754196 未加载
评论 #40754669 未加载
评论 #40754128 未加载
juancn11 个月前
The only issue with rebasing is if someone else has checked out the branch and now they have diverged. It&#x27;s usually a simple fix, but it can get annoying.<p>I tend to checkout branches to do code reviews, when changes are complex a diff is not enough, I want an IDE to help me reason about the code (I sometimes even refactor and try different things just so I can understand the code better, so I can make good suggestions).<p>When I do this, and comment, and the other dev rebases, it&#x27;s an extra step for me on the next CR cycle.
评论 #40754667 未加载
评论 #40759041 未加载
kkfx11 个月前
Rebasing is a way to cleanup when a project have a useless history because of too many small commits, badly described and so on. A dangerous way, but still a way.<p>The issue is another: git does next to nothing to handle forks. We can cherry pick some commits, but there is no easy way to state &quot;we have a project that a certain point in time diverge, keeping some common base, that need to be kept in sync, ignoring the fork specific changes&quot;. This led to long and manual three-way merges. No extra help.
mnahkies11 个月前
This may be rose-tinted glasses, but I was fine with merges with Mercurial &#x2F; <a href="https:&#x2F;&#x2F;tortoisehg.bitbucket.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;tortoisehg.bitbucket.io&#x2F;</a> but subsequently using git (with gitlab&#x2F;GitHub ) I&#x27;ve been rebase + `--force-with-lease` every time. I&#x27;m happy with my current git workflow, but I can&#x27;t help but feel I&#x27;m missing a trick through finding git merge commits so difficult to understand
oftenwrong11 个月前
The debate about whether to preserve the true history or clean it up is based on the limitations of git log. There is no reason we need to choose. Imagine you could `git summarise` a range of commits. Anyone who wanted a clean, straightforward history could read through the highest level of summarisation. If one wanted to dig deeper, they could peel away the summary and look at the log items below it.
captainbland11 个月前
The only rule about rebasing I care about is the golden rule of rebasing: &quot;Never do it on a public branch&quot;. In general I&#x27;m not going to waste my team&#x27;s time by messing about with it otherwise one way or the other, and personally use either rebase or amend depending on context to tidy things up locally, and use merge when interacting with public branches.
knallfrosch11 个月前
It’s interesting how much devs - including me! - care about git history, yet rarely do we use it in a way that makes the rebase-merge-squash differences meaningful.<p>Usually I just look at the file history, find the work item from the commit message and then understand _why_ the code is the way it is. That is the functionality I need to have in mind when changing the file. Who cares how it came to be?
kovac11 个月前
The man who designed git advises against rebasing as a default merge strategy, but the comment section is filled with comments promoting rebasing and coming up with wildly elaborate schemes to deal with its problems without addressing any of the points raised by Torvalds.<p>Git workflows imposed by those that don&#x27;t understand git well enough is one of the most annoying things.
评论 #40808731 未加载
account4211 个月前
&gt; git log @ ^main<p>You can also use `git log main..` to show the commits in HEAD but not in main. I prefer the order of the arguments in the OLD..NEW syntax for the commit range (OLD, NEW] over the reversed order with separate arguments.
notJim11 个月前
Step 3 can be simplified slightly be doing git fetch &amp;&amp; git rebase origin&#x2F;main. No need to check out the local main.
评论 #40754426 未加载
ivolimmen11 个月前
I have been working with git for only 10 years. I know how to fix things when stuff goes wrong. I have no strong opinion on merging strategy. Git is now what my clients are concerned with. I am not getting paid for solving git issues (well not directly, I was never hired for it)
kwakubiney11 个月前
This is exactly what I do at work everytime. The only issue with this sometimes for me is when i rebase interactively and i have my commit message with all squashed commits. So I do a `git commit —-amend` on the squashed commit and tidy up the mess in the message.
xyzzy474711 个月前
If you&#x27;re using complicated git commands, you&#x27;re probably doing the wrong thing.
评论 #40754172 未加载
joshuanapoli11 个月前
I like rebasing too. When I have any significant change, I usually end up making a mix of clean-up and preparation around my new feature. I like to move the separable parts into separate branches, so that there is less to review per request.
phendrenad211 个月前
Great, just don&#x27;t force it on me, or grumble when not everyone on the team does it.
评论 #40808753 未加载
plasticeagle11 个月前
Develop on a branch. Do whatever you like on that branch, no-one cares.<p>Squash merge to main always.<p>Problem solved.
Leszek11 个月前
Use `git log --first-parent` and if you merge, write useful merge commit messages. There, I&#x27;ve resolved the difference between merge and rebase forever.
dudeinjapan11 个月前
Do not like rebasing. For me, it&#x27;s squash-merge all the way, and I compare the actual diff of the code on my new branch.<p>Diffs are what matter--not commits.
iamhamm11 个月前
I read that as “I kind of like freebasing” at first and thought it was a bit racy.
nailer11 个月前
Interactive rebase is indeed great, but:<p><pre><code> # Commands: # p, pick &lt;commit&gt; = use commit # r, reword &lt;commit&gt; = use commit, but edit the commit message # e, edit &lt;commit&gt; = use commit, but stop for amending # s, squash &lt;commit&gt; = use commit, but meld into previous commit # f, fixup [-C | -c] &lt;commit&gt; = like &quot;squash&quot; but keep only the previous </code></pre> ...the CLI git text-document rebase UI is awful. Better command-line rebase UIs are available, or in Fork, I just select a bunch of tweets, right-click, and squash into parent (or use the <a href="https:&#x2F;&#x2F;git-fork.com&#x2F;images&#x2F;interactiveRebase.jpg" rel="nofollow">https:&#x2F;&#x2F;git-fork.com&#x2F;images&#x2F;interactiveRebase.jpg</a> where necessary).<p>If someone complains that CLI git is somehow more pure than using a decent GUI, ask them to rename a stash and time them.
评论 #40754077 未加载
评论 #40754200 未加载
评论 #40754282 未加载
oopsallmagic11 个月前
People need to get comfortable with git being a DAG, and not the degenerate case of just a straight line. Merge commits aren&#x27;t scary, folks.