From a088d36a70fbc60a65600c3d19c602595c3d323c Mon Sep 17 00:00:00 2001 From: Cynthia L <70599317+csmlo@users.noreply.github.com> Date: Tue, 21 Jul 2026 00:18:39 +0000 Subject: [PATCH 01/17] Add Project Pods documentation and FAQs for nonprofits (#61253) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Joe Clark <31087804+jc-clark@users.noreply.github.com> --- content/nonprofit/index.md | 4 +- .../creating-a-volunteering-project.md | 137 ++++++++++++++++++ .../frequently-asked-questions.md | 90 ++++++++++++ content/nonprofit/project-pods/index.md | 12 ++ content/nonprofit/quickstart.md | 2 + 5 files changed, 244 insertions(+), 1 deletion(-) create mode 100644 content/nonprofit/project-pods/creating-a-volunteering-project.md create mode 100644 content/nonprofit/project-pods/frequently-asked-questions.md create mode 100644 content/nonprofit/project-pods/index.md diff --git a/content/nonprofit/index.md b/content/nonprofit/index.md index 2e5436185d0f..4a6a1d804669 100644 --- a/content/nonprofit/index.md +++ b/content/nonprofit/index.md @@ -10,6 +10,7 @@ layout: discovery-landing includedCategories: - Apply for nonprofit benefits - Contribute to open source for good + - Submit a project for volunteer pods carousels: recommended: - /nonprofit/quickstart @@ -17,7 +18,7 @@ carousels: - /nonprofit/nonprofit-enterprise-plan/getting-started-with-discounted-github-enterprise-cloud - /nonprofit/troubleshooting/frequently-asked-questions - /nonprofit/contributing-to-open-source-for-good/contributing-to-an-open-source-for-good-project - - /nonprofit/contributing-to-open-source-for-good/adding-an-open-source-project + - /nonprofit/project-pods versions: fpt: '*' children: @@ -25,6 +26,7 @@ children: - /nonprofit-teams-plan - /nonprofit-enterprise-plan - /contributing-to-open-source-for-good + - /project-pods - /troubleshooting --- diff --git a/content/nonprofit/project-pods/creating-a-volunteering-project.md b/content/nonprofit/project-pods/creating-a-volunteering-project.md new file mode 100644 index 000000000000..8eeead2a0b3a --- /dev/null +++ b/content/nonprofit/project-pods/creating-a-volunteering-project.md @@ -0,0 +1,137 @@ +--- +title: Creating a Project Pod for volunteer groups +allowTitleToDifferFromFilename: true +shortTitle: Submit a project for a volunteer pod +intro: 'Learn how to submit a skills-based volunteering project for your nonprofit organization in Project Pods.' +product: "GitHub for Nonprofits" +contentType: tutorials +versions: + fpt: '*' +--- + +## Introduction + +Project Pods is a collaborative space where verified nonprofits can publish short-term, skills-based open source projects and small volunteer groups can team up to build meaningful solutions. The projects will then appear on [For Good First Issue](https://forgoodfirstissue.github.com/) in the "For Teams" section. + +Project Pods are designed for teams, companies, and community circles looking for mission-driven projects that need real technical support on an end to end engagement. Each Pod includes a curated project issue with a clear impact goal, and all the context a group needs to start contributing quickly. + +In this guide, you'll learn how to prepare and submit a project for your nonprofit, what to expect during the review process, and how to set your project up for successful volunteer engagement. + +## Prerequisites + +Before you submit a project, make sure: + +* Your nonprofit is a verified member of **GitHub for Nonprofits**. If you haven't joined yet, see [AUTOTITLE](/nonprofit/quickstart) to apply. +* You have a clear project scope that can be completed by a small team within a defined timeframe. +* You have a GitHub repository (or are ready to create one) where volunteers will contribute. + +> [!NOTE] +> Organizations that are not part of GitHub for Nonprofits can still add individual issues to the For Good First Issue list, but Project Pods are exclusively available to verified nonprofits. + +## Understanding Project Pods + +A Project Pod is a structured volunteering engagement with the following characteristics: + +* Small team: Typically 1 to 20 volunteers to ensure focus and effective collaboration. +* Volunteers contribute their technical, design, or project management skills to solve real problems with a clear end outcome. +* Impact-oriented: Projects address tangible challenges defined by your organization with a tangible deliverable. +* Short-term: Designed to be completed within a defined timeframe for a day, a week, or a number of sprints. +* Collaborative: Pods work together in an open source environment using tools for coordination and contribution. + +## Step 1: Prepare your project + +Before filling out the intake form, gather the following information about your project. The more context you provide, the easier it is for volunteer teams to understand your needs and start contributing. + +### Define the problem + +Write a clear description of the problem your project addresses. Explain why it matters to your nonprofit and the communities you serve. Volunteers are more likely to engage with projects where they can see the real-world impact of their contribution. + +### Identify deliverables and outcomes + +Define what "project done" looks like. Examples: + +* "A working data dashboard that visualizes clean water access by region" +* "An updated documentation site with multilingual support in a low resourced region" +* "A mobile responsive redesign of our donation page" + +Specific deliverables help volunteer teams scope their work and stay focused. + +### List the skills you need + +Identify the types of skills your project requires. These may include: + +* Software development (specify languages and frameworks) +* UX/UI design +* Documentation and technical writing +* Data analysis +* Project management + +### Specify the technology and tools + +List the programming languages, frameworks, platforms, and tools used in your project. This helps volunteer teams assess whether the project matches their skill set. + +### Estimate the time commitment + +Project Pods are designed for short-term engagement. Indicate whether your project is: + +* A **1-day sprint** — focused tasks that can be completed in a single working session +* A **1-week project** — a set of related tasks spanning several days +* An **ongoing short-term engagement** — recurring tasks over a few weeks with a clear end date + +### Prepare your repository + +Your GitHub repository is where volunteers will work. Before submitting, make sure it includes: + +* A **README** that explains the project, its purpose, and how to get started +* A **CONTRIBUTING** file with guidelines for how to contribute +* Any supporting files such as design mockups, architecture diagrams, or project briefs +* Use labels **Project Complete**, **Project Claimed**, **Project Open for Volunteers** for your Project Issue + +If you don't have an existing repository, you can create one and link to it in your submission. You can also link to external documentation or assets. + +## Step 2: Submit the Project Intake Form + +1. Go to [GitHub for Nonprofits](https://github.com/solutions/industry/nonprofits) +1. Select the approved nonprofit GitHub Organization the project will support +1. If you haven't joined yet, see [AUTOTITLE](/nonprofit/quickstart) to apply. +1. Under 'Request Volunteer Developers' section, select **Create Volunteer Request** +1. Complete the intake form with the information you prepared: + + | Field | What to provide | + | --- | --- | + | **About Your Nonprofit** | Description of your nonprofit's mission and the technologies you use. | + | **Project Request** | What problem does this project address? Why is it important to your nonprofit and the people you serve? | + | **Describe the development work needed** | Describe the project deliverables and outcomes. What do you hope to achieve? Be specific on the outcome. Include the skills needed such as software development, UX/UI design, documentation, data analysis, project management, etc. | + | **Primary programming language/technology** | Programming languages, frameworks, platforms. | + | **Number of Volunteers Needed** | Typically 3 to 20 per Pod. | + | **Organization website** | Link to your organization's repository or website. | + | **Project Issue Link** | Share the project link where additional details of your project. Ensure the issue is labeled with **Project Complete**, **Project Claimed**, **Project Open for Volunteers** | + +1. Click **Submit Request** to send your project for review. + +## Step 3: Review process + +After you submit your project, the GitHub Social Impact team will review it. Here's what to expect: + +* **If accepted**: Your project will be listed on the Project Pods page on For Good First Issue, where corporations, community groups, and individual volunteer teams can discover and sign up for it. GitHub Social Impact will support sharing the project with volunteers. +* **If revisions are needed**: You'll receive constructive feedback on how to improve your project for resubmission. Common reasons for revision requests include: + * Unclear goals or deliverables + * Lack of defined tasks or issues in the repository + * Insufficient information about required skills or technology + +> [!NOTE] +> A revision request does not mean your idea is not valuable. It means adjustments will help volunteers engage more effectively. You are welcome to revise and resubmit at any time. + +## Step 4: Working with your volunteer Pod + +Once your project is listed and a volunteer team picks it up by submitting a comment on the issue. All contributions remain open source in your repository for ongoing use. + +### Communication + +Pods work together in an open source environment using your GitHub repository as the primary workspace. Volunteers will interact through issues, pull requests, and discussions in your repository. + +### Your role as project owner + +* Be responsive: Answer questions in issues and review pull requests in a timely manner. Volunteers are donating their time — quick feedback keeps them engaged. +* Provide context: If volunteers ask about your mission or the people you serve, share what you can. Understanding the impact motivates better work. +* Scope changes clearly: If priorities shift during the engagement, update the issues and communicate with the team. diff --git a/content/nonprofit/project-pods/frequently-asked-questions.md b/content/nonprofit/project-pods/frequently-asked-questions.md new file mode 100644 index 000000000000..ca4053cf0eba --- /dev/null +++ b/content/nonprofit/project-pods/frequently-asked-questions.md @@ -0,0 +1,90 @@ +--- +title: Frequently asked questions +intro: 'Find answers to common questions about submitting, joining, and participating in Project Pods.' +versions: + fpt: '*' +shortTitle: Frequently asked questions +category: + - Submit a project for volunteer pods +--- +## For nonprofits + +### Who can submit a project? + +Any verified nonprofit that is part of the [GitHub for Nonprofits](https://nonprofits.github.com/) program. Your organization must be a 501(c)(3) or equivalent nonprofit that is nongovernmental, nonacademic, noncommercial, and nonpolitical in nature. If you haven't joined yet, see [AUTOTITLE](/nonprofit/quickstart) to apply. + +### What kinds of projects are a good fit for Project Pods? + +Projects that have a clear problem, defined deliverables, and can be completed by a small team in a short timeframe. Examples include building a data dashboard, redesigning a website for accessibility, setting up CI/CD pipelines, creating documentation, or developing a new feature for an existing open source tool. The best projects are ones where a volunteer team can make meaningful progress without needing months of onboarding. The more context you provide, the faster volunteer teams can start contributing. At minimum, include a clear problem statement, specific deliverables, the skills and technologies involved, and an estimated time commitment. Projects with well-labeled issues, a contributing guide, and a descriptive README attract volunteers faster. + +### What kinds of projects are not a good fit? + +Projects that require long-term, ongoing maintenance with no clear end point, projects that involve sensitive or proprietary data that can't be shared in an open source repository, or projects that need a single specialized expert rather than a collaborative team. If your project doesn't fit the Pod model, you can still list individual issues on [For Good First Issue](https://forgoodfirstissue.github.com/) for solo contributors. + +### What happens after we submit? + +The GitHub Social Impact team reviews your submission. If accepted, your project is listed on the Project Pods page for volunteer teams to discover. If revisions are needed, you'll receive specific feedback on what to adjust. You can revise and resubmit at any time. + +### Why would a project submission be sent back for revisions? + +Common reasons include unclear goals or deliverables, lack of defined tasks or issues in the repository, or insufficient information about required skills and technology. A revision request means your project needs a few adjustments before it is ready for volunteer teams to pick up. Ensure that project details are specific enough for a team to act on, your repository includes a README and contributing guide, and issues are labeled and scoped for contributors. You are welcome to revise and resubmit at any time. + +### How long does the review process take? + +Reviews are typically completed within two weeks. You'll receive an email notification when your project has been reviewed. + +### How are volunteers matched to our project? + +Once your project is approved, it's listed on the Project Pods page where volunteer teams browse available projects and choose ones that fit their skills and interests. Each listing shows the skills needed, technology stack, and time commitment so teams can self-select. Volunteers join as a group, through a corporate team running a volunteer day, a coding bootcamp cohort, or a community circle looking for a project. Groups then respond to the project issue to be connected for a project kickoff. + +### Are there any costs for nonprofits? + +No. Participation in Project Pods is completely free. + +### What is our role once volunteers start working? + +You are the project owner. Your primary responsibilities are to select the project volunteer team, answer questions in issues and pull requests, review contributions in a timely manner, and provide context about your mission and the mission you serve. Volunteers are donating their time, so responsive communication keeps them engaged and productive. + +### What if the volunteer team doesn't finish the project? + +Project Pods are short-term engagements. If additional work remains, you can extend the project timeline, recruit another Pod, or continue the work internally. All contributions stay in your repository for ongoing use. + +### Can we submit more than one project? + +Yes. You can submit multiple projects. Each one goes through the same review process and is listed independently on the Project Pods page. + +### What if we don't have a full project yet? + +If your organization has individual tasks or issues that could use a contributor but you're not ready to scope a full team-based project, you can list them directly on [For Good First Issue](https://forgoodfirstissue.github.com/). Add your repository and label issues with 'good first issue' or 'help wanted'. Individual developers browsing the site can discover and pick them up on their own. When you're ready to scope a larger project for a team, come back and submit a Project Pod. + +--- + +## For volunteers and teams + +### Who can join a Project Pod? + +Anyone. Corporate volunteer teams, coding bootcamp cohorts, university groups, community circles, or a group of friends. You don't need to be part of a specific organization to participate. + +### How do we find a project to work on? + +Visit the [For Good First Issue Project Pods](https://forgoodfirstissue.github.com/) page and browse listed projects. Each listing includes the problem description, skills needed, technology stack, estimated time commitment, and a link to the GitHub repository. + +### How are volunteers matched to projects? + +There's no formal matching process. Volunteer teams browse available projects and choose ones that align with their skills and interests by replying to the Project Pod issue. + +### What is the typical time commitment? + +It varies by project. Some Pods are designed for a single-day sprint, others span a week, and some involve short-term tasks over a few weeks. Each project listing specifies the estimated time commitment. + +### What if we can't finish the project? + +Communicate with the nonprofit project owner. Let them know what you've completed, what remains, and any context that would help the next team pick up where you left off. All contributions are valuable, even partial ones. Open source means someone else can continue the work. + +### Is there any cost to participate? + +No. Project Pods are completely free for volunteers. + +### Can our company use Project Pods for a corporate volunteer event? + +Yes. Project Pods are designed for exactly this use case. A corporate team can browse available projects, select one that fits their team size and skill set, and complete it during a volunteer day, hackathon, or sprint. Each project listing provides all the context your team needs to get started. diff --git a/content/nonprofit/project-pods/index.md b/content/nonprofit/project-pods/index.md new file mode 100644 index 000000000000..77ed54303584 --- /dev/null +++ b/content/nonprofit/project-pods/index.md @@ -0,0 +1,12 @@ +--- +title: Creating a Project Pod for volunteer groups +allowTitleToDifferFromFilename: true +intro: Learn how to submit a skills-based volunteering project for your nonprofit organization in Project Pods. +versions: + fpt: '*' +shortTitle: Connect your project with developers +children: + - /creating-a-volunteering-project + - /frequently-asked-questions +--- + diff --git a/content/nonprofit/quickstart.md b/content/nonprofit/quickstart.md index 3b8d759ab463..b21a95788826 100644 --- a/content/nonprofit/quickstart.md +++ b/content/nonprofit/quickstart.md @@ -24,6 +24,7 @@ In this guide, you’ll get started with GitHub and sign up for accounts and dis ### Creating a free personal account {% data reusables.accounts.create-account %} + 1. Follow the prompts to create your free personal account. ### Creating an organization @@ -31,6 +32,7 @@ In this guide, you’ll get started with GitHub and sign up for accounts and dis {% data reusables.user-settings.access_settings %} {% data reusables.user-settings.organizations %} {% data reusables.organizations.new-organization %} + 1. Follow the prompts to create a free organization. For more information, see [Get Started](/get-started/learning-about-github/types-of-github-accounts). From de4711a1f993067f946168ede19d051ecf523d77 Mon Sep 17 00:00:00 2001 From: Melissa Pastore <64283754+MelissaPastore@users.noreply.github.com> Date: Tue, 21 Jul 2026 01:43:28 +0000 Subject: [PATCH 02/17] Add 'Repository-level Copilot usage metrics' reference doc (#62250) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Joe Clark <31087804+jc-clark@users.noreply.github.com> Co-authored-by: Vanessa --- .../copilot-usage-metrics/copilot-metrics.md | 4 +- .../copilot-usage-metrics.md | 37 ++++++++++++++----- .../copilot-usage-metrics/example-schema.md | 12 +++++- .../interpret-copilot-metrics.md | 2 +- .../reconciling-usage-metrics.md | 3 +- 5 files changed, 44 insertions(+), 14 deletions(-) diff --git a/content/copilot/concepts/copilot-usage-metrics/copilot-metrics.md b/content/copilot/concepts/copilot-usage-metrics/copilot-metrics.md index 08425918fc93..c0206d421e44 100644 --- a/content/copilot/concepts/copilot-usage-metrics/copilot-metrics.md +++ b/content/copilot/concepts/copilot-usage-metrics/copilot-metrics.md @@ -28,7 +28,7 @@ category: Metrics are available through: -* The {% data variables.product.prodname_copilot_short %} usage metrics APIs, which provide detailed, exportable data at the enterprise, organization, and user levels. +* The {% data variables.product.prodname_copilot_short %} usage metrics APIs, which provide detailed, exportable data at the enterprise, organization, repository, and user levels. * The {% data variables.product.prodname_copilot_short %} usage metrics dashboard, which visualizes 28-day usage trends across your enterprise and organizations. * The code generation dashboard, which breaks down how code is being generated by users and agents across your enterprise and organizations. * The {% data variables.product.prodname_copilot_short %} usage metrics NDJSON export, which offers raw data for custom BI tools or long-term storage. @@ -57,7 +57,7 @@ The following API resources expose {% data variables.product.prodname_copilot_sh | API resource | Scope | Key capabilities | | --- | --- | --- | -| [AUTOTITLE](/rest/copilot/copilot-usage-metrics) | Advanced enterprise-, organization-, and user-level event telemetry | Provides unified telemetry across completions, chat, and agent modes. Includes usage and lines of code metrics across all IDE modes, languages, and models. Supports detailed breakdowns by feature, IDE, language, model, and user, and is the primary API resource being actively developed and maintained. | +| [AUTOTITLE](/rest/copilot/copilot-usage-metrics) | Advanced enterprise- and organization-scoped event telemetry with repository- and user-level reports | Provides unified telemetry across completions, chat, and agent modes. Includes usage and lines of code metrics across all IDE modes, languages, and models. Supports detailed breakdowns by feature, IDE, language, model, and user, as well as repository-level pull request activity reports, and is the primary API resource being actively developed and maintained. | | [AUTOTITLE](/rest/copilot/copilot-user-management) | License and seat assignment | Lists assigned {% data variables.product.prodname_copilot_short %} seats for an organization or enterprise, including license state, user association, and `last_activity_at`. This API resource is the source of truth for license and seat information. | ## How are metrics attributed across organizations? diff --git a/content/copilot/reference/copilot-usage-metrics/copilot-usage-metrics.md b/content/copilot/reference/copilot-usage-metrics/copilot-usage-metrics.md index 112c0bfcb2ba..9b9745813ed6 100644 --- a/content/copilot/reference/copilot-usage-metrics/copilot-usage-metrics.md +++ b/content/copilot/reference/copilot-usage-metrics/copilot-usage-metrics.md @@ -17,8 +17,9 @@ contentType: reference The {% data variables.product.prodname_copilot_short %} usage metrics dashboard and APIs display and export data using a consistent set of fields. This reference lists all available metrics and describes how to interpret their values in both dashboard visuals and NDJSON or API exports. * The {% data variables.product.prodname_copilot_short %} usage metrics dashboards are available at the **enterprise** and **organization** level. -* The {% data variables.product.prodname_copilot_short %} usage metrics APIs return reports scoped to the **enterprise**, **organization**, or **individual user** level, in different shapes depending on scope and granularity. +* The {% data variables.product.prodname_copilot_short %} usage metrics APIs return reports at the **enterprise** or **organization** scope, with aggregated, **repository-level**, and **individual user-level** report granularities. Shapes vary by scope and granularity. * Team-level metrics are not pre-aggregated; you construct them by joining the user-teams report with the per-user usage metrics report. See [AUTOTITLE](/copilot/reference/copilot-usage-metrics/team-level-metrics). +* Repository-level reports contain one record per repository with pull request activity on the requested day. See [Repository-level fields (API only)](#repository-level-fields-api-only) later in this article. For guidance on how to read and interpret these metrics, see [AUTOTITLE](/copilot/concepts/copilot-usage-metrics/copilot-metrics). @@ -71,6 +72,7 @@ Reports come in different shapes depending on their scope and granularity, so th * **Aggregated reports** (`enterprise-1-day` and `org-1-day`) contain one aggregated record per enterprise or organization, including active-user counts, `pull_requests`, and `totals_by_ai_adoption_phase`. They do not contain `user_id`, `user_login`, or the `used_*` indicators. * **28-day reports** (`enterprise-28-day` and `org-28-day`) wrap an array of daily aggregated records in a `day_totals` field, with the reporting window at the top level. * **User-teams reports** (`*-user-teams-1-day`) map users to the teams they belong to, so you can construct team-level metrics. +* **Repository-level reports** (`*-repos-1-day`) contain one record per repository with pull request activity for the day, including pull requests created by {% data variables.copilot.copilot_cloud_agent %} and reviewed by {% data variables.copilot.copilot_code-review_short %}. Organization-scope reports also include `organization_id` alongside `enterprise_id`. For example schemas of the data returned by the APIs, see [AUTOTITLE](/copilot/reference/copilot-usage-metrics/example-schema). @@ -190,6 +192,23 @@ Teams with fewer than 5 seated {% data variables.product.prodname_copilot_short | `team_id` | `integer` | No | Unique ID of the team the user belongs to. | | `slug` | `string` | No | URL-friendly identifier for the team. | +### Repository-level fields (API only) + +Repository-level reports show daily pull request creation, review, merge, and suggestion activity for repositories in an organization or enterprise, including pull requests created by {% data variables.copilot.copilot_cloud_agent %} and reviewed by {% data variables.copilot.copilot_code-review_short %}. Each row represents one repository that had pull request activity on the requested day; repositories with no activity are omitted. These reports focus on pull request lifecycle activity and can contain data even when IDE usage metrics are absent. + +These fields are returned by the daily repository-level report (`repos-1-day`), available via the REST API at the organization and enterprise scopes. For the endpoint URLs, response envelope, permissions, and download workflow, see [AUTOTITLE](/rest/copilot/copilot-usage-metrics). For example rows, see [AUTOTITLE](/copilot/reference/copilot-usage-metrics/example-schema#repository-level-schema-example). + +| Field | Type | Nullable | Description | +|:--|:--|:--|:--| +| `day` | `string` | No | Calendar day this record represents, in `YYYY-MM-DD` format. | +| `enterprise_id` | `string` | No | Unique ID of the enterprise. Populated in enterprise-scoped reports, and in organization-scoped reports for organizations owned by an enterprise. Empty for organizations not owned by an enterprise. | +| `organization_id` | `string` | No | Unique ID of the organization that owns the repository. Included in both enterprise- and organization-scoped reports. | +| `repo_id` | `integer` | No | Unique ID of the repository. | +| `repo_owner_name` | `string` | No | Login of the repository owner. | +| `repo_name` | `string` | No | Repository name. | +| `repo_visibility` | `string` | No | Repository visibility. Possible values are `PRIVATE`, `INTERNAL`, and `PUBLIC`. | +| `pull_requests` | `object` | No | Daily pull request activity for the repository. See [Pull request activity fields](#pull-request-activity-fields). | + ### Activity breakdown objects The `totals_by_*` fields are arrays of breakdown objects. The array is always present but can be empty. Within each object, the metric fields (`*_count` and `loc_*_sum`) follow the same definitions as the top-level per-user fields, and the dimension fields carry the values documented in [Breakdown dimension values](#breakdown-dimension-values). @@ -235,7 +254,7 @@ The `totals_by_cli` object contains the following nested fields when {% data var > [!IMPORTANT] > Organization- and enterprise-level reports may show different totals due to differences in user deduplication and attribution timing. For guidance on interpreting pull request metrics across scopes, see [AUTOTITLE](/copilot/concepts/copilot-usage-metrics/copilot-metrics#interpreting-pull-request-lifecycle-metrics-across-scopes). -The `pull_requests` object appears in aggregated enterprise and organization reports only. It captures daily pull request creation, review, merge, and suggestion activity at the enterprise or organization scope, including activity performed by {% data variables.product.prodname_copilot_short %}. +The `pull_requests` object appears in aggregated enterprise and organization reports, and in repository-level reports. It captures daily pull request creation, review, merge, and suggestion activity, including activity performed by {% data variables.copilot.copilot_cloud_agent %} and {% data variables.copilot.copilot_code-review_short %}. | Field | Type | Nullable | Description | |:--|:--|:--|:--| @@ -245,15 +264,15 @@ The `pull_requests` object appears in aggregated enterprise and organization rep | `pull_requests.median_minutes_to_merge` | `number` | Yes | Median time, in minutes, between pull request creation and merge for pull requests merged on this specific day.

Median is used to reduce the impact of outliers from unusually long-running pull requests. Null when no pull requests were merged that day. | | `pull_requests.total_suggestions` | `integer` | No | Total number of pull request review suggestions generated on this specific day, regardless of author. | | `pull_requests.total_applied_suggestions` | `integer` | No | Total number of pull request review suggestions that were applied on this specific day, regardless of author. | -| `pull_requests.total_created_by_copilot` | `integer` | No | Number of pull requests created by {% data variables.product.prodname_copilot_short %} on this specific day. | -| `pull_requests.total_reviewed_by_copilot` | `integer` | No | Number of pull requests reviewed by {% data variables.product.prodname_copilot_short %} on this specific day.

A pull request may be counted on multiple days if {% data variables.product.prodname_copilot_short %} reviews it on multiple days. | -| `pull_requests.total_merged_created_by_copilot` | `integer` | No | Number of pull requests created by {% data variables.product.prodname_copilot_short %} that were merged on this specific day. Each pull request is counted only on the day it is merged. | +| `pull_requests.total_created_by_copilot` | `integer` | No | Number of pull requests created by {% data variables.copilot.copilot_cloud_agent %} on this specific day. | +| `pull_requests.total_reviewed_by_copilot` | `integer` | No | Number of pull requests reviewed by {% data variables.copilot.copilot_code-review_short %} on this specific day.

A pull request may be counted on multiple days if {% data variables.copilot.copilot_code-review_short %} reviews it on multiple days. | +| `pull_requests.total_merged_created_by_copilot` | `integer` | No | Number of pull requests created by {% data variables.copilot.copilot_cloud_agent %} that were merged on this specific day. Each pull request is counted only on the day it is merged. | | `pull_requests.total_merged_reviewed_by_copilot` | `integer` | No | Number of pull requests that were both merged and reviewed by {% data variables.copilot.copilot_code-review_short %} during the reporting period. | -| `pull_requests.median_minutes_to_merge_copilot_authored` | `number` | Yes | Median time, in minutes, between pull request creation and merge for pull requests created by {% data variables.product.prodname_copilot_short %} and merged on this specific day. Null when no such pull requests were merged that day. | +| `pull_requests.median_minutes_to_merge_copilot_authored` | `number` | Yes | Median time, in minutes, between pull request creation and merge for pull requests created by {% data variables.copilot.copilot_cloud_agent %} and merged on this specific day. Null when no such pull requests were merged that day. | | `pull_requests.median_minutes_to_merge_copilot_reviewed` | `number` | Yes | Median time, in minutes, between pull request creation and merge, calculated only for pull requests reviewed by {% data variables.copilot.copilot_code-review_short %}. Null when no such pull requests were merged that day. | -| `pull_requests.total_copilot_suggestions` | `integer` | No | Number of pull request review suggestions generated by {% data variables.product.prodname_copilot_short %} on this specific day. | -| `pull_requests.total_copilot_applied_suggestions` | `integer` | No | Number of pull request review suggestions generated by {% data variables.product.prodname_copilot_short %} that were applied on this specific day. | -| `pull_requests.copilot_suggestions_by_comment_type` | `array` | No | Aggregated counts of {% data variables.product.prodname_copilot_short %} code review suggestions, broken down by the comment type {% data variables.product.prodname_copilot_short %} assigned (for example, `security` or `bug_risk`). Each entry includes `comment_type`, `total_copilot_suggestions`, and `total_copilot_applied_suggestions`. Always present but can be empty. Not available at the repository level. | +| `pull_requests.total_copilot_suggestions` | `integer` | No | Number of pull request review suggestions generated by {% data variables.copilot.copilot_code-review_short %} on this specific day. | +| `pull_requests.total_copilot_applied_suggestions` | `integer` | No | Number of pull request review suggestions generated by {% data variables.copilot.copilot_code-review_short %} that were applied on this specific day. | +| `pull_requests.copilot_suggestions_by_comment_type` | `array` | No | Aggregated counts of {% data variables.copilot.copilot_code-review_short %} suggestions, broken down by the assigned comment type (for example, `security` or `bug_risk`). Each entry includes `comment_type`, `total_copilot_suggestions`, and `total_copilot_applied_suggestions`. Always present but can be empty. | ### AI adoption phase fields diff --git a/content/copilot/reference/copilot-usage-metrics/example-schema.md b/content/copilot/reference/copilot-usage-metrics/example-schema.md index f4050a182336..9d2a996ed5b1 100644 --- a/content/copilot/reference/copilot-usage-metrics/example-schema.md +++ b/content/copilot/reference/copilot-usage-metrics/example-schema.md @@ -13,7 +13,7 @@ category: allowTitleToDifferFromFilename: true --- -The following are example schemas for the user-level and enterprise-level data returned by the {% data variables.product.prodname_copilot_short %} usage metrics endpoints. The actual data returned may vary based on the specific metrics being tracked and the level of aggregation. You can use these examples as a reference for understanding the structure of the data and how to interpret the various fields and metrics included in the API response. +The following are example schemas for the user-level, enterprise-level, and repository-level data returned by the {% data variables.product.prodname_copilot_short %} usage metrics endpoints. The actual data returned may vary based on the specific metrics being tracked and the level of aggregation. You can use these examples as a reference for understanding the structure of the data and how to interpret the various fields and metrics included in the API response. ## User-level schema example @@ -317,3 +317,13 @@ The following user-teams report examples are returned by the `user-teams-1-day` } ] ``` + +## Repository-level schema example + +The following repository-level report example is returned in the NDJSON files downloaded from the `repos-1-day` endpoints. Each row represents one repository with pull request activity on the requested day. Both enterprise- and organization-scoped rows populate `organization_id` (the organization that owns each repository). Enterprise-scoped rows also populate `enterprise_id`, and organization-scoped rows populate `enterprise_id` only for organizations owned by an enterprise. For the field reference, see [AUTOTITLE](/copilot/reference/copilot-usage-metrics/copilot-usage-metrics#repository-level-fields-api-only). + +```json copy +{"day":"2026-07-14","enterprise_id":"1001","organization_id":"2002","repo_id":900000001,"repo_owner_name":"octodemo-metrics","repo_name":"example-service-alpha","repo_visibility":"INTERNAL","pull_requests":{"total_reviewed":1,"total_created":1,"total_created_by_copilot":1,"total_reviewed_by_copilot":1,"total_merged":1,"median_minutes_to_merge":372.62,"total_suggestions":0,"total_applied_suggestions":0,"total_merged_created_by_copilot":1,"median_minutes_to_merge_copilot_authored":372.62,"total_copilot_suggestions":0,"total_copilot_applied_suggestions":0,"total_merged_reviewed_by_copilot":1,"median_minutes_to_merge_copilot_reviewed":372.62,"copilot_suggestions_by_comment_type":[]}} +{"day":"2026-07-14","enterprise_id":"1001","organization_id":"2002","repo_id":900000003,"repo_owner_name":"octodemo-metrics","repo_name":"example-service-gamma","repo_visibility":"INTERNAL","pull_requests":{"total_reviewed":1,"total_created":0,"total_created_by_copilot":0,"total_reviewed_by_copilot":1,"total_merged":1,"median_minutes_to_merge":1020.53,"total_suggestions":0,"total_applied_suggestions":1,"total_merged_created_by_copilot":0,"total_copilot_suggestions":0,"total_copilot_applied_suggestions":1,"total_merged_reviewed_by_copilot":1,"median_minutes_to_merge_copilot_reviewed":1020.53,"copilot_suggestions_by_comment_type":[{"comment_type":"spelling","total_copilot_suggestions":0,"total_copilot_applied_suggestions":1}]}} +{"day":"2026-07-14","organization_id":"3003","enterprise_id":"","repo_id":900000010,"repo_owner_name":"octodemo-metrics","repo_name":"example-service-delta","repo_visibility":"PRIVATE","pull_requests":{"total_reviewed":1,"total_created":0,"total_created_by_copilot":0,"total_reviewed_by_copilot":1,"total_merged":2,"median_minutes_to_merge":1332.96,"total_suggestions":1,"total_applied_suggestions":2,"total_merged_created_by_copilot":1,"median_minutes_to_merge_copilot_authored":1329.47,"total_copilot_suggestions":1,"total_copilot_applied_suggestions":2,"total_merged_reviewed_by_copilot":2,"median_minutes_to_merge_copilot_reviewed":1332.96,"copilot_suggestions_by_comment_type":[{"comment_type":"documentation","total_copilot_suggestions":1,"total_copilot_applied_suggestions":1},{"comment_type":"spelling","total_copilot_suggestions":0,"total_copilot_applied_suggestions":1}]}} +``` diff --git a/content/copilot/reference/copilot-usage-metrics/interpret-copilot-metrics.md b/content/copilot/reference/copilot-usage-metrics/interpret-copilot-metrics.md index 95eecdd103ba..ca924ab7a425 100644 --- a/content/copilot/reference/copilot-usage-metrics/interpret-copilot-metrics.md +++ b/content/copilot/reference/copilot-usage-metrics/interpret-copilot-metrics.md @@ -73,5 +73,5 @@ Use trends in usage, feature adoption, and language activity to guide enablement ## Next steps -* To access metrics programmatically, including enterprise, organization, and user-level records, see [AUTOTITLE](/rest/copilot/copilot-usage-metrics). +* To access metrics programmatically, including enterprise, organization, repository, and user-level records, see [AUTOTITLE](/rest/copilot/copilot-usage-metrics). * To construct team-level metrics from the per-user usage metrics report, see [AUTOTITLE](/copilot/reference/copilot-usage-metrics/team-level-metrics). diff --git a/content/copilot/reference/copilot-usage-metrics/reconciling-usage-metrics.md b/content/copilot/reference/copilot-usage-metrics/reconciling-usage-metrics.md index 463681d89343..13e9e4b5045b 100644 --- a/content/copilot/reference/copilot-usage-metrics/reconciling-usage-metrics.md +++ b/content/copilot/reference/copilot-usage-metrics/reconciling-usage-metrics.md @@ -19,8 +19,9 @@ category: The {% data variables.product.prodname_copilot_short %} usage metrics dashboard, APIs, and export files all use the same underlying telemetry data, but they aggregate and present it differently. Understanding these differences helps you reconcile numbers across sources and trust your analysis when preparing internal reports. * The {% data variables.product.prodname_copilot_short %} usage metrics dashboards are available at the **enterprise** and **organization** level. -* The {% data variables.product.prodname_copilot_short %} usage metrics APIs support **enterprise-, organization-, and user-level** records. +* The {% data variables.product.prodname_copilot_short %} usage metrics APIs support **enterprise-, organization-, repository-, and user-level** records. * Team-level totals are not pre-aggregated. They are constructed by joining the user-teams report with the per-user usage metrics report. See [AUTOTITLE](/copilot/reference/copilot-usage-metrics/team-level-metrics). +* Repository-level reports provide daily pull request activity for repositories with activity on the requested day. See [AUTOTITLE](/copilot/reference/copilot-usage-metrics/copilot-usage-metrics#repository-level-fields-api-only). ## Prerequisite From 9c9f850b84325ad0c787bc4127e3d1e13554faf9 Mon Sep 17 00:00:00 2001 From: Jenni C <97056108+dihydroJenoxide@users.noreply.github.com> Date: Tue, 21 Jul 2026 02:49:13 +0000 Subject: [PATCH 03/17] Simplify pull requests docset: consolidate and trim redundant content (#62004) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../renaming-an-organization.md | 2 +- .../troubleshooting-required-status-checks.md | 2 + .../creating-a-pull-request-from-a-fork.md | 2 + .../about-pull-request-reviews.md | 8 +- ...out-permissions-and-visibility-of-forks.md | 66 ++++++- .../working-with-forks/fork-a-repo.md | 24 +-- .../working-with-forks/index.md | 1 - ...sitory-is-deleted-or-changes-visibility.md | 78 --------- .../about-commits.md | 2 +- .../changing-a-commit-message.md | 2 +- ...g-a-commit-on-behalf-of-an-organization.md | 67 -------- ...creating-a-commit-with-multiple-authors.md | 83 +++++++-- .../creating-and-editing-commits/index.md | 1 - .../troubleshooting-commits.md | 161 ++++++++++++++++++ ...sts-on-github-but-not-in-my-local-clone.md | 90 ---------- .../troubleshooting-commits/index.md | 16 -- ...my-commit-is-blocked-by-push-protection.md | 34 ---- ...are-my-commits-linked-to-the-wrong-user.md | 48 ------ .../comparing-commits.md | 29 ++++ .../differences-between-commit-views.md | 40 ----- .../viewing-and-comparing-commits/index.md | 1 - .../setting-repository-visibility.md | 6 +- 22 files changed, 344 insertions(+), 419 deletions(-) delete mode 100644 content/pull-requests/collaborating-with-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility.md delete mode 100644 content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-on-behalf-of-an-organization.md create mode 100644 content/pull-requests/committing-changes-to-your-project/troubleshooting-commits.md delete mode 100644 content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/commit-exists-on-github-but-not-in-my-local-clone.md delete mode 100644 content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/index.md delete mode 100644 content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/my-commit-is-blocked-by-push-protection.md delete mode 100644 content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/why-are-my-commits-linked-to-the-wrong-user.md delete mode 100644 content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/differences-between-commit-views.md diff --git a/content/organizations/managing-organization-settings/renaming-an-organization.md b/content/organizations/managing-organization-settings/renaming-an-organization.md index 6937d1208a65..a9608062624f 100644 --- a/content/organizations/managing-organization-settings/renaming-an-organization.md +++ b/content/organizations/managing-organization-settings/renaming-an-organization.md @@ -47,4 +47,4 @@ After changing your organization's name: ## Further reading -* [AUTOTITLE](/pull-requests/committing-changes-to-your-project/troubleshooting-commits/why-are-my-commits-linked-to-the-wrong-user) +* [AUTOTITLE](/pull-requests/committing-changes-to-your-project/troubleshooting-commits#commits-are-linked-to-the-wrong-user) diff --git a/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks.md b/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks.md index 8ea2fc31d185..a90223910149 100644 --- a/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks.md +++ b/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks.md @@ -14,6 +14,8 @@ shortTitle: Required status checks category: - Merge and close pull requests --- +For an overview of how status checks work, including the difference between checks and commit statuses, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks). + If you have a check and a status with the same name, and you select that name as a required status check, both the check and the status are required. For more information, see [AUTOTITLE](/rest/checks). > [!NOTE] diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork.md index 565d82402dc3..cf46e5f948f5 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork.md +++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork.md @@ -17,6 +17,8 @@ category: --- If your pull request compares your topic branch with a branch in the upstream repository as the base branch, then your topic branch is also called the "compare branch" of the pull request. +Before you can create a pull request from a fork, you need to fork the upstream repository and push your changes to a branch in your fork. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo). + For example: * Your topic branch (also known as “feature branch”) is the branch where you’re making your changes in your forked repository (e.g. `my-topic-branch`). * The base branch is the branch in the upstream (central) repository that you want to merge your changes into (e.g. `main`). diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews.md b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews.md index c65c7ffdacd7..5800c6cedd06 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews.md +++ b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews.md @@ -29,13 +29,11 @@ Anyone with read access can review and comment on proposed changes. When submitt You can comment on specific lines, suggest changes for authors to apply directly, and discuss implementation approaches. Reviews appear in the conversation timeline and merge box. Mark conversation threads as resolved to track addressed feedback. -## Requesting reviews +## Requesting and requiring reviews -Repository owners and collaborators can request reviews from specific people or teams. When you define code owners in a CODEOWNERS file, they're automatically requested as reviewers when a pull request modifies their code. You can re-request reviews after making significant changes. +Repository owners and collaborators can request reviews from specific people or teams. If you define code owners in a CODEOWNERS file, they are automatically requested for review when a pull request modifies their code. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review). -## Required reviews - -Repository administrators can require approvals before pull requests are merged, ensuring code quality and preventing accidental merges. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-pull-request-reviews-before-merging). +To ensure code quality and prevent accidental merges, repository administrators can require approvals before pull requests are merged. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-pull-request-reviews-before-merging). ## Further reading diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks.md b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks.md index cb325784f847..91aa91676505 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks.md +++ b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks.md @@ -2,6 +2,13 @@ title: About permissions and visibility of forks shortTitle: Permissions and visibility intro: 'The permissions and visibility of forks depend on whether the upstream repository is public or private, {% ifversion fpt %}and whether it is owned by an organization{% else %}whether it is owned by an organization, and the policies of your enterprise{% endif %}.' +redirect_from: + - /github/collaborating-with-issues-and-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility + - /articles/changing-the-visibility-of-a-network + - /articles/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility + - /github/collaborating-with-issues-and-pull-requests/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility + - /github/collaborating-with-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility + - /pull-requests/collaborating-with-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility versions: fpt: '*' ghes: '*' @@ -33,10 +40,62 @@ A fork is a new repository that shares code and visibility settings with the ups All repositories belong to a repository network. A repository network contains the upstream repository, the upstream repository's direct forks, and all forks of those forks. All forks in the repository network have the same visibility setting. For more information, see [AUTOTITLE](/repositories/viewing-activity-and-data-for-your-repository/understanding-connections-between-repositories). -If you delete a repository or change the repository's visibility settings, you will affect the repository's forks. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility) +If you delete a repository or change the repository's visibility settings, you will affect the repository's forks. For more information, see [What happens to forks when a repository is deleted or changes visibility](#what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility). If you delete a fork, any code contributions of that fork will still be accessible to the repository network. +## What happens to forks when a repository is deleted or changes visibility + +{% data reusables.repositories.deleted_forks_from_private_repositories_warning %} + +### Deleting a private repository + +When you delete a private repository, all of its private forks are also deleted. + +### Deleting a public repository + +When you delete a public repository, the oldest, active public fork is chosen to be the new upstream repository. All other repositories are forked off of this new upstream and subsequent pull requests go to this new upstream repository. + +### Changing a public repository to a private repository + +If a public repository is made private, its public forks are split off into a new network. As with deleting a public repository, one of the existing public forks is chosen to be the new upstream repository and all other repositories are forked off of this new upstream. Subsequent pull requests go to this new upstream repository. + +In other words, a public repository's forks will remain public in their own separate repository network even after the upstream repository is made private. This allows the fork owners to continue to work and collaborate without interruption. If public forks were not moved into a separate network in this way, the owners of those forks would need to get the appropriate [access permissions](/get-started/learning-about-github/access-permissions-on-github) to pull changes from and submit pull requests to the (now private) upstream repository—even though they didn't need those permissions before. + +> [!WARNING] +> * Making a public repository private will permanently remove stars and watchers associated to users that will no longer have access to this repository. If you decide to make the repository public in the future, it will not be possible to restore these stars and watchers, and this will affect its repository rankings. +> * Dependency graph and {% data variables.product.prodname_dependabot_alerts %} will remain enabled with permission to perform read-only analysis on this repository. Any custom {% data variables.product.prodname_dependabot %} alert rules will be disabled unless {% data variables.product.prodname_code_security %} is enabled for this repository. +> * {% data variables.product.prodname_code_scanning_caps %} will become unavailable unless {% data variables.product.prodname_code_security %} is enabled for this repository. +> * Current forks will remain public and will be detached from this repository. + +{% ifversion ghes %} +If a public repository has anonymous Git read access enabled and the repository is made private, all of the repository's forks will lose anonymous Git read access and return to the default disabled setting. If a forked repository is made public, repository administrators can re-enable anonymous Git read access. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/enabling-anonymous-git-read-access-for-a-repository). +{% endif %} + +#### Deleting the private repository + +If a public repository is made private and then deleted, its public forks will continue to exist in a separate network. + +### Changing a private repository to a public repository + +When a private repository is made public, all the commits in that repository, including any commits previously pushed to private forks of that repository, will be migrated to a new public repository network and become visible to everyone. Any previously created private forks will remain private but will become disconnected from the original repository that was made public. Each private fork will become a separate private repository and create its own independent network of repositories. Any new changes made to these networks will not be accessible from the original repository that was made public. + +#### Deleting the public repository + +If a private repository is made public and then deleted, its private forks will continue to exist as standalone private repositories in separate networks. + +{% ifversion ghes or ghec %} + +### Changing the visibility of an internal repository + +If the policy for your enterprise permits forking, any fork of an internal repository will be private. If you change the visibility of an internal repository, any fork owned by an organization or personal account will remain private. + +#### Deleting the internal repository + +If you change the visibility of an internal repository and then delete the repository, the forks will continue to exist in a separate network. + +{% endif %} + ## About permissions of forks {% data reusables.repositories.private_forks_inherit_permissions %} @@ -85,3 +144,8 @@ Forks within the same organization copy the collaborators and team settings of t Internal repositories only support a single level of forking, it is not possible to fork a private fork of an internal repository. This is intentional to simplify access and management for internal repositories which have enterprise-wide access. This differs from the behavior of public and private repositories, that allow nested forking. {% endif %} + +## Further reading + +* [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility) +* [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-the-forking-policy-for-your-repository) diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo.md b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo.md index 9c6d6c1f79bd..dba0d2dfd5c7 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo.md +++ b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo.md @@ -8,7 +8,7 @@ redirect_from: - /github/getting-started-with-github/fork-a-repo - /github/getting-started-with-github/quickstart/fork-a-repo - /get-started/quickstart/fork-a-repo -intro: A fork is a new repository that shares code and visibility settings with the original upstream repository. +intro: Create a fork of a repository so you can make changes without affecting the upstream repository. permissions: '{% data reusables.enterprise-accounts.emu-permission-fork %}' versions: fpt: '*' @@ -19,25 +19,7 @@ category: --- ## About forks -{% data reusables.repositories.fork-definition-long %} For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks). - -### Propose changes to someone else's project - -For example, you can use forks to propose changes related to fixing a bug. Rather than logging an issue for a bug you have found, you can: - -* Fork the repository. -* Make the fix. -* Submit a pull request to the project owner. - -### Use someone else's project as a starting point for your own idea. - -Open source software is based on the idea that by sharing code, we can make better, more reliable software. For more information, see the [About the Open Source Initiative](https://opensource.org/about) on the Open Source Initiative. - -For more information about applying open source principles to your organization's development work on {% data variables.product.prodname_dotcom %}, see {% data variables.product.prodname_dotcom %}'s white paper [An introduction to innersource](https://resources.github.com/whitepapers/introduction-to-innersource/). - -When creating your public repository from a fork of someone's project, make sure to include a license file that determines how you want your project to be shared with others. For more information, see [Choose an open source license](https://choosealicense.com/) at choosealicense.com. - -{% data reusables.open-source.open-source-guide-repositories %} {% data reusables.open-source.open-source-learning %} +Forking a repository lets you propose changes to a project without affecting the upstream repository. For more information about what forks are and when to use them, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks). ## Prerequisites @@ -202,7 +184,7 @@ gh repo fork REPOSITORY --remote-name "main-remote-repo" You can make any changes to a fork, including: * **Creating branches:** [_Branches_](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository) allow you to build new features or test out ideas without putting your main project at risk. -* **Opening pull requests:** If you want to contribute back to the upstream repository, you can send a request to the original author to pull your fork into their repository by submitting a [pull request](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests). +* **Opening pull requests:** If you want to contribute back to the upstream repository, you can send a request to the original author to pull your fork into their repository by submitting a pull request. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork). ## Find another repository to fork diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/index.md b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/index.md index 5cdd2b561b3b..99d8093b3915 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/index.md +++ b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/index.md @@ -16,6 +16,5 @@ children: - /configuring-a-remote-repository-for-a-fork - /syncing-a-fork - /allowing-changes-to-a-pull-request-branch-created-from-a-fork - - /what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility - /detaching-a-fork --- diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility.md b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility.md deleted file mode 100644 index d5c4da2c6cce..000000000000 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: What happens to forks when a repository is deleted or changes visibility? -intro: Deleting your repository or changing its visibility affects that repository's forks. -redirect_from: - - /github/collaborating-with-issues-and-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility - - /articles/changing-the-visibility-of-a-network - - /articles/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility - - /github/collaborating-with-issues-and-pull-requests/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility - - /github/collaborating-with-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility -versions: - fpt: '*' - ghes: '*' - ghec: '*' -shortTitle: Deleted or changes visibility -category: - - Work with forks ---- -{% data reusables.repositories.deleted_forks_from_private_repositories_warning %} - -## Deleting a private repository - -When you delete a private repository, all of its private forks are also deleted. - -## Deleting a public repository - -When you delete a public repository, the oldest, active public fork is chosen to be the new upstream repository. All other repositories are forked off of this new upstream and subsequent pull requests go to this new upstream repository. - -## Private forks and permissions - -{% data reusables.repositories.private_forks_inherit_permissions %} - -## Changing a public repository to a private repository - -If a public repository is made private, its public forks are split off into a new network. As with deleting a public repository, one of the existing public forks is chosen to be the new upstream repository and all other repositories are forked off of this new upstream. Subsequent pull requests go to this new upstream repository. - -In other words, a public repository's forks will remain public in their own separate repository network even after the upstream repository is made private. This allows the fork owners to continue to work and collaborate without interruption. If public forks were not moved into a separate network in this way, the owners of those forks would need to get the appropriate [access permissions](/get-started/learning-about-github/access-permissions-on-github) to pull changes from and submit pull requests to the (now private) upstream repository—even though they didn't need those permissions before. - -> [!WARNING] -> * Making a public repository private will permanently remove stars and watchers associated to users that will no longer have access to this repository. If you decide to make the repository public in the future, it will not be possible to restore these stars and watchers, and this will affect its repository rankings. -> * Dependency graph and {% data variables.product.prodname_dependabot_alerts %} will remain enabled with permission to perform read-only analysis on this repository. Any custom {% data variables.product.prodname_dependabot %} alert rules will be disabled unless {% data variables.product.prodname_code_security %} is enabled for this repository. -> * {% data variables.product.prodname_code_scanning_caps %} will become unavailable unless {% data variables.product.prodname_code_security %} is enabled for this repository. -> * Current forks will remain public and will be detached from this repository. - -{% ifversion ghes %} -If a public repository has anonymous Git read access enabled and the repository is made private, all of the repository's forks will lose anonymous Git read access and return to the default disabled setting. If a forked repository is made public, repository administrators can re-enable anonymous Git read access. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/enabling-anonymous-git-read-access-for-a-repository). -{% endif %} - -### Deleting the private repository - -If a public repository is made private and then deleted, its public forks will continue to exist in a separate network. - -## Changing a private repository to a public repository - -When a private repository is made public, all the commits in that repository, including any commits previously pushed to private forks of that repository, will be migrated to a new public repository network and become visible to everyone. Any previously created private forks will remain private but will become disconnected from the original repository that was made public. Each private fork will become a separate private repository and create its own independent network of repositories. Any new changes made to these networks will not be accessible from the original repository that was made public. - -### Deleting the public repository - -If a private repository is made public and then deleted, its private forks will continue to exist as standalone private repositories in separate networks. - -{% ifversion ghes or ghec %} - -## Changing the visibility of an internal repository - -If the policy for your enterprise permits forking, any fork of an internal repository will be private. If you change the visibility of an internal repository, any fork owned by an organization or personal account will remain private. - -### Deleting the internal repository - -If you change the visibility of an internal repository and then delete the repository, the forks will continue to exist in a separate network. - -{% endif %} - -## Further reading - -* [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks) -* [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-the-forking-policy-for-your-repository) -* [AUTOTITLE](/organizations/managing-organization-settings/managing-the-forking-policy-for-your-organization) -* [AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-on-forking-private-or-internal-repositories) diff --git a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits.md b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits.md index deb685c40808..59e89b072609 100644 --- a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits.md +++ b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits.md @@ -23,7 +23,7 @@ If the repository you are committing to has compulsory commit signoffs enabled, You can add a co-author on any commits you collaborate on. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors). {% ifversion fpt or ghec %} -You can also create a commit on behalf of an organization. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-on-behalf-of-an-organization).{% endif %} +You can also create a commit on behalf of an organization. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors#creating-a-commit-on-behalf-of-an-organization).{% endif %} Rebasing allows you to change a series of commits and can modify the order of the commits in your timeline. For more information, see [AUTOTITLE](/get-started/using-git/about-git-rebase). diff --git a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message.md b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message.md index 19a001e3a0e5..90bbddc87512 100644 --- a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message.md +++ b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message.md @@ -28,7 +28,7 @@ If the commit only exists in your local repository and has not been pushed to {% 1. In your text editor, edit the commit message, and save the commit. * You can add a co-author by adding a trailer to the commit. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors). {% ifversion fpt or ghec %} - * You can create commits on behalf of your organization by adding a trailer to the commit. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-on-behalf-of-an-organization). + * You can create commits on behalf of your organization by adding a trailer to the commit. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors#creating-a-commit-on-behalf-of-an-organization). {% endif %} The new commit and message will appear on {% data variables.location.product_location %} the next time you push. diff --git a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-on-behalf-of-an-organization.md b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-on-behalf-of-an-organization.md deleted file mode 100644 index df0e355ef36c..000000000000 --- a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-on-behalf-of-an-organization.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Creating a commit on behalf of an organization -intro: 'You can create commits on behalf of an organization by adding a trailer to the commit''s message. Commits attributed to an organization include an `on-behalf-of` badge on {% data variables.product.github %}.' -redirect_from: - - /articles/creating-a-commit-on-behalf-of-an-organization - - /github/committing-changes-to-your-project/creating-a-commit-on-behalf-of-an-organization - - /github/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-on-behalf-of-an-organization -versions: - fpt: '*' - ghec: '*' -shortTitle: On behalf of an organization -category: - - Commit changes ---- - -To create commits on behalf of an organization: - -* You must be a member of the organization indicated in the trailer. -* You must sign the commit. -* Your commit email and the organization email must be in a domain verified by the organization. -* Your commit message must end with the commit trailer `on-behalf-of: @org `. - * `org` is the organization's login. - * `name@organization.com` is in the organization's domain. - -Organizations can use the `name@organization.com` email as a public point of contact for open source efforts. - -## Creating commits with an `on-behalf-of` badge on the command line - -1. Type your commit message and a short, meaningful description of your changes. After your commit description, instead of a closing quotation, add two empty lines. - - ```shell - $ git commit -m "Refactor usability tests. - > - > - ``` - - > [!TIP] - > If you're using a text editor on the command line to type your commit message, ensure there are two newlines between the end of your commit description and the `on-behalf-of:` commit trailer. - -1. On the next line of the commit message, type `on-behalf-of: @org `, then a closing quotation mark. - - ```shell - $ git commit -m "Refactor usability tests. - > - > - on-behalf-of: @ORG NAME@ORGANIZATION.COM" - ``` - -The new commit, message, and badge will appear on {% data variables.product.prodname_dotcom %} the next time you push. For more information, see [AUTOTITLE](/get-started/using-git/pushing-commits-to-a-remote-repository). - -## Creating commits with an `on-behalf-of` badge on {% data variables.product.github %} - -After you've made changes in a file using the web editor on {% data variables.product.github %}, you can create a commit on behalf of your organization by adding an `on-behalf-of:` trailer to the commit's message. - -1. Click **Commit changes...** -1. In the "Commit message" field, type a short, meaningful commit message that describes the changes you made. -1. In the text box below your commit message, add `on-behalf-of: @org `. -1. Click **Commit changes** or **Propose changes**. - -The new commit, message, and badge will appear on {% data variables.product.prodname_dotcom %}. - -## Further reading - -* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile) -* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile) -* [AUTOTITLE](/repositories/viewing-activity-and-data-for-your-repository/viewing-a-projects-contributors) -* [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message) diff --git a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md index af1828d926b6..bca3f1dcbe70 100644 --- a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md +++ b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md @@ -1,19 +1,29 @@ --- -title: Creating a commit with multiple authors -intro: 'You can attribute a commit to more than one author by adding one or more `Co-authored-by` trailers to the commit''s message. Co-authored commits are visible on {% data variables.product.github %}{% ifversion ghes %} and can be included in the profile contributions graph and the repository''s statistics{% endif %}.' +title: Creating a commit with multiple authors or on behalf of an organization +allowTitleToDifferFromFilename: true +intro: 'You can attribute a commit to more than one author, or to an organization, by adding trailers to the commit''s message.' redirect_from: - /articles/creating-a-commit-with-multiple-authors - /github/committing-changes-to-your-project/creating-a-commit-with-multiple-authors - /github/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors + - /articles/creating-a-commit-on-behalf-of-an-organization + - /github/committing-changes-to-your-project/creating-a-commit-on-behalf-of-an-organization + - /github/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-on-behalf-of-an-organization + - /pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-on-behalf-of-an-organization versions: fpt: '*' ghes: '*' ghec: '*' -shortTitle: With multiple authors +shortTitle: Multiple authors or an org category: - Commit changes --- -## Required co-author information + +## Creating a commit with multiple authors + +You can attribute a commit to more than one author by adding one or more `Co-authored-by` trailers to the commit's message. Co-authored commits are visible on {% data variables.product.github %}{% ifversion ghes %} and can be included in the profile contributions graph and the repository's statistics{% endif %}. + +### Required co-author information Before you can add a co-author to a commit, you must know the appropriate email to use for each co-author. For the co-author's commit to count as a contribution, you must use the email associated with their account on {% data variables.location.product_location %}. @@ -30,11 +40,11 @@ For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managi {% endif %} -## Creating co-authored commits using {% data variables.product.prodname_desktop %} +### Creating co-authored commits using {% data variables.product.prodname_desktop %} You can use {% data variables.product.prodname_desktop %} to create a commit with a co-author. For more information, see [AUTOTITLE](/desktop/making-changes-in-a-branch/committing-and-reviewing-changes-to-your-project-in-github-desktop#write-a-commit-message-and-push-your-changes) and [{% data variables.product.prodname_desktop %}](https://desktop.github.com). -## Creating co-authored commits on the command line +### Creating co-authored commits on the command line {% data reusables.pull_requests.collect-co-author-commit-git-config-info %} @@ -62,7 +72,7 @@ You can use {% data variables.product.prodname_desktop %} to create a commit wit The new commit and message will appear on {% data variables.location.product_location %} the next time you push. For more information, see [AUTOTITLE](/get-started/using-git/pushing-commits-to-a-remote-repository). -## Creating co-authored commits on {% data variables.product.github %} +### Creating co-authored commits on {% data variables.product.github %} After you've made changes in a file using the web editor on {% data variables.product.github %}, you can create a co-authored commit by adding a `Co-authored-by:` trailer to the commit's message. @@ -74,11 +84,64 @@ After you've made changes in a file using the web editor on {% data variables.pr The new commit and message will appear on {% data variables.location.product_location %}. +{% ifversion fpt or ghec %} + +## Creating a commit on behalf of an organization + +You can create commits on behalf of an organization by adding a trailer to the commit's message. Commits attributed to an organization include an `on-behalf-of` badge on {% data variables.product.github %}. + +To create commits on behalf of an organization: + +* You must be a member of the organization indicated in the trailer. +* You must sign the commit. +* Your commit email and the organization email must be in a domain verified by the organization. +* Your commit message must end with the commit trailer `on-behalf-of: @org `. + * `org` is the organization's login. + * `name@organization.com` is in the organization's domain. + +Organizations can use the `name@organization.com` email as a public point of contact for open source efforts. + +### Creating commits with an `on-behalf-of` badge on the command line + +1. Type your commit message and a short, meaningful description of your changes. After your commit description, instead of a closing quotation, add two empty lines. + + ```shell + $ git commit -m "Refactor usability tests. + > + > + ``` + + > [!TIP] + > If you're using a text editor on the command line to type your commit message, ensure there are two newlines between the end of your commit description and the `on-behalf-of:` commit trailer. + +1. On the next line of the commit message, type `on-behalf-of: @org `, then a closing quotation mark. + + ```shell + $ git commit -m "Refactor usability tests. + > + > + on-behalf-of: @ORG NAME@ORGANIZATION.COM" + ``` + +The new commit, message, and badge will appear on {% data variables.product.prodname_dotcom %} the next time you push. For more information, see [AUTOTITLE](/get-started/using-git/pushing-commits-to-a-remote-repository). + +### Creating commits with an `on-behalf-of` badge on {% data variables.product.github %} + +After you've made changes in a file using the web editor on {% data variables.product.github %}, you can create a commit on behalf of your organization by adding an `on-behalf-of:` trailer to the commit's message. + +1. Click **Commit changes...** +1. In the "Commit message" field, type a short, meaningful commit message that describes the changes you made. +1. In the text box below your commit message, add `on-behalf-of: @org `. +1. Click **Commit changes** or **Propose changes**. + +The new commit, message, and badge will appear on {% data variables.product.prodname_dotcom %}. + +{% endif %} + ## Further reading -{% ifversion ghes %} * [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile) -* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile){% endif %} +* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile) * [AUTOTITLE](/repositories/viewing-activity-and-data-for-your-repository/viewing-a-projects-contributors) * [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message) -* [AUTOTITLE](/desktop/making-changes-in-a-branch/committing-and-reviewing-changes-to-your-project-in-github-desktop#4-write-a-commit-message-and-push-your-changes) in the {% data variables.product.prodname_desktop %} documentation +* [AUTOTITLE](/desktop/making-changes-in-a-branch/committing-and-reviewing-changes-to-your-project-in-github-desktop#write-a-commit-message-and-push-your-changes) in the {% data variables.product.prodname_desktop %} documentation diff --git a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/index.md b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/index.md index e2b3c15ee67e..4cc690448bec 100644 --- a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/index.md +++ b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/index.md @@ -11,7 +11,6 @@ versions: children: - /about-commits - /creating-a-commit-with-multiple-authors - - /creating-a-commit-on-behalf-of-an-organization - /changing-a-commit-message shortTitle: Create & edit commits --- diff --git a/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits.md b/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits.md new file mode 100644 index 000000000000..b2a00f11e686 --- /dev/null +++ b/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits.md @@ -0,0 +1,161 @@ +--- +title: Troubleshooting commits +shortTitle: Troubleshooting commits +intro: 'Resolve common problems with commits, such as commits linked to the wrong user, commits that are missing from your local clone, and commits blocked by push protection.' +redirect_from: + - /articles/troubleshooting-commits + - /github/committing-changes-to-your-project/troubleshooting-commits + - /articles/how-do-i-get-my-commits-to-link-to-my-github-account + - /articles/why-are-my-commits-linked-to-the-wrong-user + - /github/committing-changes-to-your-project/why-are-my-commits-linked-to-the-wrong-user + - /github/committing-changes-to-your-project/troubleshooting-commits/why-are-my-commits-linked-to-the-wrong-user + - /pull-requests/committing-changes-to-your-project/troubleshooting-commits/why-are-my-commits-linked-to-the-wrong-user + - /articles/commit-exists-on-github-but-not-in-my-local-clone + - /github/committing-changes-to-your-project/commit-exists-on-github-but-not-in-my-local-clone + - /github/committing-changes-to-your-project/troubleshooting-commits/commit-exists-on-github-but-not-in-my-local-clone + - /pull-requests/committing-changes-to-your-project/troubleshooting-commits/commit-exists-on-github-but-not-in-my-local-clone + - /pull-requests/committing-changes-to-your-project/troubleshooting-commits/my-commit-is-blocked-by-push-protection +versions: + fpt: '*' + ghes: '*' + ghec: '*' +category: + - Commit changes +--- + +## Commits are linked to the wrong user + +{% data variables.product.github %} uses the email address in the commit header to link the commit to a {% data variables.product.github %} user. If your commits are being linked to another user, or not linked to a user at all, you may need to change your local Git configuration settings, add an email address to your account email settings, or do both. + +> [!NOTE] +> If your commits are linked to another user, that does not mean the user can access your repository. A user can only access a repository you own if you add them as a collaborator or add them to a team that has access to the repository. + +### Commits are linked to another user + +If your commits are linked to another user, that means the email address in your local Git configuration settings is connected to that user's {% data variables.product.github %} account. In this case, you can change the email in your local Git configuration settings and add the new email address to your account to link future commits. + +1. To change the email address in your local Git configuration, follow the steps in [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address#setting-your-commit-email-address-in-git). If you work on multiple machines, you will need to change this setting on each one. +1. Add the email address from step 2 to your account settings by following the steps in [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account). + +Commits you make from this point forward will be linked to your account. + +### Commits are not linked to any user + +If your commits are not linked to any user, the commit author's name will not be rendered as a link to a user profile. To check the email address used for those commits and connect commits to your account, take the following steps. + +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.navigate-to-commit-page %} +{% data reusables.repositories.navigate-to-commit %} +1. To read a message about why the commit is not linked, hover over the blue {% octicon "question" aria-label="Question mark" %} to the right of the username. + + * **Unrecognized author (with email address)** If you see this message with an email address, the address you used to author the commit is not connected to your {% data variables.product.github %} account. To link your commits, [add the email address to your GitHub email settings](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account). If the email address has a Gravatar associated with it, the Gravatar will be displayed next to the commit, rather than the default gray Octocat. + * **Unrecognized author (no email address)** If you see this message without an email address, you used a generic email address that can't be connected to your {% data variables.product.github %} account. You will need to [set your commit email address in Git](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address), then [add the new address to your GitHub email settings](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account) to link your future commits. Old commits will not be linked. + * **Invalid email** The email address in your local Git configuration settings is either blank or not formatted as an email address. You will need to [set your commit email address in Git](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address), then [add the new address to your GitHub email settings](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account) to link your future commits. Old commits will not be linked. + +> [!WARNING] +> If your local Git configuration contained a generic email address, or an email address that was already attached to another user's account, then your previous commits will not be linked to your account. While Git does allow you to change the email address used for previous commits, we strongly discourage this, especially in a shared repository. + +## A commit exists on GitHub but not in your local clone + +Sometimes a commit will be viewable on {% data variables.product.github %}, but will not exist in your local clone of the repository. + +When you use `git show` to view a specific commit on the command line, you may get a fatal error. + +For example, you may receive a `bad object` error locally: + +```shell +$ git show 1095ff3d0153115e75b7bca2c09e5136845b5592 +> fatal: bad object 1095ff3d0153115e75b7bca2c09e5136845b5592 +``` + +However, when you view the commit on {% data variables.location.product_location %}, you'll be able to see it without any problems: + +`github.com/ACCOUNT/REPOSITORY/commit/1095ff3d0153115e75b7bca2c09e5136845b5592` + +There are several possible explanations: + +* The local repository is out of date. +* The branch that contains the commit was deleted, so the commit is no longer referenced. +* Someone force pushed over the commit. + +### The local repository is out of date + +Your local repository may not have the commit yet. To get information from your remote repository to your local clone, use `git fetch`: + +```shell +git fetch REMOTE +``` + +This safely copies information from the remote repository to your local clone without making any changes to the files you have checked out. +You can use `git fetch upstream` to get information from a repository you've forked, or `git fetch origin` to get information from a repository you've only cloned. + +> [!TIP] +> For more information, read about [managing remotes and fetching data](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) in the [Pro Git](https://git-scm.com/book) book. + +### The branch that contained the commit was deleted + +If a collaborator on the repository has deleted the branch containing the commit +or has force pushed over the branch, the missing commit may have been orphaned +(i.e. it cannot be reached from any reference) and therefore will not be fetched +into your local clone. + +Fortunately, if any collaborator has a local clone of the repository with the +missing commit, they can push it back to {% data variables.product.github %}. They need to make sure the commit +is referenced by a local branch and then push it as a new branch to {% data variables.product.github %}. + +Let's say that the person still has a local branch (call it `B`) that contains +the commit. This might be tracking the branch that was force pushed or deleted +and they simply haven't updated yet. To preserve the commit, they can push that +local branch to a new branch (call it `recover-B`) on {% data variables.product.github %}. For this example, +let's assume they have a remote named `upstream` via which they have push access +to `github.com/ACCOUNT/REPOSITORY`. + +The other person runs: + +```shell +$ git branch recover-B B +# Create a new local branch referencing the commit +$ git push upstream B:recover-B +# Push local B to new upstream branch, creating new reference to commit +``` + +Now, _you_ can run: + +```shell +$ git fetch upstream recover-B +# Fetch commit into your local repository. +``` + +### Avoid force pushes + +Avoid force pushing to a repository unless absolutely necessary. This is especially true if more than one person can push to the repository. If someone force pushes to a repository, the force push may overwrite commits that other people based their work on. Force pushing changes the repository history and can corrupt pull requests. + +## A commit is blocked by push protection + +To keep your repository secure, push protection prevents you from accidentally committing secrets to the repository. + +### Understanding why push protection has blocked your commit + +Leaked secrets can pose serious security risks to your repository and your supply chain. Push protection prevents you from accidentally introducing secrets to your codebase where they could be exploited by malicious actors. + +If the repository you're contributing to on {% data variables.product.github %} is secured by push protection, you'll encounter a push protection block whenever you: + +* **Push commits** containing recognized secrets **from the command line** to the remote repository. +* **Commit changes** or upload files containing recognized secrets to a repository in the **{% data variables.product.github %} UI**. +* **Make certain requests** containing recognized secrets in **the REST API**. + +### Resolving a push protection block + +In order to resolve the block, you should remove the secret from the commit (or request). If you believe the secret is safe to push, you may be able to bypass the block. For more information on how to remove the secret or, if necessary, bypass the block, see: + +* [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-command-line) +* [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-in-the-github-ui) +* [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-rest-api) + +## Further reading + +* [AUTOTITLE](/search-github/searching-on-github/searching-commits) +* [AUTOTITLE](/code-security/secret-scanning/introduction/about-push-protection) +* [AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns) +* ["Working with Remotes" from the _Pro Git_ book](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) +* ["Data Recovery" from the _Pro Git_ book](https://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery) diff --git a/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/commit-exists-on-github-but-not-in-my-local-clone.md b/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/commit-exists-on-github-but-not-in-my-local-clone.md deleted file mode 100644 index 473219ac1cc6..000000000000 --- a/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/commit-exists-on-github-but-not-in-my-local-clone.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Commit exists on GitHub but not in my local clone -intro: 'Sometimes a commit will be viewable on {% data variables.product.github %}, but will not exist in your local clone of the repository.' -redirect_from: - - /articles/commit-exists-on-github-but-not-in-my-local-clone - - /github/committing-changes-to-your-project/commit-exists-on-github-but-not-in-my-local-clone - - /github/committing-changes-to-your-project/troubleshooting-commits/commit-exists-on-github-but-not-in-my-local-clone -versions: - fpt: '*' - ghes: '*' - ghec: '*' -shortTitle: Commit missing in local clone -category: - - Commit changes ---- -When you use `git show` to view a specific commit on the command line, you may get a fatal error. - -For example, you may receive a `bad object` error locally: - -```shell -$ git show 1095ff3d0153115e75b7bca2c09e5136845b5592 -> fatal: bad object 1095ff3d0153115e75b7bca2c09e5136845b5592 -``` - -However, when you view the commit on {% data variables.location.product_location %}, you'll be able to see it without any problems: - -`github.com/ACCOUNT/REPOSITORY/commit/1095ff3d0153115e75b7bca2c09e5136845b5592` - -There are several possible explanations: - -* The local repository is out of date. -* The branch that contains the commit was deleted, so the commit is no longer referenced. -* Someone force pushed over the commit. - -## The local repository is out of date - -Your local repository may not have the commit yet. To get information from your remote repository to your local clone, use `git fetch`: - -```shell -git fetch REMOTE -``` - -This safely copies information from the remote repository to your local clone without making any changes to the files you have checked out. -You can use `git fetch upstream` to get information from a repository you've forked, or `git fetch origin` to get information from a repository you've only cloned. - -> [!TIP] -> For more information, read about [managing remotes and fetching data](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) in the [Pro Git](https://git-scm.com/book) book. - -## The branch that contained the commit was deleted - -If a collaborator on the repository has deleted the branch containing the commit -or has force pushed over the branch, the missing commit may have been orphaned -(i.e. it cannot be reached from any reference) and therefore will not be fetched -into your local clone. - -Fortunately, if any collaborator has a local clone of the repository with the -missing commit, they can push it back to {% data variables.product.github %}. They need to make sure the commit -is referenced by a local branch and then push it as a new branch to {% data variables.product.github %}. - -Let's say that the person still has a local branch (call it `B`) that contains -the commit. This might be tracking the branch that was force pushed or deleted -and they simply haven't updated yet. To preserve the commit, they can push that -local branch to a new branch (call it `recover-B`) on {% data variables.product.github %}. For this example, -let's assume they have a remote named `upstream` via which they have push access -to `github.com/ACCOUNT/REPOSITORY`. - -The other person runs: - -```shell -$ git branch recover-B B -# Create a new local branch referencing the commit -$ git push upstream B:recover-B -# Push local B to new upstream branch, creating new reference to commit -``` - -Now, _you_ can run: - -```shell -$ git fetch upstream recover-B -# Fetch commit into your local repository. -``` - -## Avoid force pushes - -Avoid force pushing to a repository unless absolutely necessary. This is especially true if more than one person can push to the repository. If someone force pushes to a repository, the force push may overwrite commits that other people based their work on. Force pushing changes the repository history and can corrupt pull requests. - -## Further reading - -* ["Working with Remotes" from the _Pro Git_ book](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) -* ["Data Recovery" from the _Pro Git_ book](https://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery) diff --git a/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/index.md b/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/index.md deleted file mode 100644 index 0438b2669030..000000000000 --- a/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/index.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Troubleshooting commits -intro: '' -redirect_from: - - /articles/troubleshooting-commits - - /github/committing-changes-to-your-project/troubleshooting-commits -versions: - fpt: '*' - ghes: '*' - ghec: '*' -children: - - /commit-exists-on-github-but-not-in-my-local-clone - - /why-are-my-commits-linked-to-the-wrong-user - - /my-commit-is-blocked-by-push-protection ---- - diff --git a/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/my-commit-is-blocked-by-push-protection.md b/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/my-commit-is-blocked-by-push-protection.md deleted file mode 100644 index d45b24fa69db..000000000000 --- a/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/my-commit-is-blocked-by-push-protection.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: My commit is blocked by push protection -intro: 'To keep your repository secure, push protection prevents you from accidentally committing secrets to the repository.' -versions: - fpt: '*' - ghes: '*' - ghec: '*' -shortTitle: Commit blocked by push protection -category: - - Commit changes ---- - -## Understanding why push protection has blocked your commit - -Leaked secrets can pose serious security risks to your repository and your supply chain. Push protection prevents you from accidentally introducing secrets to your codebase where they could be exploited by malicious actors. - -If the repository you're contributing to on {% data variables.product.github %} is secured by push protection, you'll encounter a push protection block whenever you: - -* **Push commits** containing recognized secrets **from the command line** to the remote repository. -* **Commit changes** or upload files containing recognized secrets to a repository in the **{% data variables.product.github %} UI**. -* **Make certain requests** containing recognized secrets in **the REST API**. - -## Resolving a push protection block - -In order to resolve the block, you should remove the secret from the commit (or request). If you believe the secret is safe to push, you may be able to bypass the block. For more information on how to remove the secret or, if necessary, bypass the block, see: - -* [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-command-line) -* [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-in-the-github-ui) -* [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-rest-api) - -## Further reading - -* [AUTOTITLE](/code-security/secret-scanning/introduction/about-push-protection) -* [AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns) diff --git a/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/why-are-my-commits-linked-to-the-wrong-user.md b/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/why-are-my-commits-linked-to-the-wrong-user.md deleted file mode 100644 index 65a07c679a71..000000000000 --- a/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/why-are-my-commits-linked-to-the-wrong-user.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Why are my commits linked to the wrong user? -redirect_from: - - /articles/how-do-i-get-my-commits-to-link-to-my-github-account - - /articles/why-are-my-commits-linked-to-the-wrong-user - - /github/committing-changes-to-your-project/why-are-my-commits-linked-to-the-wrong-user - - /github/committing-changes-to-your-project/troubleshooting-commits/why-are-my-commits-linked-to-the-wrong-user -intro: '{% data variables.product.github %} uses the email address in the commit header to link the commit to a {% data variables.product.github %} user. If your commits are being linked to another user, or not linked to a user at all, you may need to change your local Git configuration settings, add an email address to your account email settings, or do both.' -versions: - fpt: '*' - ghes: '*' - ghec: '*' -shortTitle: Linked to wrong user -category: - - Commit changes ---- - -> [!NOTE] -> If your commits are linked to another user, that does not mean the user can access your repository. A user can only access a repository you own if you add them as a collaborator or add them to a team that has access to the repository. - -## Commits are linked to another user - -If your commits are linked to another user, that means the email address in your local Git configuration settings is connected to that user's {% data variables.product.github %} account. In this case, you can change the email in your local Git configuration settings and add the new email address to your account to link future commits. - -1. To change the email address in your local Git configuration, follow the steps in [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address#setting-your-commit-email-address-in-git). If you work on multiple machines, you will need to change this setting on each one. -1. Add the email address from step 2 to your account settings by following the steps in [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account). - -Commits you make from this point forward will be linked to your account. - -## Commits are not linked to any user - -If your commits are not linked to any user, the commit author's name will not be rendered as a link to a user profile. To check the email address used for those commits and connect commits to your account, take the following steps. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.navigate-to-commit-page %} -{% data reusables.repositories.navigate-to-commit %} -1. To read a message about why the commit is not linked, hover over the blue {% octicon "question" aria-label="Question mark" %} to the right of the username. - - * **Unrecognized author (with email address)** If you see this message with an email address, the address you used to author the commit is not connected to your {% data variables.product.github %} account. To link your commits, [add the email address to your GitHub email settings](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account). If the email address has a Gravatar associated with it, the Gravatar will be displayed next to the commit, rather than the default gray Octocat. - * **Unrecognized author (no email address)** If you see this message without an email address, you used a generic email address that can't be connected to your {% data variables.product.github %} account. You will need to [set your commit email address in Git](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address), then [add the new address to your GitHub email settings](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account) to link your future commits. Old commits will not be linked. - * **Invalid email** The email address in your local Git configuration settings is either blank or not formatted as an email address. You will need to [set your commit email address in Git](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address), then [add the new address to your GitHub email settings](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account) to link your future commits. Old commits will not be linked. - -> [!WARNING] -> If your local Git configuration contained a generic email address, or an email address that was already attached to another user's account, then your previous commits will not be linked to your account. While Git does allow you to change the email address used for previous commits, we strongly discourage this, especially in a shared repository. - -## Further reading - -* [AUTOTITLE](/search-github/searching-on-github/searching-commits) diff --git a/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits.md b/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits.md index 22c3687f4a93..ff2a81e827b9 100644 --- a/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits.md +++ b/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits.md @@ -6,6 +6,10 @@ redirect_from: - /github/committing-changes-to-your-project/comparing-commits-across-time - /github/committing-changes-to-your-project/comparing-commits - /github/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits + - /articles/differences-between-commit-views + - /github/committing-changes-to-your-project/differences-between-commit-views + - /github/committing-changes-to-your-project/viewing-and-comparing-commits/differences-between-commit-views + - /pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/differences-between-commit-views versions: fpt: '*' ghes: '*' @@ -70,6 +74,31 @@ You can compare a single commit in Git to the commit's predecessors using two ty | `^` | One commit prior. Repeat the `^` character to indicate one more commit further back in the history. | `96d29b7^^^^^`

Represents the commit five commits prior to `96d29b7`. | [View comparison](https://github.com/octocat/linguist/compare/octocat:96d29b7%5E%5E%5E%5E%5E...octocat:96d29b7) | | `~N` | N commit(s) prior. | `96d29b7~5`

Represents the commit five commits prior to `96d29b7`. | [View comparison](https://github.com/octocat/linguist/compare/octocat:96d29b7%7E5...octocat:96d29b7) | +## Differences between commit views + +You might observe differences in commit history depending on the chosen viewing method. On {% data variables.product.github %}, you can see the commit history of a repository by: + +* Navigating to [the commits page](https://github.com/rust-lang/rust/commits/main) of a repository by clicking the clock icon with the number of commits at the top of the main repository view. +* Navigating to [the commit history for a specific file](https://github.com/rust-lang/rust/commits/main/README.md) by clicking on a file, then clicking **History**, to get. + +These two commit views may show _different_ information at times. The history for a single file may omit commits found on the repository's commit history. + +Git has several different ways of showing the history of a repository. When Git shows the history of a single file, it simplifies history by omitting +commits that did not change the file. Instead of looking at every commit to +decide whether it touched the file, Git will omit a whole branch if that branch, +when merged, did not impact the final contents of the file. Any commits on the +branch that touched the file will not be shown. + +For a file's commit history, {% data variables.product.github %} explicitly follows this simple strategy. It makes the history simpler by removing commits that didn't contribute to the final result. For example, if a side branch made a change and then reverted it, that commit would not show up in the branch history. This makes reviewing branches more efficient, since you only see the commits that affect the file. + +This truncated view might not always contain the information you're +after. If you want to see the entire history, {% data variables.product.github %} provides a view with more +information on a repository's commits page. + +For more information on how Git considers commit history, see [the "History Simplification"](https://git-scm.com/docs/git-log#_history_simplification) section of the `git log` help article. + ## Further reading * [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request) +* [AUTOTITLE](/authentication/managing-commit-signature-verification/signing-commits) +* [AUTOTITLE](/search-github/searching-on-github/searching-commits) diff --git a/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/differences-between-commit-views.md b/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/differences-between-commit-views.md deleted file mode 100644 index 3831ff9894ee..000000000000 --- a/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/differences-between-commit-views.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Differences between commit views -intro: You might observe differences in commit history depending on the chosen viewing method. -redirect_from: - - /articles/differences-between-commit-views - - /github/committing-changes-to-your-project/differences-between-commit-views - - /github/committing-changes-to-your-project/viewing-and-comparing-commits/differences-between-commit-views -versions: - fpt: '*' - ghes: '*' - ghec: '*' -shortTitle: Commit views -category: - - Commit changes ---- -On {% data variables.product.github %}, you can see the commit history of a repository by: - -* Navigating to [the commits page](https://github.com/rust-lang/rust/commits/main) of a repository by clicking the clock icon with the number of commits at the top of the main repository view. -* Navigating to [the commit history for a specific file](https://github.com/rust-lang/rust/commits/main/README.md) by clicking on a file, then clicking **History**, to get. - -These two commit views may show _different_ information at times. The history for a single file may omit commits found on the repository's commit history. - -Git has several different ways of showing the history of a repository. When Git shows the history of a single file, it simplifies history by omitting -commits that did not change the file. Instead of looking at every commit to -decide whether it touched the file, Git will omit a whole branch if that branch, -when merged, did not impact the final contents of the file. Any commits on the -branch that touched the file will not be shown. - -For a file's commit history, {% data variables.product.github %} explicitly follows this simple strategy. It makes the history simpler by removing commits that didn't contribute to the final result. For example, if a side branch made a change and then reverted it, that commit would not show up in the branch history. This makes reviewing branches more efficient, since you only see the commits that affect the file. - -This truncated view might not always contain the information you're -after. If you want to see the entire history, {% data variables.product.github %} provides a view with more -information on a repository's commits page. - -For more information on how Git considers commit history, see [the "History Simplification"](https://git-scm.com/docs/git-log#_history_simplification) section of the `git log` help article. - -## Further reading - -* [AUTOTITLE](/authentication/managing-commit-signature-verification/signing-commits) -* [AUTOTITLE](/search-github/searching-on-github/searching-commits) diff --git a/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/index.md b/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/index.md index 4f165177ce96..842a1d1220fb 100644 --- a/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/index.md +++ b/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/index.md @@ -10,7 +10,6 @@ versions: ghec: '*' children: - /comparing-commits - - /differences-between-commit-views shortTitle: View & compare commits --- diff --git a/content/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility.md b/content/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility.md index 6283c244e942..2acaea55749f 100644 --- a/content/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility.md +++ b/content/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility.md @@ -44,7 +44,7 @@ We recommend reviewing the following caveats before you change the visibility of * {% data variables.product.github %} will detach public forks of the public repository and put them into a new network. Public forks are not made private. {%- ifversion ghes or ghec %} -* If you change a repository's visibility from internal to private, {% data variables.product.github %} will remove forks that belong to any user without access to the newly private repository. The visibility of any forks will also change to private. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility) +* If you change a repository's visibility from internal to private, {% data variables.product.github %} will remove forks that belong to any user without access to the newly private repository. The visibility of any forks will also change to private. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks#what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility) {%- endif %} {%- ifversion fpt %} * If you're using {% data variables.product.prodname_free_user %} for personal accounts or organizations, some features won't be available in the repository after you change the visibility to private. Any published {% data variables.product.prodname_pages %} site will be automatically unpublished. If you added a custom domain to the {% data variables.product.prodname_pages %} site, you should remove or update your DNS records before making the repository private, to avoid the risk of a domain takeover. For more information, see [AUTOTITLE](/get-started/learning-about-github/githubs-plans) and [AUTOTITLE](/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site). @@ -61,13 +61,13 @@ We recommend reviewing the following caveats before you change the visibility of ### Making a repository internal -* Any forks of the repository will remain in the repository network, and {% data variables.product.github %} maintains the relationship between the root repository and the fork. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility) +* Any forks of the repository will remain in the repository network, and {% data variables.product.github %} maintains the relationship between the root repository and the fork. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks#what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility) {% endif %} ### Making a repository public -* {% data variables.product.github %} will detach private forks and turn them into a standalone private repository. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility#changing-a-private-repository-to-a-public-repository){% ifversion fpt or ghec %} +* {% data variables.product.github %} will detach private forks and turn them into a standalone private repository. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks#changing-a-private-repository-to-a-public-repository){% ifversion fpt or ghec %} * If you're converting your private repository to a public repository as part of a move toward creating an open source project, see the [Open Source Guides](http://opensource.guide) for helpful tips and guidelines. You can also take a free course on managing an open source project with [{% data variables.product.prodname_learning %}]({% data variables.product.prodname_learning_link %}). Once your repository is public, you can also view your repository's community profile to see whether your project meets best practices for supporting contributors. For more information, see [AUTOTITLE](/communities/setting-up-your-project-for-healthy-contributions/about-community-profiles-for-public-repositories). * The repository will automatically gain access to {% data variables.product.prodname_GHAS %} features. * Actions history and logs will be visible to everyone. If your repository had reusable or required workflows that were shared from a different repository in your organization, the workflow file path including the repository name will be visible in the logs. For more information on how to remove workflow runs and artifacts see [AUTOTITLE](/actions/how-tos/manage-workflow-runs#deleting-logs) and [AUTOTITLE](/rest/actions/workflow-runs). From 36c1a3312659afa3e5e8be1b2d07eb284678ec68 Mon Sep 17 00:00:00 2001 From: Jenni C <97056108+dihydroJenoxide@users.noreply.github.com> Date: Tue, 21 Jul 2026 02:49:15 +0000 Subject: [PATCH 04/17] Improve readability of pull requests docset (#62005) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../about-merge-conflicts.md | 8 ++--- .../resolving-a-merge-conflict-on-github.md | 22 ++++++------ ...a-merge-conflict-using-the-command-line.md | 18 +++++----- .../about-status-checks.md | 16 ++++----- .../troubleshooting-required-status-checks.md | 20 ++++++----- .../working-with-pre-receive-hooks.md | 4 +-- .../about-collaborative-development-models.md | 6 ++-- .../helping-others-review-your-changes.md | 22 ++++++------ ...anaging-and-standardizing-pull-requests.md | 16 ++++----- .../about-pull-request-merges.md | 22 ++++++------ .../automatically-merging-a-pull-request.md | 10 +++--- .../closing-a-pull-request.md | 4 +-- ...rging-a-pull-request-with-a-merge-queue.md | 14 ++++---- .../merging-a-pull-request.md | 14 ++++---- .../reverting-a-pull-request.md | 10 +++--- .../about-branches.md | 28 ++++++++------- ...out-comparing-branches-in-pull-requests.md | 24 ++++++------- .../about-pull-requests.md | 10 +++--- ...nging-the-base-branch-of-a-pull-request.md | 6 ++-- .../changing-the-stage-of-a-pull-request.md | 8 +++-- ...pull-request-branch-created-from-a-fork.md | 24 ++++++------- .../creating-a-pull-request-from-a-fork.md | 14 ++++---- .../creating-a-pull-request.md | 30 ++++++++-------- ...eleting-branches-within-your-repository.md | 8 ++--- ...ll-request-in-sync-with-the-base-branch.md | 17 +++++----- .../requesting-a-pull-request-review.md | 20 ++++++----- ...ery-parameters-to-create-a-pull-request.md | 10 +++--- .../about-pull-request-reviews.md | 6 ++-- ...ng-a-pull-request-with-required-reviews.md | 4 +-- .../checking-out-pull-requests-locally.md | 26 +++++++------- .../commenting-on-a-pull-request.md | 18 +++++----- .../dismissing-a-pull-request-review.md | 4 +-- .../filtering-files-in-a-pull-request.md | 8 ++--- ...methods-and-functions-in-a-pull-request.md | 6 ++-- ...rporating-feedback-in-your-pull-request.md | 14 ++++---- ...ng-dependency-changes-in-a-pull-request.md | 14 ++++---- ...wing-proposed-changes-in-a-pull-request.md | 24 ++++++------- .../viewing-a-pull-request-review.md | 4 +-- .../working-with-forks/about-forks.md | 6 ++-- ...out-permissions-and-visibility-of-forks.md | 21 +++++++----- ...pull-request-branch-created-from-a-fork.md | 6 ++-- ...figuring-a-remote-repository-for-a-fork.md | 6 ++-- .../working-with-forks/detaching-a-fork.md | 8 ++--- .../working-with-forks/fork-a-repo.md | 30 ++++++++-------- .../working-with-forks/syncing-a-fork.md | 6 ++-- .../about-commits.md | 6 ++-- .../changing-a-commit-message.md | 16 ++++----- ...creating-a-commit-with-multiple-authors.md | 12 +++---- .../troubleshooting-commits.md | 33 +++++++----------- .../comparing-commits.md | 34 ++++++++----------- 50 files changed, 364 insertions(+), 353 deletions(-) diff --git a/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts.md b/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts.md index 5c8e957d6d78..1095ce800ba7 100644 --- a/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts.md +++ b/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts.md @@ -14,21 +14,21 @@ versions: category: - Merge and close pull requests --- -Git can often resolve differences between branches and merge them automatically. Usually, the changes are on different lines, or even in different files, which makes the merge simple for computers to understand. However, sometimes there are competing changes that Git can't resolve without your help. Often, merge conflicts happen when people make different changes to the same line of the same file, or when one person edits a file and another person deletes the same file. +Git can often resolve differences between branches and merge them automatically. Usually, changes are on different lines or in different files, so Git can merge them without help. Sometimes, competing changes need your help. Merge conflicts often happen when people make different changes to the same line of the same file, or when one person edits a file and another person deletes the same file. -You must resolve all merge conflicts before you can merge a pull request on {% data variables.product.github %}. If you have a merge conflict between the compare branch and base branch in your pull request, you can view a list of the files with conflicting changes above the **Merge pull request** button. The **Merge pull request** button is deactivated until you've resolved all conflicts between the compare branch and base branch. +You must resolve all merge conflicts before you can merge a pull request on {% data variables.product.github %}. If your pull request has a merge conflict between the compare branch and base branch, you can view a list of the files with conflicting changes above the **Merge pull request** button. The **Merge pull request** button is deactivated until you've resolved all conflicts between the compare branch and base branch. ## Resolving merge conflicts To resolve a merge conflict, you must manually edit the conflicted file to select the changes that you want to keep in the final merge. There are a couple of different ways to resolve a merge conflict: -* If your merge conflict is caused by competing line changes, such as when people make different changes to the same line of the same file on different branches in your Git repository, you can resolve it on {% data variables.product.github %} using the conflict editor. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github). +* If competing line changes cause your merge conflict, such as when people make different changes to the same line of the same file on different branches in your Git repository, you can resolve it on {% data variables.product.github %} using the conflict editor. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github). * For all other types of merge conflicts, you must resolve the merge conflict in a local clone of the repository and push the change to your branch on {% data variables.product.github %}. You can use the command line or a tool like [{% data variables.product.prodname_desktop %}](https://desktop.github.com/) to push the change. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). {% ifversion copilot %} * For any type of merge conflict, if you have access to {% data variables.copilot.copilot_cloud_agent %} and it is enabled for the repository, you can click **Fix with {% data variables.product.prodname_copilot_short %}** in the merge box to have {% data variables.product.prodname_copilot_short %} resolve the conflicts for you. {% data variables.product.prodname_copilot_short %} will analyze the conflicting changes, resolve the conflicts, and verify that the build, tests, and linter still pass. For more information, see [AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/make-changes-to-an-existing-pr#resolving-merge-conflicts). {% endif %} -If you have a merge conflict on the command line, you cannot push your local changes to {% data variables.product.github %} until you resolve the merge conflict locally on your computer. If you try merging branches on the command line that have a merge conflict, you'll get an error message. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). +If you have a merge conflict on the command line, you cannot push your local changes to {% data variables.product.github %} until you resolve the merge conflict locally on your computer. If you try to merge branches with a merge conflict on the command line, you'll get an error message. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). ```shell $ git merge BRANCH-NAME diff --git a/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github.md b/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github.md index bce9af325e09..28ed9791c13c 100644 --- a/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github.md +++ b/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github.md @@ -15,7 +15,7 @@ shortTitle: Resolve merge conflicts category: - Merge and close pull requests --- -You can only resolve merge conflicts on {% data variables.product.github %} that are caused by competing line changes, such as when people make different changes to the same line of the same file on different branches in your Git repository. For all other types of merge conflicts, you must resolve the conflict locally on the command line. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). +On {% data variables.product.github %}, you can only resolve merge conflicts caused by competing line changes, such as when people make different changes to the same line of the same file on different branches in your Git repository. For all other types of merge conflicts, you must resolve the conflict locally on the command line. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). {% ifversion copilot %} @@ -28,35 +28,37 @@ If a site administrator disables the merge conflict editor for pull requests bet {% endif %} > [!WARNING] -> When you resolve a merge conflict on {% data variables.product.github %}, the entire [base branch](/get-started/learning-about-github/github-glossary#base-branch) of your pull request is merged into the [head branch](/get-started/learning-about-github/github-glossary#head-branch). Make sure you really want to commit to this branch. If the head branch is the default branch of your repository, you'll be given the option of creating a new branch to serve as the head branch for your pull request. If the head branch is protected you won't be able to merge your conflict resolution into it, so you'll be prompted to create a new head branch. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). +> When you resolve a merge conflict on {% data variables.product.github %}, the entire [base branch](/get-started/learning-about-github/github-glossary#base-branch) of your pull request is merged into the [head branch](/get-started/learning-about-github/github-glossary#head-branch). Make sure you really want to commit to this branch. +> +> If the head branch is the default branch of your repository, you'll be given the option of creating a new branch to serve as the head branch for your pull request. If the head branch is protected, you won't be able to merge your conflict resolution into it, so you'll be prompted to create a new head branch. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). {% data reusables.repositories.sidebar-pr %} -1. In the "Pull Requests" list, click the pull request with a merge conflict that you'd like to resolve. +1. In the "Pull Requests" list, click the pull request with a merge conflict that you want to resolve. 1. Near the bottom of your pull request, click **Resolve conflicts**. ![Screenshot of a warning that a pull request has a merge conflict. The "Resolve merge conflicts" button is outlined in dark orange.](/assets/images/help/pull_requests/resolve-merge-conflicts-button.png) > [!NOTE] - > If the **Resolve conflicts** button is deactivated, your pull request's merge conflict is too complex to resolve on {% data variables.product.github %}{% ifversion ghes %} or the site administrator has disabled the conflict editor for pull requests between repositories{% endif %}. You must resolve the merge conflict using an alternative Git client, or by using Git on the command line. For more information see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). + > If the **Resolve conflicts** button is deactivated, your pull request's merge conflict is too complex to resolve on {% data variables.product.github %}{% ifversion ghes %} or the site administrator has disabled the conflict editor for pull requests between repositories{% endif %}. You must resolve the merge conflict using an alternative Git client or Git on the command line. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). {% data reusables.pull_requests.decide-how-to-resolve-competing-line-change-merge-conflict %} -1. If you have more than one merge conflict in your file, scroll down to the next set of conflict markers and repeat steps four and five to resolve your merge conflict. -1. Once you've resolved all the conflicts in the file, click **Mark as resolved**. +1. If your file has more than one merge conflict, scroll down to the next set of conflict markers and repeat steps four and five to resolve the conflict. +1. After you've resolved all the conflicts in the file, click **Mark as resolved**. ![Screenshot of the editor to resolve a merge conflict in a pull request. The "Mark as resolved" button is outlined in dark orange.](/assets/images/help/pull_requests/mark-as-resolved-button.png) -1. If you have more than one file with a conflict, select the next file you want to edit on the left side of the page under "conflicting files" and repeat steps four through seven until you've resolved all of your pull request's merge conflicts. -1. Once you've resolved all your merge conflicts, click **Commit merge**. This merges the entire base branch into your head branch. +1. If more than one file has a conflict, select the next file you want to edit on the left side of the page under "conflicting files" and repeat steps four through seven until you've resolved all merge conflicts in your pull request. +1. After you've resolved all your merge conflicts, click **Commit merge**. This merges the entire base branch into your head branch. ![Screenshot of the editor to resolve a merge conflict in a pull request. The "Commit merge" button is outlined in dark orange.](/assets/images/help/pull_requests/merge-conflict-commit-changes.png) 1. If prompted, review the branch that you are committing to. - If the head branch is the default branch of the repository, you can choose either to update this branch with the changes you made to resolve the conflict, or to create a new branch and use this as the head branch of the pull request. + If the head branch is the default branch of the repository, you can choose either to update this branch with the changes you made to resolve the conflict or to create a new branch and use it as the head branch of the pull request. If you choose to create a new branch, enter a name for the branch. - If the head branch of your pull request is protected you must create a new branch. You won't get the option to update the protected branch. + If the head branch of your pull request is protected, you must create a new branch. You won't get the option to update the protected branch. Click **Create branch and update my pull request** or **I understand, continue updating BRANCH**. The button text corresponds to the action you are performing. 1. To merge your pull request, click **Merge pull request**. For more information about other pull request merge options, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request). diff --git a/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line.md b/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line.md index f7d9e9aa5c88..8078b9f7ef06 100644 --- a/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line.md +++ b/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line.md @@ -15,7 +15,7 @@ shortTitle: Resolve merge conflicts in Git category: - Merge and close pull requests --- -Merge conflicts occur when competing changes are made to the same line of a file, or when one person edits a file and another person deletes the same file. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts). +Merge conflicts happen when competing changes are made to the same line of a file, or when one person edits a file and another person deletes the same file. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts). > [!TIP] > You can use the conflict editor on {% data variables.product.github %} to resolve competing line change merge conflicts between branches that are part of a pull request. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github). @@ -24,7 +24,7 @@ Merge conflicts occur when competing changes are made to the same line of a file To resolve a merge conflict caused by competing line changes, you must choose which changes to incorporate from the different branches in a new commit. -For example, if you and another person both edited the file `styleguide.md` on the same lines in different branches of the same Git repository, you'll get a merge conflict error when you try to merge these branches. You must resolve this merge conflict with a new commit before you can merge these branches. +For example, if you and another person both edited the file `styleguide.md` on the same lines in different branches of the same Git repository, you'll get a merge conflict error when you try to merge these branches. You must resolve this merge conflict in a new commit before you can merge these branches. {% data reusables.command_line.open_the_multi_os_terminal %} 1. Navigate into the local Git repository that has the merge conflict. @@ -33,7 +33,7 @@ For example, if you and another person both edited the file `styleguide.md` on t cd REPOSITORY-NAME ``` -1. Generate a list of the files affected by the merge conflict. In this example, the file _styleguide.md_ has a merge conflict. +1. List the files affected by the merge conflict. In this example, the file _styleguide.md_ has a merge conflict. ```shell $ git status @@ -49,8 +49,10 @@ For example, if you and another person both edited the file `styleguide.md` on t > no changes added to commit (use "git add" and/or "git commit -a") ``` -1. Open your favorite text editor, such as [{% data variables.product.prodname_vscode %}](https://code.visualstudio.com/), and navigate to the file that has merge conflicts. -1. To see the beginning of the merge conflict in your file, search the file for the conflict marker `<<<<<<<`. When you open the file in your text editor, you'll see the changes from the HEAD or base branch after the line `<<<<<<< HEAD`. Next, you'll see `=======`, which divides your changes from the changes in the other branch, followed by `>>>>>>> BRANCH-NAME`. In this example, one person wrote "open an issue" in the base or HEAD branch and another person wrote "ask your question in IRC" in the compare branch or `branch-a`. +1. Open your preferred text editor, such as [{% data variables.product.prodname_vscode %}](https://code.visualstudio.com/), and navigate to the file that has merge conflicts. +1. To see the beginning of the merge conflict in your file, search the file for the conflict marker `<<<<<<<`. When you open the file in your text editor, you'll see the changes from the HEAD or base branch after the line `<<<<<<< HEAD`. + + Next, you'll see `=======`, which divides your changes from the changes in the other branch, followed by `>>>>>>> BRANCH-NAME`. In this example, one person wrote "open an issue" in the base or HEAD branch and another person wrote "ask your question in IRC" in the compare branch or `branch-a`. ```text If you have questions, please @@ -67,7 +69,7 @@ For example, if you and another person both edited the file `styleguide.md` on t If you have questions, please open an issue or ask in our IRC channel if it's more urgent. ``` -1. Add or stage your changes. +1. Stage your changes. ```shell git add . @@ -94,7 +96,7 @@ For example, if you edited a file, such as `README.md`, and another person remov cd REPOSITORY-NAME ``` -1. Generate a list of the files affected by the merge conflict. In this example, the file `README.md` has a merge conflict. +1. List the files affected by the merge conflict. In this example, the file `README.md` has a merge conflict. ```shell $ git status @@ -113,7 +115,7 @@ For example, if you edited a file, such as `README.md`, and another person remov > # no changes added to commit (use "git add" and/or "git commit -a") ``` -1. Open your favorite text editor, such as [{% data variables.product.prodname_vscode %}](https://code.visualstudio.com/), and navigate to the file that has merge conflicts. +1. Open your preferred text editor, such as [{% data variables.product.prodname_vscode %}](https://code.visualstudio.com/), and navigate to the file that has merge conflicts. 1. Decide if you want to keep the removed file. You may want to view the latest changes made to the removed file in your text editor. To add the removed file back to your repository: diff --git a/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks.md b/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks.md index 6f313dcd5c63..1de8e62a59c1 100644 --- a/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks.md +++ b/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks.md @@ -14,7 +14,7 @@ versions: category: - Merge and close pull requests --- -Status checks are based on external processes, such as continuous integration builds, which run for each push you make to a repository. You can see the _pending_, _passing_, or _failing_ state of status checks next to individual commits in your pull request. +Status checks are based on external processes, such as continuous integration builds, that run for each push you make to a repository. You can see the _pending_, _passing_, or _failing_ state of status checks next to individual commits in your pull request. ![Screenshot of a list of commits and statuses.](/assets/images/help/pull_requests/commit-list-statuses.png) @@ -33,7 +33,7 @@ There are two types of status checks on {% data variables.product.github %}: * Checks * Commit statuses -_Checks_ are different from _commit statuses_ in that they provide line annotations, more detailed messaging, and are only available for use with {% data variables.product.prodname_github_apps %}. +_Checks_ differ from _commit statuses_ because they provide line annotations and more detailed messaging. Checks are only available for use with {% data variables.product.prodname_github_apps %}. > [!NOTE] > {% data variables.product.prodname_actions %} generates checks, not commit statuses, when workflows are run. @@ -45,17 +45,17 @@ Organization owners and users with push access to a repository can create checks Pull requests have a **Checks** tab where you can view detailed build output from checks and rerun failed checks. > [!NOTE] -> The **Checks** tab only gets populated for pull requests if you set up _checks_, not _commit statuses_, for the repository. +> The **Checks** tab is populated for pull requests only if you set up _checks_, not _commit statuses_, for the repository. -When a specific line in a commit causes a check to fail, you will see details about the failure, warning, or notice next to the relevant code in the **Files** tab of the pull request. +When a specific line in a commit causes a check to fail, you will see details about the failure, warning, or notice next to the relevant code. These details appear in the **Files** tab of the pull request. -You can navigate between the checks summaries for various commits in a pull request, using the commit drop-down menu under the **Checks** tab. +You can navigate between the checks summaries for different commits in a pull request using the commit drop-down menu under the **Checks** tab. ![Screenshot of the "Checks" tab of a pull request. The "Checks" tab and the dropdown menu to select a commit are both outlined in dark orange.](/assets/images/help/pull_requests/checks-summary-for-various-commits.png) ## Skipping and requesting checks for individual commits -When a repository is set to automatically request checks for pushes, you can choose to skip checks for an individual commit you push. When a repository is _not_ set to automatically request checks for pushes, you can request checks for an individual commit you push. For more information on these settings, see [AUTOTITLE](/rest/checks/suites#update-repository-preferences-for-check-suites). +When a repository is set to automatically request checks for pushes, you can choose to skip checks for an individual commit you push. When a repository is _not_ set to automatically request checks for pushes, you can request checks for an individual commit you push. For more information about these settings, see [AUTOTITLE](/rest/checks/suites#update-repository-preferences-for-check-suites). You can also skip workflow runs triggered by the `push` and `pull_request` events by including a command in your commit message. For more information, see [AUTOTITLE](/actions/managing-workflow-runs/skipping-workflow-runs) @@ -83,7 +83,7 @@ Alternatively, to skip or request _all_ checks for your commit, add one of the f ## Check statuses and conclusions -Checks can have many different statuses. Statuses describe the state of a check from when it is created to when it is completed. Some statuses cannot be set manually and are reserved for {% data variables.product.prodname_actions %}. When a check has a status of `completed`, it has a conclusion. The conclusion describes the result of the check. All possible check statuses and conclusions are listed below. +Checks can have many different statuses. Statuses describe the state of a check from when it is created to when it is completed. Some statuses cannot be set manually and are reserved for {% data variables.product.prodname_actions %}. When a check has a status of `completed`, it has a conclusion. The conclusion describes the result of the check. The following tables list all possible check statuses and conclusions. | Status | Description | {% data variables.product.prodname_actions %} only? | | --- | --- | --- | @@ -99,7 +99,7 @@ Checks can have many different statuses. Statuses describe the state of a check | Conclusion | Description | | --- | --- | -| `action_required` | The check run provided required actions upon its completion. For more information, see [AUTOTITLE](/rest/guides/using-the-rest-api-to-interact-with-checks#check-runs-and-requested-actions). | +| `action_required` | The check run provided required actions when it completed. For more information, see [AUTOTITLE](/rest/guides/using-the-rest-api-to-interact-with-checks#check-runs-and-requested-actions). | | `cancelled` | The check run was cancelled before it completed. | | `failure` | The check run failed. | | `neutral` | The check run completed with a neutral result. This is treated as a success for dependent checks in {% data variables.product.prodname_actions %}. | diff --git a/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks.md b/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks.md index a90223910149..e0d4dc98112f 100644 --- a/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks.md +++ b/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks.md @@ -21,7 +21,9 @@ If you have a check and a status with the same name, and you select that name as > [!NOTE] > To be required, status checks must have completed successfully within the chosen repository during the past seven days. -After you enable required status checks, your branch may need to be up-to-date with the base branch before merging. This ensures that your branch has been tested with the latest code from the base branch. If your branch is out of date, you'll need to merge the base branch into your branch. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging). +After you enable required status checks, your branch may need to be up-to-date with the base branch before merging. This ensures that your branch has been tested with the latest code from the base branch. + +If your branch is out of date, you'll need to merge the base branch into your branch. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging). > [!NOTE] > You can also bring your branch up to date with the base branch using Git rebase. For more information, see [AUTOTITLE](/get-started/using-git/about-git-rebase). @@ -34,22 +36,22 @@ remote: error: Required status check "ci-build" is failing ``` > [!NOTE] -> Pull requests that are up-to-date and pass required status checks can be merged locally and pushed to the protected branch. This can be done without status checks running on the merge commit itself. +> Pull requests that are up-to-date and pass required status checks can be merged locally and pushed to the protected branch. You can do this without running status checks on the merge commit itself. ## Required check needs to succeed against the latest commit SHA -In order for a pull request to be merged, all required checks must pass against the latest commit SHA. This ensures that the most recent changes are validated and meet the required standards before merging. Checks that were triggered using a previous commit SHA will not be used as part of required checks. Successful check statuses are: `success`, `skipped`, and `neutral`. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks). +For a pull request to be merged, all required checks must pass against the latest commit SHA. This ensures that the most recent changes are validated and meet the required standards before merging. Checks triggered by a previous commit SHA are not used as required checks. Successful check statuses are: `success`, `skipped`, and `neutral`. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks). ## Conflicts between head commit and test merge commit -Sometimes, the results of the status checks for the test merge commit and head commit will conflict. If the test merge commit has a status, the test merge commit must pass. Otherwise, the status of the head commit must pass before you can merge the branch. +Sometimes, the results of the status checks for the test merge commit and head commit conflict. If the test merge commit has a status, the test merge commit must pass. Otherwise, the status of the head commit must pass before you can merge the branch. If there is a conflict between the test merge commit and head commit, the checks for the test merge commit are shown in the pull request status checks box. This is indicated in the pull request status box by a line starting with `Showing checks for the merge commit`. For more information about test merge commits, see [AUTOTITLE](/rest/pulls/pulls#get-a-pull-request). ## Handling skipped but required checks > [!WARNING] -> If a workflow is skipped due to [path filtering](/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore), [branch filtering](/actions/using-workflows/workflow-syntax-for-github-actions#onpull_requestpull_request_targetbranchesbranches-ignore) or a [commit message](/actions/managing-workflow-runs/skipping-workflow-runs), then checks associated with that workflow will remain in a "Pending" state. A pull request that requires those checks to be successful will be blocked from merging. +> If a workflow is skipped due to [path filtering](/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore), [branch filtering](/actions/using-workflows/workflow-syntax-for-github-actions#onpull_requestpull_request_targetbranchesbranches-ignore), or a [commit message](/actions/managing-workflow-runs/skipping-workflow-runs), checks associated with that workflow will remain in a "Pending" state. A pull request that requires those checks to be successful will be blocked from merging. > > {% data reusables.pull_requests.path-filtering-required-workflows %} > @@ -59,7 +61,7 @@ If there is a conflict between the test merge commit and head commit, the checks ### Example -The following example shows a workflow that requires a "Successful" completion status for the `build` job, but the workflow will be skipped if the pull request does not change any files in the `scripts` directory. +The following example shows a workflow that requires a "Successful" completion status for the `build` job. The workflow will be skipped if the pull request does not change any files in the `scripts` directory. ```yaml name: ci @@ -85,7 +87,7 @@ jobs: - run: npm test ``` -Due to [path filtering](/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore), a pull request that only changes a file in the root of the repository will not trigger this workflow and is blocked from merging. On the pull request, you would see "Waiting for status to be reported." +Because of [path filtering](/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore), a pull request that only changes a file in the root of the repository will not trigger this workflow and is blocked from merging. On the pull request, you would see "Waiting for status to be reported." {% data reusables.pull_requests.path-filtering-required-workflows %} @@ -96,7 +98,7 @@ You **must** use the `merge_group` event to trigger your {% data variables.produ > [!NOTE] > {% data reusables.actions.merge-group-event-with-required-checks %} -A workflow that reports a check which is required by the target branch's protections would look like this: +A workflow that reports a check required by the target branch's protections would look like this: ```yaml on: @@ -108,7 +110,7 @@ For more information on the `merge_group` event, see [AUTOTITLE](/actions/using- ## Required status checks from unexpected sources -It's also possible for a protected branch to require a status check from a specific {% data variables.product.prodname_github_app %}. If you see a message similar to the following, then you should verify that the check listed in the merge box was set by the expected app. +A protected branch can also require a status check from a specific {% data variables.product.prodname_github_app %}. If you see a message similar to the following, verify that the check listed in the merge box was set by the expected app. ```text Required status check "build" was not set by the expected {% data variables.product.prodname_github_app %}. diff --git a/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/working-with-pre-receive-hooks.md b/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/working-with-pre-receive-hooks.md index 7f1f1babef16..36a74c73611d 100644 --- a/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/working-with-pre-receive-hooks.md +++ b/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/working-with-pre-receive-hooks.md @@ -12,9 +12,9 @@ shortTitle: Pre-receive hooks category: - Merge and close pull requests --- -Pre-receive hooks run tests on code pushed to a repository to ensure contributions meet repository or organization policy. If the commit contents pass the tests, the push will be accepted into the repository. If the commit contents do not pass the tests, the push will not be accepted. +Pre-receive hooks run tests on code pushed to a repository to make sure contributions meet repository or organization policy. If the commit contents pass the tests, the push is accepted into the repository. If the commit contents do not pass the tests, the push is not accepted. -If your push isn't accepted, you'll see an error message corresponding to the failed pre-receive hook. +If your push isn't accepted, you'll see an error message for the failed pre-receive hook. ```shell $ git push diff --git a/content/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models.md b/content/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models.md index 593b08814316..f2d4eb3089b7 100644 --- a/content/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models.md +++ b/content/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models.md @@ -17,14 +17,16 @@ category: --- ## Fork and pull model -In the fork and pull model, anyone can fork an existing ("upstream") repository to which they have read access and the owner of the upstream repository allows it. Be aware that a fork and its upstream share the same git data. This means that all content uploaded to a fork is accessible from the upstream and all other forks of that upstream. You do not need permission from the upstream repository to push to a fork that you created. You can optionally allow anyone with push access to the upstream repository to make changes to your pull request branch. This model is popular with open-source projects as it reduces the amount of friction for new contributors and allows people to work independently without upfront coordination. +In the fork and pull model, anyone can fork an existing ("upstream") repository if they have read access and the owner of the upstream repository allows it. Be aware that a fork and its upstream share the same Git data. This means that all content uploaded to a fork is accessible from the upstream and all other forks of that upstream. + +You do not need permission from the upstream repository to push to a fork you created. You can optionally allow anyone with push access to the upstream repository to make changes to your pull request branch. This model is popular with open-source projects because it reduces friction for new contributors and lets people work independently without upfront coordination. > [!TIP] > {% data reusables.open-source.open-source-guide-general %} {% data reusables.open-source.open-source-learning %} ## Shared repository model -In the shared repository model, collaborators are granted push access to a single shared repository and topic branches are created when changes need to be made. Pull requests are useful in this model as they initiate code review and general discussion about a set of changes before the changes are merged into the main development branch. This model is more prevalent with small teams and organizations collaborating on private projects. +In the shared repository model, collaborators have push access to a single shared repository and create topic branches when they need to make changes. Pull requests are useful in this model because they start code review and general discussion about a set of changes before the changes are merged into the main development branch. This model is more common with small teams and organizations collaborating on private projects. ## Further reading diff --git a/content/pull-requests/collaborating-with-pull-requests/getting-started/helping-others-review-your-changes.md b/content/pull-requests/collaborating-with-pull-requests/getting-started/helping-others-review-your-changes.md index 3bdb6e290bc6..906ca4d44841 100644 --- a/content/pull-requests/collaborating-with-pull-requests/getting-started/helping-others-review-your-changes.md +++ b/content/pull-requests/collaborating-with-pull-requests/getting-started/helping-others-review-your-changes.md @@ -12,15 +12,15 @@ category: - Create pull requests --- -When you create a pull request, you’re asking your team to review your changes and provide feedback. This guide provides best practices for creating pull requests that are easy to review and keep your team informed, so that you can improve collaboration and the quality of reviews. +When you create a pull request, you’re asking your team to review your changes and provide feedback. This guide shares best practices for creating pull requests that are easy to review and keep your team informed, so that you can improve collaboration and the quality of reviews. ## Making your changes easy to review -Clear context in your pull requests helps reviewers quickly see what you’ve changed and why it matters. This makes the review process faster and smoother, with less back-and-forth, and helps your team give better feedback and make confident decisions. For information on creating a pull request, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request). +Clear context in your pull requests helps reviewers quickly see what you’ve changed and why it matters. This makes the review process faster and smoother, with less back-and-forth. It also helps your team give better feedback and make confident decisions. For information on creating a pull request, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request). ### Write small pull requests -Aim to create small, focused pull requests that fulfill a single purpose. Smaller pull requests are easier and faster to review and merge, leave less room to introduce bugs, and provide a clearer history of changes. +Aim to create small, focused pull requests that serve a single purpose. Smaller pull requests are easier and faster to review and merge. They also leave less room to introduce bugs and provide a clearer history of changes. ### Provide context and guidance @@ -30,17 +30,17 @@ Write clear titles and descriptions for your pull requests so that reviewers can * An overview of what changed * Links to any additional context such as tracking issues or previous conversations -To help reviewers, share the type of feedback you need. For example, do you need a quick look or a deeper critique?{% ifversion copilot %} Additionally, you can use {% data variables.product.prodname_copilot %} to generate a summary of your pull request. See [Use {% data variables.product.prodname_copilot %} to generate pull request summaries](#use-github-copilot-to-generate-pull-request-summaries), later in this article.{% endif %} +To help reviewers, share the type of feedback you need. For example, do you need a quick look or a deeper critique?{% ifversion copilot %} You can also use {% data variables.product.prodname_copilot %} to generate a summary of your pull request. See [Use {% data variables.product.prodname_copilot %} to generate pull request summaries](#use-github-copilot-to-generate-pull-request-summaries), later in this article.{% endif %} If your pull request consists of changes to multiple files, provide guidance to reviewers about the order in which to review the files. Recommend where to start and how to proceed with the review. ### Review your own pull request first -Review, build, and test your own pull request before submitting it. This will allow you to catch errors or typos that you may have missed, before others start reviewing. +Review, build, and test your own pull request before submitting it. This helps you catch errors or typos that you may have missed, before others start reviewing. ### Review for security -There are various tools available that can help you review your pull request for potential security issues before others review it. Reviewing for security helps to catch and resolve security issues early, and lets you highlight unresolved risks for others to review and advise on. For example, you can: +Several tools can help you review your pull request for potential security issues before others review it. Reviewing for security helps catch and resolve security issues early. It also lets you highlight unresolved risks for others to review and advise on. For example, you can: * Check the dependency diff to see if your pull request is introducing vulnerable dependencies. See [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request). * Check the {% data variables.product.prodname_advisory_database %} to find additional context and information on vulnerable dependencies. @@ -49,7 +49,7 @@ There are various tools available that can help you review your pull request for ## Keeping your team informed -Pull requests can do more than just document code changes—they’re also a powerful way to keep your team and manager informed about the status of your work. By making your progress visible in your pull requests, you can reduce the need for separate updates and ensure everyone stays aligned. +Pull requests can do more than document code changes—they’re also a powerful way to keep your team and manager informed about the status of your work. By making your progress visible in your pull requests, you can reduce the need for separate updates and keep everyone aligned. {% ifversion copilot %} @@ -61,7 +61,7 @@ You can use {% data variables.product.prodname_copilot_short %} to generate a su 1. On {% data variables.product.github %}, create a pull request or navigate to an existing pull request. - > [!NOTE] {% data variables.product.prodname_copilot_short %} does not take into account any existing content in the pull request description, so it is best to start with a blank description. + > [!NOTE] {% data variables.product.prodname_copilot_short %} does not consider any existing content in the pull request description, so it is best to start with a blank description. 1. Navigate to the text field where you want to add the pull request summary. @@ -73,9 +73,9 @@ You can use {% data variables.product.prodname_copilot_short %} to generate a su ![Screenshot of the form for creating a pull request. A Copilot icon is highlighted, and a box appears with the "Summary" command.](/assets/images/help/copilot/copilot-description-suggestion.png) -1. Wait for {% data variables.product.prodname_copilot_short %} to produce the summary, then check over the results carefully. +1. Wait for {% data variables.product.prodname_copilot_short %} to produce the summary, then review the results carefully. 1. Add any additional context that will help people viewing your pull request. -1. When you're happy with the description, click **Create pull request** on a new pull request, or **Update comment** if you're editing an existing description. +1. When you're satisfied with the description, click **Create pull request** on a new pull request, or **Update comment** if you're editing an existing description. > [!TIP] You can also use {% data variables.copilot.copilot_chat_short %} to turn your work into a discussion or blog post. See [AUTOTITLE](/copilot/copilot-chat-cookbook/documenting-code/writing-discussions-or-blog-posts). @@ -86,7 +86,7 @@ You can use {% data variables.product.prodname_copilot_short %} to generate a su Connect your pull request to relevant issues or project boards to show how your work fits into the larger project. * Add keywords like `Closes ISSUE-LINK` in your description to automatically link and close the issue when the pull request is merged. -* Use {% data variables.product.prodname_projects_v2 %} to track your work and link to the project from your pull request, making progress easy to track in one place. See [AUTOTITLE](/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects). +* Use {% data variables.product.prodname_projects_v2 %} to track your work and link to the project from your pull request, so people can track progress in one place. See [AUTOTITLE](/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects). ### Highlight the status with labels diff --git a/content/pull-requests/collaborating-with-pull-requests/getting-started/managing-and-standardizing-pull-requests.md b/content/pull-requests/collaborating-with-pull-requests/getting-started/managing-and-standardizing-pull-requests.md index e7535d7088b9..4b9480c2dbe2 100644 --- a/content/pull-requests/collaborating-with-pull-requests/getting-started/managing-and-standardizing-pull-requests.md +++ b/content/pull-requests/collaborating-with-pull-requests/getting-started/managing-and-standardizing-pull-requests.md @@ -10,13 +10,13 @@ category: - Create pull requests --- -If you are a repository maintainer, there are several ways that you can manage and standardize the pull requests that contributors create in your repository. These steps can help you ensure that pull requests are reviewed by the right people, and that they meet your repository's standards. +If you are a repository maintainer, you can manage and standardize the pull requests that contributors create in your repository. These steps can help you ensure that pull requests are reviewed by the right people and meet your repository's standards. ## Using pull request templates -Pull request templates let you customize and standardize the information you'd like to be included when someone creates a pull request in your repository. When you add a pull request template to your repository, project contributors will automatically see the template's contents in the pull request body. For more information, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository). +Pull request templates let you customize and standardize the information you want contributors to include when they create a pull request in your repository. When you add a pull request template to your repository, project contributors will automatically see the template's contents in the pull request body. For more information, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository). -You can use pull request templates to standardize the review process for your repository. For example, you can include a list of tasks that you would like authors to complete before merging their pull requests, by adding a task list to the template. For more information, see [AUTOTITLE](/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists). +You can use pull request templates to standardize the review process for your repository. For example, you can add a task list to the template with tasks you want authors to complete before merging their pull requests. For more information, see [AUTOTITLE](/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists). You can request that contributors include an issue reference in their pull request body, so that merging the pull request will automatically close the issue. For more information, see [AUTOTITLE](/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue). @@ -24,18 +24,18 @@ You can request that contributors include an issue reference in their pull reque You may want to make sure that specific individuals always review changes to certain code or files in your repository. For example, you may want to ensure that a member of the security team always reviews changes to your `SECURITY.md` file or `dependabot.yml` file. -You can define individuals or teams that you consider responsible for code or files in a repository to be code owners. Code owners will automatically be requested for review when someone opens a pull request that modifies the files that they own. You can define code owners for specific types of files or directories, as well as for different branches in a repository. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners). +You can define code owners as the individuals or teams responsible for code or files in a repository. Code owners will automatically be requested for review when someone opens a pull request that modifies the files that they own. You can define code owners for specific types of files or directories, as well as for different branches in a repository. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners). ## Using protected branches -You can use protected branches to prevent pull requests from being merged into important branches, such as `main`, until certain conditions are met. For example, you can require an approving review, or require that all status checks are passing. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). +You can use protected branches to prevent pull requests from being merged into important branches, such as `main`, until certain conditions are met. For example, you can require an approving review or require all status checks to pass. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). ## Using rulesets -Working alongside protected branches, rulesets let you enforce policies across your repository, such as requiring status checks or workflows to pass before a pull request can be merged. +Alongside protected branches, rulesets let you enforce policies across your repository, such as requiring status checks or workflows to pass before a pull request can be merged. Rulesets are especially useful for maintaining repository security when combined with other automated security checks. For example: -* You can use rulesets to enforce the dependency review action, a workflow that blocks pull requests that are introducing vulnerable dependencies into your codebase. See [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/enforcing-dependency-review-across-an-organization). +* You can use rulesets to enforce the dependency review action, a workflow that blocks pull requests that introduce vulnerable dependencies into your codebase. See [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/enforcing-dependency-review-across-an-organization). * If your repository is configured with {% data variables.product.prodname_code_scanning %}, you can use rulesets to set {% data variables.product.prodname_code_scanning %} merge protection, which prevents pull requests from being merged if there is a {% data variables.product.prodname_code_scanning %} alert of a certain severity, or if a {% data variables.product.prodname_code_scanning %} analysis is still in progress. See [AUTOTITLE](/code-security/code-scanning/managing-your-code-scanning-configuration/set-code-scanning-merge-protection). ## Using push rulesets @@ -46,6 +46,6 @@ For more information, see [AUTOTITLE](/repositories/configuring-branches-and-mer ## Using automated tools to review code styling -Use automated tools, such as linters, in your repository's pull requests to maintain consistent styling and make code more understandable. Using automated tools to catch smaller problems like typos or styling leaves more time for reviewers to focus on the substance of a pull request. +Use automated tools, such as linters, in your repository's pull requests to maintain consistent styling and make code more understandable. Automated tools can catch smaller problems like typos or styling, which leaves more time for reviewers to focus on the substance of a pull request. For example, you can use {% data variables.product.prodname_actions %} to set up code linters that can run on pull requests as part of your continuous integration (CI) workflow. For more information, see [AUTOTITLE](/actions/automating-builds-and-tests/about-continuous-integration). diff --git a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges.md b/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges.md index 7c33b631ebc3..3193b205970b 100644 --- a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges.md +++ b/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges.md @@ -24,7 +24,7 @@ category: ### Merge message for a squash merge -When you squash and merge, {% data variables.product.prodname_dotcom %} generates a default commit message, which you can edit. Depending on how the repository is configured and the number of commits in the pull request, not including merge commits, this message may include the pull request title, pull request description, or information about the commits. +When you squash and merge, {% data variables.product.prodname_dotcom %} generates a default commit message, which you can edit. Depending on how the repository is configured and the number of commits in the pull request, excluding merge commits, this message may include the pull request title, pull request description, or information about the commits. | Number of commits | Summary | Description | | ----------------- | ------- | ----------- | @@ -37,37 +37,39 @@ People with maintainer or admin access to a repository can configure their repos If you plan to continue work on the [head branch](/get-started/learning-about-github/github-glossary#head-branch) of a pull request after the pull request is merged, we recommend you don't squash and merge the pull request. -When you create a pull request, {% data variables.product.prodname_dotcom %} identifies the most recent commit that is on both the head branch and the [base branch](/get-started/learning-about-github/github-glossary#base-branch): the common ancestor commit. When you squash and merge the pull request, {% data variables.product.prodname_dotcom %} creates a commit on the base branch that contains all of the changes you made on the head branch since the common ancestor commit. +When you create a pull request, {% data variables.product.prodname_dotcom %} identifies the most recent commit that is on both the head branch and the [base branch](/get-started/learning-about-github/github-glossary#base-branch): the common ancestor commit. When you squash and merge the pull request, {% data variables.product.prodname_dotcom %} creates a commit on the base branch. This commit contains all of the changes you made on the head branch since the common ancestor commit. -Because this commit is only on the base branch and not the head branch, the common ancestor of the two branches remains unchanged. If you continue to work on the head branch, then create a new pull request between the two branches, the pull request will include all of the commits since the common ancestor, including commits that you squashed and merged in the previous pull request. If there are no conflicts, you can safely merge these commits. However, this workflow makes merge conflicts more likely. If you continue to squash and merge pull requests for a long-running head branch, you will have to resolve the same conflicts repeatedly. +Because this commit is only on the base branch and not the head branch, the common ancestor of the two branches remains unchanged. If you continue to work on the head branch, then create a new pull request between the two branches, the pull request will include all of the commits since the common ancestor. This includes commits that you squashed and merged in the previous pull request. + +If there are no conflicts, you can safely merge these commits. However, this workflow makes merge conflicts more likely. If you continue to squash and merge pull requests for a long-running head branch, you will have to resolve the same conflicts repeatedly. ## Rebase and merge your commits {% data reusables.pull_requests.rebase_and_merge_summary %} -You aren't able to automatically rebase and merge when: +You can't automatically rebase and merge when: * The pull request has merge conflicts. * Rebasing the commits from the base branch into the head branch runs into conflicts. * Rebasing the commits is considered "unsafe," such as when a rebase is possible without merge conflicts but would produce a different result than a merge would. If you still want to rebase the commits but can't rebase and merge automatically, you must: -* Rebase the topic branch (or head branch) onto the base branch locally on the command line +* Rebase the topic branch (or head branch) onto the base branch locally on the command line. * [Resolve any merge conflicts on the command line](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). * Force-push the rebased commits to the pull request's topic branch (or remote head branch). -Anyone with write permissions in the repository, can then [merge the changes](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request) using the rebase and merge button. +Anyone with write permissions in the repository can then [merge the changes](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request) using the rebase and merge button. ## Indirect merges -A pull request can be merged automatically if its head branch is directly or indirectly merged into the base branch externally. In other words, if the head branch's tip commit becomes reachable from the tip of the target branch. For example: +A pull request can be merged automatically if its head branch is directly or indirectly merged into the base branch externally. In other words, this happens if the head branch's tip commit becomes reachable from the tip of the target branch. For example: * Branch `main` is at commit **C**. -* Branch `feature` has been branched off of `main` and is currently at commit **D**. This branch has a pull request targeting `main`. +* Branch `feature` is branched off of `main` and is currently at commit **D**. This branch has a pull request targeting `main`. * Branch `feature_2` is branched off of `feature` and is now at commit **E**. This branch also has a pull request targeting `main`. -If pull request **E** --> `main` is merged first, pull request **D** --> `main` will be marked as merged _automatically_ because all of the commits from `feature` are now reachable from `main`. Merging `feature_2` into `main` and pushing `main` to the server from the command line will mark _both_ pull requests as merged. +If pull request **E** --> `main` is merged first, pull request **D** --> `main` is marked as merged _automatically_ because all of the commits from `feature` are now reachable from `main`. Merging `feature_2` into `main` and pushing `main` to the server from the command line marks _both_ pull requests as merged. -Indirect merges can only occur either when the commits in the pull request's head branch are pushed directly to the repository's default branch, or when the commits in the pull request's head branch are present in another pull request and are merged into the repository's default branch using the **Create a merge commit** option. +Indirect merges can occur only when the commits in the pull request's head branch are pushed directly to the repository's default branch, or when the commits in the pull request's head branch are present in another pull request and are merged into the repository's default branch using the **Create a merge commit** option. If a pull request containing commits present in another pull request's head branch is merged using the **Squash and merge** or **Rebase and merge** options, a new commit is created on the base branch and the other pull request will not be automatically merged. diff --git a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request.md index 06c7d51021c8..c9bdc506ccb7 100644 --- a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request.md @@ -16,11 +16,11 @@ category: --- ## About auto-merge -If you enable auto-merge for a pull request, the pull request will merge automatically when all required reviews are met and all required status checks have passed. Auto-merge helps you avoid waiting around for requirements to be met, so you can move on to other tasks. +When you enable auto-merge for a pull request, the pull request merges automatically when all required reviews are met and all required status checks have passed. Auto-merge helps you avoid waiting for requirements to be met, so you can move on to other tasks. Before you can use auto-merge with a pull request, auto-merge must be enabled for the repository. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository). -After you enable auto-merge for a pull request, if someone who does not have write permissions to the repository pushes new changes to the head branch or switches the base branch of the pull request, auto-merge will be disabled. For example, if a maintainer enables auto-merge for a pull request from a fork, auto-merge will be disabled after a contributor pushes new changes to the pull request. +After you enable auto-merge for a pull request, auto-merge will be disabled if someone who does not have write permissions to the repository pushes new changes to the head branch or switches the base branch of the pull request. For example, if a maintainer enables auto-merge for a pull request from a fork, auto-merge will be disabled after a contributor pushes new changes to the pull request. You can provide feedback about auto-merge through a [{% data variables.product.prodname_github_community %} discussion](https://github.com/orgs/community/discussions/categories/pull-requests). @@ -32,8 +32,8 @@ People with write permissions to a repository can enable auto-merge for a pull r {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-pr %} -1. In the "Pull Requests" list, click the pull request you'd like to auto-merge. -1. Optionally, to choose a merge method, select the {% octicon "triangle-down" aria-label="Select the merge method" %} dropdown menu, then click a merge method. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges). +1. In the "Pull Requests" list, click the pull request you want to auto-merge. +1. Optionally, select the {% octicon "triangle-down" aria-label="Select the merge method" %} dropdown menu, then click a merge method. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges). ![Screenshot of the merge box of a pull request. A dropdown menu, labeled with a downward-facing triangle, is outlined in dark orange.](/assets/images/help/pull_requests/enable-auto-merge-drop-down.png) @@ -56,5 +56,5 @@ People with write permissions to a repository and pull request authors can disab {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-pr %} -1. In the "Pull Requests" list, click the pull request you'd like to disable auto-merge for. +1. In the "Pull Requests" list, click the pull request for which you want to disable auto-merge. 1. In the merge box, click **Disable auto-merge**. diff --git a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/closing-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/closing-a-pull-request.md index 5cfb6a890630..4cf52c408841 100644 --- a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/closing-a-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/closing-a-pull-request.md @@ -15,9 +15,9 @@ category: --- > [!TIP] -> If you opened a pull request with the wrong base branch, rather than closing it out and opening a new one, you can instead change the base branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request). +> If you opened a pull request with the wrong base branch, instead of closing it and opening a new one, you can change the base branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request). {% data reusables.repositories.sidebar-pr %} -1. In the "Pull Requests" list, click the pull request you'd like to close. +1. In the "Pull Requests" list, click the pull request you want to close. 1. At the bottom of the pull request, below the comment box, click **Close pull request**. 1. Optionally, [delete the branch](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/deleting-and-restoring-branches-in-a-pull-request). This keeps the list of branches in your repository tidy. diff --git a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request-with-a-merge-queue.md b/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request-with-a-merge-queue.md index 662eba9f8ecc..aeb95037a111 100644 --- a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request-with-a-merge-queue.md +++ b/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request-with-a-merge-queue.md @@ -30,7 +30,7 @@ category: {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-pr %} -1. In the "Pull Requests" list, click the pull request you would like to add to a merge queue. +1. In the "Pull Requests" list, click the pull request you want to add to a merge queue. 1. Click **Merge when ready** to add the pull request to the merge queue. Alternatively, if you are an administrator, you can: @@ -39,7 +39,7 @@ category: ![Screenshot of the merge queue options for a pull request.](/assets/images/help/pull_requests/merge-queue-options.png) > [!NOTE] - > You can click **Merge when ready** whenever you're ready to merge your proposed changes. {% data variables.product.github %} will automatically add the pull request to the merge queue once required approval and status checks conditions are met. + > You can click **Merge when ready** whenever you're ready to merge your proposed changes. {% data variables.product.github %} will automatically add the pull request to the merge queue once required approval and status check conditions are met. 1. Confirm you want to add the pull request to the merge queue by clicking **Confirm merge when ready**. @@ -47,7 +47,7 @@ category: {% cli %} -With {% data variables.product.prodname_cli %}, you can use the `gh pr merge` command to add a pull request to a merge queue. If you are targeting a branch that requires a merge queue, this command automatically adds the pull request to the queue if required checks have passed. If required checks have not passed, this command enables auto-merge for the pull request. For more information, see [`gh pr merge`](https://cli.github.com/manual/gh_pr_merge) in the {% data variables.product.prodname_cli %} manual. +With {% data variables.product.prodname_cli %}, use the `gh pr merge` command to add a pull request to a merge queue. If you are targeting a branch that requires a merge queue, this command automatically adds the pull request to the queue if required checks have passed. If required checks have not passed, this command enables auto-merge for the pull request. For more information, see [`gh pr merge`](https://cli.github.com/manual/gh_pr_merge) in the {% data variables.product.prodname_cli %} manual. {% endcli %} @@ -62,13 +62,13 @@ To remove a pull request from a merge queue, you must navigate to the repository {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-pr %} -1. In the "Pull Requests" list, click the pull request you would like to remove from a merge queue. +1. In the "Pull Requests" list, click the pull request you want to remove from a merge queue. 1. To remove the pull request from the queue, click **Remove from queue**. ![Screenshot of the merge queue message at the bottom of a pull request. The "Remove from queue" button is outlined in dark orange.](/assets/images/help/pull_requests/remove-from-queue-button.png) -Alternatively, you can navigate to the merge queue page for the base branch, click **...** next to the pull request you want to remove, and select **Remove from queue**. For information on how to get to the merge queue page for the base branch, see the section below. +Alternatively, you can navigate to the merge queue page for the base branch, click **...** next to the pull request you want to remove, and select **Remove from queue**. For information about getting to the merge queue page for the base branch, see the section below. ## Viewing merge queues @@ -84,11 +84,11 @@ You can view the merge queue for a base branch in various places on {% data vari {% endwebui %} -* On the **Branches** page for the repository. We recommend you use this route if you don't have or don't know about a pull request already in a queue, and if you want to see what's in that queue. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/viewing-branches-in-your-repository). +* On the **Branches** page for the repository. We recommend this route if you don't have or don't know about a pull request already in a queue, and if you want to see what's in that queue. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/viewing-branches-in-your-repository). ![Screenshot of the "Branches" page for a repository. A link, labeled "33 pull requests queued to merge," is outlined in dark orange.](/assets/images/help/pull_requests/merge-queue-branches-page.png) -* On the pull request page when merge queue is required for merging, scroll to the bottom of the timeline and click the **merge queue** link. +* On the pull request page, when a merge queue is required for merging, scroll to the bottom of the timeline and click the **merge queue** link. ![Screenshot of the merge queue message at the bottom of a pull request. The "merge queue" link is outlined in dark orange.](/assets/images/help/pull_requests/merge-queue-link.png) diff --git a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request.md index 3367f2ec9bf7..d09618154cdb 100644 --- a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request.md @@ -15,13 +15,15 @@ category: --- ## About pull request merges -In a pull request, you propose that changes you've made on a head branch should be merged into a base branch. By default, any pull request can be merged at any time, unless the head branch is in conflict with the base branch. However, there may be restrictions on when you can merge a pull request into a specific branch. For example, you may only be able to merge a pull request into the default branch if required status checks are passing. Repository administrators can add constraints like this to branches using branch protection rules. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). +In a pull request, you propose that changes you've made on a head branch should be merged into a base branch. By default, any pull request can be merged at any time, unless the head branch is in conflict with the base branch. + +However, there may be restrictions on when you can merge a pull request into a specific branch. For example, you may only be able to merge a pull request into the default branch if required status checks are passing. Repository administrators can add these constraints to branches using branch protection rules. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). {% data reusables.repositories.rulesets-alternative %} {% data reusables.pull_requests.you-can-auto-merge %} -If the pull request has merge conflicts, or if you'd like to test the changes before merging, you can [check out the pull request locally](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally) and merge it using the command line. +If the pull request has merge conflicts, or if you want to test the changes before merging, you can [check out the pull request locally](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally) and merge it using the command line. You can't merge a draft pull request. For more information about draft pull requests, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests#draft-pull-requests). @@ -42,16 +44,16 @@ If you decide you don't want the changes in a topic branch to be merged to the u {% webui %} {% data reusables.repositories.sidebar-pr %} -1. In the "Pull Requests" list, click the pull request you'd like to merge. +1. In the "Pull Requests" list, click the pull request you want to merge. 1. Scroll down to the bottom of the pull request. Depending on the merge options enabled for your repository, you can: * [Merge all of the commits into the base branch](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges) by clicking **Merge pull request**. If the **Merge pull request** option is not shown, click the merge dropdown menu and select **Create a merge commit**. ![Screenshot of the merge options for a pull request. The arrow to expand the dropdown is outlined in dark orange.](/assets/images/help/pull_requests/merge-pull-request-options.png) - * [Squash the commits into one commit](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges#squash-and-merge-your-pull-request-commits) by clicking the merge dropdown menu, selecting **Squash and merge** and then clicking **Squash and merge**. + * [Squash the commits into one commit](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges#squash-and-merge-your-pull-request-commits) by clicking the merge dropdown menu, selecting **Squash and merge**, and then clicking **Squash and merge**. - * [Rebase the commits individually onto the base branch](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges#rebase-and-merge-your-pull-request-commits) by clicking the merge dropdown menu, selecting **Rebase and merge** and then clicking **Rebase and merge**. + * [Rebase the commits individually onto the base branch](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges#rebase-and-merge-your-pull-request-commits) by clicking the merge dropdown menu, selecting **Rebase and merge**, and then clicking **Rebase and merge**. > [!NOTE] > Rebase and merge will always update the committer information and create new commit SHAs. For more information, see [About pull request merges](/articles/about-pull-request-merges#rebase-and-merge-your-pull-request-commits). @@ -81,7 +83,7 @@ gh pr merge PULL-REQUEST Follow the interactive prompts to complete the merge. For more information about the merge methods that you can choose, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges). -Alternatively, you can use flags to skip the interactive prompts. For example, this command will squash the commits into a single commit with the commit message "my squash commit", merge the squashed commit into the base branch, and then delete the local and remote branch. +Alternatively, you can use flags to skip the interactive prompts. For example, this command squashes the commits into a single commit with the commit message "my squash commit", merges the squashed commit into the base branch, and then deletes the local and remote branch. ```shell gh pr merge 523 --squash --body "my squash commit" --delete-branch diff --git a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/reverting-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/reverting-a-pull-request.md index ac420eb09645..c4f785e16a57 100644 --- a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/reverting-a-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/reverting-a-pull-request.md @@ -15,21 +15,21 @@ category: --- ## About reverting a pull request -Reverting a pull request on {% data variables.product.github %} creates a new pull request that contains one revert of the merge commit from the original merged pull request. To revert pull requests, you must have [write permissions](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization) in the repository. +Reverting a pull request on {% data variables.product.github %} creates a new pull request that contains a revert of the merge commit from the original merged pull request. To revert pull requests, you must have [write permissions](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization) in the repository. ## Reverting a pull request > [!NOTE] -> You may need to revert the individual commits in your pull request if either of the following is true. +> You might need to revert the individual commits in your pull request if either of the following is true. > > * Reverting the pull request causes merge conflicts -> * The original pull request was not originally merged on {% data variables.product.github %}. For example, someone could have merged the pull request using a fast-forward merge on the command line. +> * The original pull request was not merged on {% data variables.product.github %}. For example, someone could have merged the pull request using a fast-forward merge on the command line. > > For more information about using Git to manually revert individual commits, see [Git revert](https://git-scm.com/docs/git-revert.html) in the Git documentation. {% data reusables.repositories.sidebar-pr %} -1. In the "Pull Requests" list, click the pull request you'd like to revert. -1. Near the bottom of the pull request, click **Revert**. If the **Revert** option isn't displayed, you'll need to ask the repository administrator for write permissions. +1. In the "Pull Requests" list, click the pull request you want to revert. +1. Near the bottom of the pull request, click **Revert**. If the **Revert** option isn't displayed, you need to ask the repository administrator for write permissions. ![Screenshot of a pull request's timeline. The "Revert" button is outlined in dark orange.](/assets/images/help/pull_requests/revert-pull-request-link.png) diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches.md index 0a2476e41dfb..19effaba71d5 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches.md +++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches.md @@ -16,9 +16,11 @@ category: --- ## About branches -Branches allow you to develop features, fix bugs, or safely experiment with new ideas in a contained area of your repository. +Branches let you develop features, fix bugs, or safely experiment with new ideas in a contained area of your repository. -You always create a branch from an existing branch. Typically, you might create a new branch from the default branch of your repository. You can then work on this new branch in isolation from changes that other people are making to the repository. A branch you create to build a feature is commonly referred to as a feature branch or topic branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository). +You always create a branch from an existing branch. Typically, you might create a new branch from the default branch of your repository. You can then work on this new branch in isolation from changes that other people are making to the repository. + +A branch you create to build a feature is commonly called a feature branch or topic branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository). You can also use a branch to publish a {% data variables.product.prodname_pages %} site. For more information, see [AUTOTITLE](/pages/getting-started-with-github-pages/about-github-pages). @@ -38,24 +40,24 @@ By default, {% data variables.product.github %} names the default branch `main` Once you're satisfied with your work, you can open a pull request to merge the changes in the current branch (the _head_ branch) into another branch (the _base_ branch). For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests). -After a pull request has been merged, or closed, you can delete the head branch as this is no longer needed. You must have write access in the repository to delete branches. You can't delete branches that are directly associated with open pull requests. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/deleting-and-restoring-branches-in-a-pull-request). +After a pull request has been merged or closed, you can delete the head branch because it's no longer needed. You must have write access in the repository to delete branches. You can't delete branches that are directly associated with open pull requests. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/deleting-and-restoring-branches-in-a-pull-request). {% data reusables.pull_requests.retargeted-on-branch-deletion %} The following diagrams illustrate this. -Here someone has created a branch called `feature1` from the `main` branch, and you've then created a branch called `feature2` from `feature1`. There are open pull requests for both branches. The arrows indicate the current base branch for each pull request. At this point, `feature1` is the base branch for `feature2`. If the pull request for `feature2` is merged now, the `feature2` branch will be merged into `feature1`. +In the first diagram, someone has created a branch called `feature1` from the `main` branch, and then you created a branch called `feature2` from `feature1`. There are open pull requests for both branches. The arrows indicate the current base branch for each pull request. At this point, `feature1` is the base branch for `feature2`. If the pull request for `feature2` is merged now, the `feature2` branch will be merged into `feature1`. ![Diagram that shows a feature1 branch with a pull request targeting main, and a feature2 branch with a pull request targeting feature1.](/assets/images/help/branches/pr-retargeting-diagram1.png) -In the next diagram, someone has merged the pull request for `feature1` into the `main` branch, and they have deleted the `feature1` branch. As a result, {% data variables.product.prodname_dotcom %} has automatically retargeted the pull request for `feature2` so that its base branch is now `main`. +In the next diagram, someone has merged the pull request for `feature1` into the `main` branch and deleted the `feature1` branch. As a result, {% data variables.product.prodname_dotcom %} has automatically retargeted the pull request for `feature2` so that its base branch is now `main`. ![Diagram that shows both feature1 and feature2 branches with pull requests targeting main.](/assets/images/help/branches/pr-retargeting-diagram2.png) -Now when you merge the `feature2` pull request, it'll be merged into the `main` branch. +Now, when you merge the `feature2` pull request, it'll be merged into the `main` branch. ## Working with protected branches -Repository administrators or custom roles with the "edit repository rules" permission can enable protections on a branch. If you're working on a branch that's protected, you won't be able to delete or force push to the branch. Repository administrators can additionally enable several other protected branch settings to enforce various workflows before a branch can be merged. +Repository administrators or custom roles with the "edit repository rules" permission can enable protections on a branch. If you're working on a branch that's protected, you won't be able to delete or force push to the branch. Repository administrators can also enable other protected branch settings to enforce workflows before a branch can be merged. > [!NOTE] > If you're a repository administrator, you can merge pull requests on branches with branch protections enabled even if the pull request does not meet the requirements, unless branch protections have been set to "Include administrators." @@ -64,12 +66,12 @@ To see if your pull request can be merged, look in the merge box at the bottom o When a branch is protected: -* You won't be able to delete or force push to the branch. -* If required status checks are enabled on the branch, you won't be able to merge changes into the branch until all of the required CI tests pass. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks). -* If required pull request reviews are enabled on the branch, you won't be able to merge changes into the branch until all requirements in the pull request review policy have been met. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request). -* If required review from a code owner is enabled on a branch, and a pull request modifies code that has an owner, a code owner must approve the pull request before it can be merged. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners). -* If required commit signing is enabled on a branch, you won't be able to push any commits to the branch that are not signed and verified. For more information, see [AUTOTITLE](/authentication/managing-commit-signature-verification/about-commit-signature-verification) and [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-signed-commits). -* If you use {% data variables.product.prodname_dotcom %}'s conflict editor to fix conflicts for a pull request that you created from a protected branch, {% data variables.product.prodname_dotcom %} helps you to create an alternative branch for the pull request, so that your resolution of the conflicts can be merged. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github). +* You can't delete or force push to the branch. +* If required status checks are enabled on the branch, you can't merge changes into the branch until all of the required CI tests pass. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks). +* If required pull request reviews are enabled on the branch, you can't merge changes into the branch until all requirements in the pull request review policy have been met. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request). +* If required review from a code owner is enabled on a branch and a pull request modifies code that has an owner, a code owner must approve the pull request before it can be merged. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners). +* If required commit signing is enabled on a branch, you can't push any commits to the branch that are not signed and verified. For more information, see [AUTOTITLE](/authentication/managing-commit-signature-verification/about-commit-signature-verification) and [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-signed-commits). +* If you use {% data variables.product.prodname_dotcom %}'s conflict editor to fix conflicts for a pull request that you created from a protected branch, {% data variables.product.prodname_dotcom %} helps you create an alternative branch for the pull request so that your conflict resolution can be merged. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github). ## Further reading diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests.md index b24ce8799018..3eb93aaa1a70 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests.md +++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests.md @@ -16,17 +16,17 @@ category: --- > [!NOTE] -> When creating your pull request, you can change the base branch that you're comparing your changes against. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request#changing-the-branch-range-and-destination-repository). +> When you create your pull request, you can change the base branch that you're comparing your changes against. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request#changing-the-branch-range-and-destination-repository). You can view proposed changes in a pull request in the Files changed tab. ![Screenshot of the tabs for a pull request. The "Files changed" tab is outlined in dark orange.](/assets/images/help/pull_requests/pull-request-tabs-changed-files.png) -Rather than viewing the commits themselves, you can view the proposed changes as they'll appear in the files once the pull request is merged. The files appear in alphabetical order within the Files changed tab. Additions to the files appear in green and are prefaced by a `+` sign while content that has been removed appears in red and is prefaced by a `-` sign. +Instead of viewing the commits themselves, you can view the proposed changes as they'll appear in the files once the pull request is merged. The files appear in alphabetical order within the Files changed tab. Additions to the files appear in green and are marked by a `+` sign. Content that has been removed appears in red and is marked by a `-` sign. ## Diff view options > [!TIP] -> If you're having a hard time understanding the context of a change, you can click **View** in the Files changed tab to view the whole file with the proposed changes. +> If you're having trouble understanding the context of a change, you can click **View** in the Files changed tab to view the whole file with the proposed changes. You have several options for viewing a diff: * The unified view shows updated and existing content together in a linear view. @@ -34,11 +34,11 @@ You have several options for viewing a diff: * The rich diff view shows a preview of how the changes will look once the pull request is merged. * The source view shows the changes in source without the formatting of the rich diff view. -You can also choose to ignore whitespace changes to get a more accurate view of the substantial changes in a pull request. +You can also choose to ignore whitespace changes to get a more accurate view of the meaningful changes in a pull request. ![Screenshot of the "Files changed" tab for a pull request. The "Diff view" menu is outlined in dark orange.](/assets/images/help/pull_requests/diff-settings-menu.png) -To simplify reviewing changes in a large pull request, you can filter the diff to only show selected file types, show files you are a CODEOWNER of, hide files you have already viewed, or hide deleted files. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request). +To simplify reviewing changes in a large pull request, filter the diff to show only selected file types, show files you are a CODEOWNER of, hide files you have already viewed, or hide deleted files. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request). ![Screenshot of the file filter dropdown menu. The menu is expanded and outlined in dark orange.](/assets/images/help/pull_requests/file-filter-menu.png) @@ -51,17 +51,17 @@ You can also use the diff view to see which dependencies you are introducing or ## Three-dot and two-dot Git diff comparisons -There are two comparison methods for the `git diff` command; two-dot (`git diff A..B`) and three-dot (`git diff A...B`). Pull requests on {% data variables.product.prodname_dotcom %} show a three-dot diff. +There are two comparison methods for the `git diff` command: two-dot (`git diff A..B`) and three-dot (`git diff A...B`). Pull requests on {% data variables.product.prodname_dotcom %} show a three-dot diff. ### Three-dot Git diff comparison -The three-dot comparison shows the difference between the latest common commit of both branches (merge base) and the most recent version of the topic branch. +The three-dot comparison shows the difference between the most recent common commit of both branches (merge base) and the most recent version of the topic branch. ### Two-dot Git diff comparison -The two-dot comparison shows the difference between the latest state of the base branch (for example, `main`) and the most recent version of the topic branch. +The two-dot comparison shows the difference between the most recent state of the base branch (for example, `main`) and the most recent version of the topic branch. -To see two committish references in a two-dot diff comparison on {% data variables.product.prodname_dotcom %}, you can edit the URL of your repository's "Comparing changes" page. For more information, see the [Git Glossary for "committish"](https://git-scm.com/docs/gitglossary#gitglossary-aiddefcommit-ishacommit-ishalsocommittish) from the _Pro Git_ book site. +To see two committish references in a two-dot diff comparison on {% data variables.product.prodname_dotcom %}, you can edit the URL of your repository's "Comparing changes" page. For more information, see the [Git Glossary for "committish"](https://git-scm.com/docs/gitglossary#gitglossary-aiddefcommit-ishacommit-ishalsocommittish) on the _Pro Git_ book site. {% data reusables.repositories.two-dot-diff-comparison-example-urls %} @@ -73,15 +73,15 @@ For more information about Git commands to compare changes, see [Git diff option ## About three-dot comparison on {% data variables.product.prodname_dotcom %} -Since the three-dot comparison compares with the merge base, it is focusing on "what a pull request introduces." +Because the three-dot comparison uses the merge base, it focuses on "what a pull request introduces." When you use a two-dot comparison, the diff changes when the base branch is updated, even if you haven't made any changes to the topic branch. Additionally, a two-dot comparison focuses on the base branch. This means that anything you add is displayed as missing from the base branch, as if it was a deletion, and vice versa. As a result, the changes the topic branch introduces become ambiguous. -In contrast, by comparing the branches using the three-dot comparison, changes in the topic branch are always in the diff if the base branch is updated, because the diff shows all of the changes since the branches diverged. +In contrast, when you compare the branches using the three-dot comparison, changes in the topic branch are always in the diff if the base branch is updated, because the diff shows all of the changes since the branches diverged. ### Merging often -To avoid getting confused, merge the base branch (for example, `main`) into your topic branch frequently. By merging the base branch, the diffs shown by two-dot and three-dot comparisons are the same. We recommend merging a pull request as soon as possible. This encourages contributors to make pull requests smaller, which is recommended in general. +To avoid confusion, merge the base branch (for example, `main`) into your topic branch frequently. When you merge the base branch, the diffs shown by two-dot and three-dot comparisons are the same. We recommend merging a pull request as soon as possible. This encourages contributors to make pull requests smaller, which we recommend in general. ## Further reading diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md index 21c975095e10..bbb575d93d42 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md +++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md @@ -15,25 +15,25 @@ category: - Create pull requests --- -Pull requests are proposals to merge code changes into a project. A pull request is {% data variables.product.github %}'s foundational **collaboration feature**, letting you discuss and review changes before merging them. This helps teams work together, catch issues early, and maintain code quality. +Pull requests are proposals to merge code changes into a project. A pull request is {% data variables.product.github %}'s key **collaboration feature**, letting you discuss and review changes before merging them. This helps teams work together, catch issues early, and maintain code quality. View your pull requests {% octicon "link-external" height:16 aria-label="link-external" %} ## Working with pull requests -The **Conversation** tab of a pull request displays a description of the changes, a timeline of events, and comments and reviews from collaborators. This central hub lets you track the discussion and progress of the proposed changes. +The **Conversation** tab of a pull request displays a description of the changes, a timeline of events, and comments and reviews from collaborators. This tab lets you track the discussion and progress of the proposed changes. -The **Commits** tab shows all commits made to the pull request branch in chronological order. This helps you understand the development history and see how the changes evolved over time. +The **Commits** tab shows all commits on the pull request branch in chronological order. This helps you understand the development history and see how the changes evolved over time. The **Checks** tab displays the status of any automated tests, builds, or other continuous integration workflows that run when you push commits. These checks help ensure your changes meet quality standards before merging. The **Files changed** tab shows the differences between the proposed changes and the existing code, making it easy to see what will change when the pull request merges. -The **Merge status** of a pull request can be viewed directly in the header from anywhere in the pull request page. Click to open the details so you can quickly identify blockers, missing approvals, and get your pull request ready to merge. +You can view the **Merge status** of a pull request directly in the header from anywhere in the pull request page. Click the merge status to open the details, quickly identify blockers and missing approvals, and get your pull request ready to merge. ## Draft pull requests -When you create a pull request, you can choose to make it a draft pull request. Draft pull requests cannot be merged, and code owners are not automatically requested to review them. This is useful when you want to share work-in-progress without formally requesting reviews. +When you create a pull request, you can choose to make it a draft pull request. Draft pull requests cannot be merged, and code owners are not automatically requested to review them. Drafts are useful when you want to share work-in-progress without formally requesting reviews. {% data reusables.pull_requests.mark-ready-review %} You can convert a pull request to a draft at any time. See [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request). diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request.md index 10546049d626..2c6092099cd4 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request.md @@ -16,10 +16,10 @@ category: --- > [!WARNING] -> When you change the base branch of your pull request, some commits may be removed from the timeline. Review comments may also become outdated, as the line of code that the comment referenced may no longer be part of the changes in the pull request. +> When you change the base branch of your pull request, some commits may be removed from the timeline. Review comments may also become outdated because the line of code that the comment referenced may no longer be part of the changes in the pull request. {% data reusables.repositories.sidebar-pr %} -1. In the "Pull Requests" list, click the pull request you'd like to modify. +1. In the "Pull Requests" list, click the pull request you want to modify. 1. Next to the pull request title, click **Edit title** {% octicon "pencil" aria-label="Edit title" %}. 1. In the base branch drop-down menu, select the base branch you'd like to [compare changes against](/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits#comparing-branches). @@ -29,7 +29,7 @@ category: 1. Read the information about changing the base branch and click **Change base**. > [!TIP] -> When you open a pull request, {% data variables.product.github %} will set the base to the commit that branch references. If the branch is updated in the future, {% data variables.product.github %} will not update the base branch's commit. +> When you open a pull request, {% data variables.product.github %} sets the base to the commit that branch references. If the branch is updated in the future, {% data variables.product.github %} does not update the base branch's commit. ## Further reading diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request.md index c9ade7970c80..8d565055303e 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request.md @@ -23,17 +23,19 @@ category: > You can also mark a pull request as ready for review using the {% data variables.product.prodname_cli %}. For more information, see [`gh pr ready`](https://cli.github.com/manual/gh_pr_ready) in the {% data variables.product.prodname_cli %} documentation. {% data reusables.repositories.sidebar-pr %} -1. In the "Pull requests" list, click the pull request you'd like to mark as ready for review. +1. In the "Pull requests" list, click the pull request you want to mark as ready for review. 1. In the merge box, click **Ready for review**. ![Screenshot of the merge box in a pull request. The "Ready for review" button is outlined in dark orange.](/assets/images/help/pull_requests/ready-for-review-button.png) ## Converting a pull request to a draft -You can convert a pull request to a draft at any time. For example, if you accidentally opened a pull request instead of a draft, or if you've received feedback on your pull request that needs to be addressed, you can convert the pull request to a draft to indicate further changes are needed. No one can merge the pull request until you mark the pull request as ready for review again. People who are already subscribed to notifications for the pull request will not be unsubscribed when you convert the pull request to a draft. +You can convert a pull request to a draft at any time. For example, if you accidentally opened a pull request instead of a draft, or if you've received feedback on your pull request that you need to address, you can convert the pull request to a draft to indicate further changes are needed. + +No one can merge the pull request until you mark the pull request as ready for review again. People who are already subscribed to notifications for the pull request will not be unsubscribed when you convert the pull request to a draft. {% data reusables.repositories.sidebar-pr %} -1. In the "Pull requests" list, click the pull request you'd like to convert to a draft. +1. In the "Pull requests" list, click the pull request you want to convert to a draft. 1. In the right sidebar, under "Reviewers," click **Convert to draft**. ![Screenshot of the "Reviewers" section in the right sidebar of a pull request. The "Convert to draft" link is outlined in dark orange.](/assets/images/help/pull_requests/convert-to-draft-link.png) diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md index 37b282b1c1bc..2dc417f0a67b 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md +++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md @@ -14,16 +14,16 @@ shortTitle: Commit to PR branch from fork category: - Create pull requests --- -You can only make commits on pull request branches that: -* Are opened in a repository that you have push access to and that were created from a fork of that repository +You can make commits only on pull request branches that: +* Are opened in a repository that you have push access to and were created from a fork of that repository * Are on a user-owned fork -* Have permission granted from the pull request creator -* Don't have [branch restrictions](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#restrict-who-can-push-to-matching-branches) that will prevent you from committing +* Have permission from the pull request creator +* Don't have [branch restrictions](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#restrict-who-can-push-to-matching-branches) that prevent you from committing Only the user who created the pull request can give you permission to push commits to the user-owned fork. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). > [!NOTE] -> You can also make commits to a pull request branch from a fork of your repository through {% data variables.location.product_location %} by creating your own copy (or fork) of the fork of your repository and committing changes to the same head branch that the original pull request changes were created on. For some general guidelines, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork). +> You can also make commits to a pull request branch from a fork of your repository through {% data variables.location.product_location %}. To do this, create your own copy (or fork) of the fork of your repository. Then, commit changes to the same head branch where the original pull request changes were created. For some general guidelines, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork). 1. On {% data variables.product.github %}, navigate to the main page of the fork (or copy of your repository) where the pull request branch was created. {% data reusables.repositories.copy-clone-url %} @@ -38,13 +38,13 @@ Only the user who created the pull request can give you permission to push commi cd open-source-projects ``` -1. Type `git clone`, and then paste the URL you copied in Step 3. +1. Type `git clone`, then paste the URL you copied in Step 3. ```shell git clone https://{% data variables.product.product_url %}/USERNAME/FORK-OF-THE-REPOSITORY ``` -1. Press **Enter**. Your local clone will be created. +1. Press **Enter**. Git creates your local clone. ```shell $ git clone https://{% data variables.product.product_url %}/USERNAME/FORK-OF-THE-REPOSITORY @@ -64,7 +64,7 @@ Only the user who created the pull request can give you permission to push commi cd FORK-OF-THE-REPOSITORY ``` -1. Switch branches to the compare branch of the pull request where the original changes were made. If you navigate to the original pull request, you'll see the compare branch at the top of the pull request. +1. Switch to the compare branch of the pull request where the original changes were made. To find the compare branch, navigate to the original pull request and check the top of the pull request. In this example, the compare branch is `test-branch`: @@ -75,8 +75,8 @@ Only the user who created the pull request can give you permission to push commi > [!TIP] > For more information about pull request branches, including examples, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request#changing-the-branch-range-and-destination-repository). -1. At this point, you can do anything you want with this branch. You can push new commits to it, run some local tests, or merge other branches into the branch. Make modifications as you like. -1. After you commit your changes to the head branch of the pull request you can push your changes up to the original pull request directly. In this example, the head branch is `test-branch`: +1. Make any needed changes to this branch. You can push new commits to it, run local tests, or merge other branches into the branch. +1. After you commit your changes to the head branch of the pull request, push your changes directly to the original pull request. In this example, the head branch is `test-branch`: ```shell $ git push origin test-branch @@ -89,8 +89,8 @@ Only the user who created the pull request can give you permission to push commi > 12da2e9..250e946 TEST-BRANCH -> TEST-BRANCH ``` -Your new commits will be reflected on the original pull request on {% data variables.location.product_location %}. +Your new commits appear on the original pull request on {% data variables.location.product_location %}. -## Further Reading +## Further reading * [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks) diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork.md index cf46e5f948f5..9a70f291c0b5 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork.md +++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork.md @@ -15,14 +15,14 @@ shortTitle: Create a PR from a fork category: - Create pull requests --- -If your pull request compares your topic branch with a branch in the upstream repository as the base branch, then your topic branch is also called the "compare branch" of the pull request. +If your pull request compares your topic branch with a branch in the upstream repository as the base branch, your topic branch is also called the "compare branch" of the pull request. -Before you can create a pull request from a fork, you need to fork the upstream repository and push your changes to a branch in your fork. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo). +Before creating a pull request from a fork, you need to fork the upstream repository and push your changes to a branch in your fork. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo). For example: -* Your topic branch (also known as “feature branch”) is the branch where you’re making your changes in your forked repository (e.g. `my-topic-branch`). -* The base branch is the branch in the upstream (central) repository that you want to merge your changes into (e.g. `main`). -* The pull request compares the changes proposed by the topic branch (`my-topic-branch`) with the base branch (`main`), so `my-topic-branch` is known as the “compare branch”. +* Your topic branch (also known as “feature branch”) is the branch where you make changes in your forked repository, for example, `my-topic-branch`. +* The base branch is the branch in the upstream (central) repository where you want to merge your changes, for example, `main`. +* The pull request compares the changes proposed by the topic branch (`my-topic-branch`) with the base branch (`main`), so `my-topic-branch` is the “compare branch”. For more information about pull request branches, including examples, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request#changing-the-branch-range-and-destination-repository). @@ -34,11 +34,11 @@ For more information about pull request branches, including examples, see [AUTOT ![Screenshot of the page to open a pull request. The "compare across forks" link is outlined in dark orange.](/assets/images/help/pull_requests/compare-across-forks-link.png) -1. In the "base branch" dropdown menu, select the branch of the upstream repository you'd like to merge changes into. +1. In the "base branch" dropdown menu, select the branch of the upstream repository where you want to merge changes. ![Screenshot of the page to open a new pull request. The dropdown menus for choosing the base repository and branch are outlined in dark orange.](/assets/images/help/pull_requests/choose-base-fork-and-branch.png) -1. In the "head fork" dropdown menu, select your fork, then use the "compare branch" drop-down menu to select the branch you made your changes in. +1. In the "head fork" dropdown menu, select your fork. Then, use the "compare branch" dropdown menu to select the branch where you made your changes. ![Screenshot of the page to open a new pull request. The dropdown menus for choosing the head repository and compare branch are outlined in dark orange.](/assets/images/help/pull_requests/choose-head-fork-compare-branch.png) diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request.md index 232b28af1a3c..f3e72d8a5b42 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request.md @@ -14,9 +14,9 @@ category: - Create pull requests --- -If you want to create a new branch for your pull request and do not have write permissions to the repository, you can fork the repository first. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) and [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks). +If you want to create a new branch for your pull request but don't have write permissions to the repository, you can fork the repository first. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) and [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks). -You can specify which branch you'd like to merge your changes into when you create your pull request. Pull requests can only be opened between two branches that are different. +When you create your pull request, you can specify which branch you want to merge your changes into. Pull requests can only be opened between two different branches. {% data reusables.pull_requests.perms-to-open-pull-request %} @@ -26,15 +26,15 @@ You can specify which branch you'd like to merge your changes into when you crea By default, pull requests are based on the parent repository's default branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches#about-the-default-branch). -If the default parent repository isn't correct, you can change both the parent repository and the branch with the drop-down lists. You can also swap your head and base branches with the drop-down lists to establish diffs between reference points. References here must be branch names in your GitHub repository. +If the default parent repository isn't correct, you can change both the parent repository and the branch with the dropdown lists. You can also swap your head and base branches with the dropdown lists to compare reference points. The references must be branch names in your GitHub repository. ![Screenshot of a pull request. The dropdown to edit the compare branch is expanded.](/assets/images/help/pull_requests/pull-request-review-edit-branch.png) -When thinking about branches, remember that the _base branch_ is **where** changes should be applied, the _head branch_ contains **what** you would like to be applied. +When thinking about branches, remember that the _base branch_ is **where** changes should be applied. The _head branch_ contains **what** you would like to be applied. -When you change the base repository, you also change notifications for the pull request. Everyone that can push to the base repository will receive an email notification and see the new pull request in their dashboard the next time they sign in. +When you change the base repository, you also change notifications for the pull request. Everyone who can push to the base repository receives an email notification and sees the new pull request in their dashboard the next time they sign in. -When you change any of the information in the branch range, the Commit and Files changed preview areas will update to show your new range. +When you change any information in the branch range, the Commit and Files changed preview areas update to show your new range. > [!TIP] > * Using the compare view, you can set up comparisons across any timeframe. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits). @@ -50,7 +50,7 @@ When you change any of the information in the branch range, the Commit and Files ![Screenshot of the branch dropdown menu on the main page of a repository.](/assets/images/help/pull_requests/branch-dropdown.png) {% data reusables.repositories.new-pull-request %} -1. Use the _base_ branch dropdown menu to select the branch you'd like to merge your changes into, then use the _compare_ branch drop-down menu to choose the topic branch you made your changes in. +1. Use the _base_ branch dropdown menu to select the branch where you want to merge your changes. Then, use the _compare_ branch dropdown menu to choose the topic branch where you made your changes. {% data reusables.repositories.pr-title-description %} {% data reusables.repositories.create-pull-request %} @@ -94,7 +94,7 @@ To mark a pull request as a draft, use the `--draft` flag. gh pr create --draft ``` -To add a labels or milestones to the new pull request, use the `--label` and `--milestone` flags. +To add labels or milestones to the new pull request, use the `--label` and `--milestone` flags. ```shell gh pr create --label "bug,help wanted" --milestone octocat-milestone @@ -122,7 +122,7 @@ gh pr create --web {% desktop %} -1. Click **Preview Pull Request**. {% data variables.product.prodname_desktop %} will open a preview dialog showing the diff of the changes between your current branch and the base branch. +1. Click **Preview Pull Request**. {% data variables.product.prodname_desktop %} opens a preview dialog that shows the diff of the changes between your current branch and the base branch. {% mac %} @@ -142,11 +142,11 @@ gh pr create --web ![Screenshot of the "Open a Pull Request" dialog window. A button with a dropdown icon, labeled "base: development", is outlined in orange.](/assets/images/help/desktop/base-branch-selection.png) - {% data variables.product.prodname_desktop %} will advise you whether the current branch can be automatically merged into the base branch. + {% data variables.product.prodname_desktop %} tells you whether the current branch can be automatically merged into the base branch. ![Screenshot of the "Open a Pull Request" dialog window. A status label stating "Can't automatically merge" is highlighted with an orange outline.](/assets/images/help/desktop/preview-dialog-merge-status.png) -1. Click **Create Pull Request**. {% data variables.product.prodname_desktop %} will open your default browser to take you to {% data variables.product.prodname_dotcom %}. +1. Click **Create Pull Request**. {% data variables.product.prodname_desktop %} opens your default browser and takes you to {% data variables.product.prodname_dotcom %}. {% data reusables.repositories.pr-title-description %} {% data reusables.repositories.create-pull-request %} @@ -156,9 +156,9 @@ gh pr create --web {% codespaces %} -1. Once you've committed changes to your local copy of the repository, click the **Create Pull Request** icon. +1. After you commit changes to your local copy of the repository, click the **Create Pull Request** icon. ![Screenshot of the top of the "Source Control" side bar. The pull request icon is highlighted with a dark orange outline.](/assets/images/help/codespaces/codespaces-commit-pr-button.png) -1. Check that the local branch and repository you're merging from, and the remote branch and repository you're merging into, are correct. Then give the pull request a title and a description. +1. Check that the local branch and repository you're merging from, and the remote branch and repository you're merging into, are correct. Then, give the pull request a title and a description. ![Screenshot of the "{% data variables.product.prodname_dotcom %} Pull Request" side bar with a form for creating a pull request, including "Title" and "Description" fields.](/assets/images/help/codespaces/codespaces-commit-pr.png) 1. Click **Create**. @@ -170,7 +170,7 @@ For more information on creating pull requests in {% data variables.product.prod ## Making changes to files in your pull request -After you have opened your pull request, you can continue making changes to the files by adding new commits to your head branch. +After you open your pull request, you can continue changing files by adding new commits to your head branch. {% webui %} @@ -183,7 +183,7 @@ You can also make changes to files on the {% data variables.product.github %} we 1. Above the file you want to change, click {% octicon "kebab-horizontal" aria-label="Show options" %}. ![Screenshot of the options above a file on the "File changed" tab. The "Show options" button is highlighted with an orange rectangle.](/assets/images/help/pull_requests/menu-on-pull-request-file.png) 1. In the menu, click **Edit file**. -1. Make your changes in the editor and when committing your change, choose to commit directly back to your head branch. +1. Make your changes in the editor. When you commit your change, choose to commit directly back to your head branch. {% endwebui %} diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository.md index ae9815947711..8c3db2f11444 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository.md +++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository.md @@ -17,7 +17,7 @@ category: ## Creating a branch -You can create a branch in different ways on {% data variables.product.github %}. +You can create branches in several ways on {% data variables.product.github %}. > [!NOTE] > You can only create a branch in a repository to which you have push access. @@ -42,14 +42,14 @@ You can create a branch in different ways on {% data variables.product.github %} ![Screenshot of the file tree view for a repository. A dropdown menu for branches is outlined in dark orange.](/assets/images/help/branches/file-tree-view-branch-dropdown.png) -1. Optionally, if you want to create the new branch from a branch other than the default branch of the repository, click another branch, then select the branch dropdown menu again. +1. Optionally, to create the new branch from a branch other than the default branch of the repository, click another branch. Then, select the branch dropdown menu again. 1. In the "Find or create a branch..." text field, type a unique name for your new branch, then click **Create branch**. ![Screenshot of the branch selector dropdown menu. "Create branch: new-branch" is highlighted with an orange outline.](/assets/images/help/branches/create-branch-text.png) ### Creating a branch for an issue -You can create a branch to work on an issue directly from the issue page and get started right away. For more information, see [AUTOTITLE](/issues/tracking-your-work-with-issues/creating-a-branch-for-an-issue). +You can create a branch to work on an issue directly from the issue page. For more information, see [AUTOTITLE](/issues/tracking-your-work-with-issues/creating-a-branch-for-an-issue). ## Deleting a branch @@ -65,7 +65,7 @@ If the branch you want to delete is associated with an open pull request, you mu 1. Next to the branch that you want to delete, click {% octicon "trash" aria-label="The trash icon" %} . ![Screenshot of a branch in the branch list. A trash icon is highlighted with an orange outline.](/assets/images/help/branches/branches-delete.png) -1. If the branch is associated with at least one open pull request, deleting the branch will close the pull requests. Read the warning, then click **Delete**. +1. If the branch is associated with at least one open pull request, deleting the branch closes the pull requests. Read the warning, then click **Delete**. {% data reusables.pull_requests.retargeted-on-branch-deletion %} For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches#working-with-branches). diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md index 6a3ce11aad7c..2496d66b5175 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md +++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md @@ -13,7 +13,7 @@ category: ## About keeping your pull request in sync -Before merging your pull requests, other changes may get merged into the base branch causing your pull request's head branch to be out of sync. Updating your pull request with the latest changes from the base branch can help catch problems prior to merging. +Before you merge your pull request, other changes may merge into the base branch. This can make your pull request's head branch out of sync. Updating your pull request with the latest changes from the base branch can help catch problems before merging. You can update a pull request's head branch from the command line or the pull request page. The **Update branch** button is displayed when all of these are true: @@ -21,24 +21,25 @@ You can update a pull request's head branch from the command line or the pull re * The pull request branch is not up to date with the base branch. * The base branch requires branches to be up to date before merging or the setting to always suggest updating branches is enabled. -> [!NOTE] You may not be able to update using the `Update branch` button if the HEAD branch of your pull request is a protected branch. +> [!NOTE] +> You may not be able to use the `Update branch` button if the HEAD branch of your pull request is a protected branch. -For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches), [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets) and [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-suggestions-to-update-pull-request-branches). +For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches), [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets), and [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-suggestions-to-update-pull-request-branches). -If there are changes to the base branch that cause merge conflicts in your pull request branch, you will not be able to update the branch until all conflicts are resolved. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts). +If changes to the base branch cause merge conflicts in your pull request branch, you can't update the branch until all conflicts are resolved. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts). -From the pull request page you can update your pull request's branch using a traditional merge or by rebasing. A traditional merge results in a merge commit that merges the base branch into the head branch of the pull request. Rebasing applies the changes from _your_ branch onto the latest version of the base branch. The result is a branch with a linear history, since no merge commit is created. +From the pull request page, you can update your pull request's branch using a traditional merge or by rebasing. A traditional merge creates a merge commit that merges the base branch into the head branch of the pull request. Rebasing applies the changes from _your_ branch onto the latest version of the base branch. The result is a branch with a linear history, because no merge commit is created. ## Updating your pull request branch {% data reusables.repositories.sidebar-pr %} -1. In the "Pull requests" list, click the pull request you'd like to update. -1. In the merge section near the bottom of the page, you can: +1. In the "Pull requests" list, click the pull request you want to update. +1. In the merge section near the bottom of the page, choose how to update the branch: * Click **Update branch** to perform a traditional merge. ![Screenshot of the merge section for a pull request.](/assets/images/help/pull_requests/pull-request-update-branch-with-dropdown.png) - * Click the update branch drop down menu, click **Update with rebase**, and then click **Rebase branch** to update by rebasing on the base branch. + * Click the update branch dropdown menu, click **Update with rebase**, then click **Rebase branch** to update by rebasing on the base branch. ![Screenshot of the merge section of a pull request. The dropdown menu is expanded, showing "Update with merge commit" and "Update with rebase" options.](/assets/images/help/pull_requests/pull-request-update-branch-rebase-option.png) diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review.md index b17309e3689b..daec333b3dc1 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review.md +++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review.md @@ -16,11 +16,13 @@ category: - Create pull requests --- -Repositories belong to a personal account (a single individual owner) or an organization account (a shared account with numerous collaborators or maintainers). For more information, see [AUTOTITLE](/get-started/learning-about-github/types-of-github-accounts). Owners and collaborators on a repository owned by a personal account can assign pull request reviews. Organization members with triage permissions can also assign a reviewer for a pull request. +Repositories belong to a personal account (a single individual owner) or an organization account (a shared account with many collaborators or maintainers). For more information, see [AUTOTITLE](/get-started/learning-about-github/types-of-github-accounts). -To assign a reviewer to a pull request, you will need write access to the repository. For more information about repository access, see [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization). If you have write access, you can assign anyone who has read access to the repository as a reviewer. +Owners and collaborators on a repository owned by a personal account can assign pull request reviews. Organization members with triage permissions can also assign a reviewer for a pull request. -Organization members with write access can also assign a pull request review to any person or team with read access to a repository. The requested reviewer or team will receive a notification that you asked them to review the pull request. If you request a review from a team and code review assignment is enabled, specific members will be requested and the team will be removed as a reviewer. For more information, see [AUTOTITLE](/organizations/organizing-members-into-teams/managing-code-review-settings-for-your-team). +To assign a reviewer to a pull request, you need write access to the repository. For more information about repository access, see [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization). If you have write access, you can assign anyone who has read access to the repository as a reviewer. + +Organization members with write access can also assign a pull request review to any person or team with read access to a repository. The requested reviewer or team receives a notification that you asked them to review the pull request. If you request a review from a team and code review assignment is enabled, specific members are requested and the team is removed as a reviewer. For more information, see [AUTOTITLE](/organizations/organizing-members-into-teams/managing-code-review-settings-for-your-team). > [!NOTE] > Pull request authors can't request reviews unless they are either a repository owner or collaborator with write access to the repository. @@ -31,19 +33,21 @@ Organization members with write access can also assign a pull request review to {% endif %} -You can request a review from either a suggested or specific person. Suggested reviewers are based on [git blame data](/repositories/working-with-files/using-files/viewing-a-file). If you request a review, other people with read access to the repository can still review your pull request. Once someone has reviewed your pull request and you've made the necessary changes, you can re-request review from the same reviewer. If the requested reviewer does not submit a review, and the pull request meets the repository's [mergeability requirements](/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests), you can still merge the pull request. +You can request a review from either a suggested person or a specific person. Suggested reviewers are based on [git blame data](/repositories/working-with-files/using-files/viewing-a-file). If you request a review, other people with read access to the repository can still review your pull request. + +After someone reviews your pull request and you make the necessary changes, you can request another review from the same reviewer. If the requested reviewer does not submit a review, and the pull request meets the repository's [mergeability requirements](/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests), you can still merge the pull request. {% data reusables.repositories.sidebar-pr %} -1. In the list of pull requests, click the pull request that you'd like to ask a specific person or a team to review. +1. In the list of pull requests, click the pull request that you want a specific person or team to review. 1. To request a review from a suggested person under **Reviewers**, next to their username, click **Request**. ![Screenshot of the "Reviewers" section of a pull request's sidebar. To the right of @octocat, a "Request" link is outlined in dark orange.](/assets/images/help/pull_requests/request-suggested-review.png) 1. Optionally, to request a review from someone other than a suggested person, click **Reviewers**. - If you know the name of the person or team you'd like a review from, type the username of the person or the name of the team you're asking to review your changes. Click their team name or username to request a review. + If you know the name of the person or team you want a review from, type the username of the person or the name of the team you're asking to review your changes. Click their team name or username to request a review. -1. After your pull request is reviewed and you've made the necessary changes, you can ask a reviewer to re-review your pull request. Navigate to **Reviewers** in the right sidebar and click {% octicon "sync" aria-label="Re-request review" %} next to the reviewer's name whose review you'd like. +1. After your pull request is reviewed and you make the necessary changes, you can ask a reviewer to review your pull request again. Navigate to **Reviewers** in the right sidebar and click {% octicon "sync" aria-label="Re-request review" %} next to the reviewer's name whose review you want. ![Screenshot of the "Reviewers" section of a pull request's sidebar. To the right of @octocat, a sync icon is outlined in dark orange.](/assets/images/help/pull_requests/request-re-review.png) @@ -51,7 +55,7 @@ You can request a review from either a suggested or specific person. Suggested r ## Requesting a review from {% data variables.product.prodname_copilot %} -You can also request that {% data variables.product.prodname_copilot_short %} reviews your code and provides feedback and suggested changes on your work. See [AUTOTITLE](/copilot/using-github-copilot/code-review/using-copilot-code-review). +You can also request that {% data variables.product.prodname_copilot_short %} review your code and provide feedback and suggested changes on your work. See [AUTOTITLE](/copilot/using-github-copilot/code-review/using-copilot-code-review). {% endif %} diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request.md index c1aab59703a0..50a87dc9243d 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request.md @@ -11,11 +11,13 @@ category: - Create pull requests --- -You can use query parameters to open pull requests. Query parameters are optional parts of a URL you can customize to share a specific web page view, such as search filter results or a pull request template on {% data variables.product.prodname_dotcom %}. To create your own query parameters, you must match the key and value pair. For more information on creating pull request templates, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository). +You can use query parameters to open pull requests. Query parameters are optional parts of a URL that you can customize to share a specific web page view, such as search filter results or a pull request template on {% data variables.product.prodname_dotcom %}. -You must have the proper permissions for any action to use the equivalent query parameter. For example, you must have permission to add a label to a pull request to use the `labels` query parameter. For more information, see [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization). +To create your own query parameters, you must match the key and value pair. For more information on creating pull request templates, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository). -If you create an invalid URL using query parameters, or if you don’t have the proper permissions, the URL will return a `404 Not Found` error page. If you create a URL that exceeds the server limit, the URL will return a `414 URI Too Long` error page. +You must have the required permissions for an action to use the equivalent query parameter. For example, you must have permission to add a label to a pull request to use the `labels` query parameter. For more information, see [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization). + +If you create an invalid URL using query parameters, or if you don’t have the required permissions, the URL returns a `404 Not Found` error page. If you create a URL that exceeds the server limit, the URL returns a `414 URI Too Long` error page. Query parameter | Example --- | --- @@ -26,5 +28,5 @@ Query parameter | Example `milestone` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&milestone=testing+milestones` creates a pull request with the milestone "testing milestones." `assignees` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&assignees=octocat` creates a pull request and assigns it to @octocat. `projects` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&title=Bug+fix&projects=octo-org/1` creates a pull request with the title "Bug fix" and adds it to the organization's project 1. -`template` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&template=issue_template.md` creates a pull request with a template in the pull request body. The `template` query parameter works with templates stored in a `PULL_REQUEST_TEMPLATE` subdirectory within the root, `docs/` or `.github/` directory in a repository. For more information, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests). +`template` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&template=issue_template.md` creates a pull request with a template in the pull request body. The `template` query parameter works with templates stored in a `PULL_REQUEST_TEMPLATE` subdirectory in the root, `docs/`, or `.github/` directory in a repository. For more information, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests). diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews.md b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews.md index 5800c6cedd06..00e698492f68 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews.md +++ b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews.md @@ -15,7 +15,7 @@ category: - Review pull requests --- -Pull request reviews are one of the primary ways people collaborate on {% data variables.product.github %}. Reviewers can comment on changes, suggest improvements, and approve or request changes before code is merged. This collaborative process enables teams to ensure code quality and share knowledge. +Pull request reviews are one of the main ways people collaborate on {% data variables.product.github %}. Reviewers can comment on changes, suggest improvements, and approve or request changes before code is merged. This process helps teams maintain code quality and share knowledge. {% raw %}View pull requests awaiting your review{% endraw %} @@ -27,13 +27,13 @@ Anyone with read access can review and comment on proposed changes. When submitt * **Approve**: Approve the changes for merging. * **Request changes**: Identify issues that must be fixed before merging. -You can comment on specific lines, suggest changes for authors to apply directly, and discuss implementation approaches. Reviews appear in the conversation timeline and merge box. Mark conversation threads as resolved to track addressed feedback. +You can comment on specific lines, suggest changes for authors to apply directly, and discuss implementation approaches. Reviews appear in the conversation timeline and merge box. To track addressed feedback, mark conversation threads as resolved. ## Requesting and requiring reviews Repository owners and collaborators can request reviews from specific people or teams. If you define code owners in a CODEOWNERS file, they are automatically requested for review when a pull request modifies their code. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review). -To ensure code quality and prevent accidental merges, repository administrators can require approvals before pull requests are merged. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-pull-request-reviews-before-merging). +To maintain code quality and prevent accidental merges, repository administrators can require approvals before pull requests are merged. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-pull-request-reviews-before-merging). ## Further reading diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews.md b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews.md index b1a2ebcc3edc..ec057fd234d1 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews.md +++ b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews.md @@ -26,10 +26,10 @@ You can comment on a pull request, approve the changes, or request improvements {% data reusables.repositories.sidebar-pr %} {% data reusables.repositories.choose-pr-review %} {% data reusables.repositories.changed-files %} -1. Review the changes in the pull request, and optionally, comment on specific lines or files. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request#starting-a-review). +1. Review the changes in the pull request. Optionally, comment on specific lines or files. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request#starting-a-review). {% data reusables.repositories.review-changes %} {% data reusables.repositories.review-summary-comment %} -1. Select **Approve** to approve merging the changes proposed in the pull request. +1. Select **Approve** to approve merging the proposed changes. {% data reusables.repositories.submit-review %} {% data reusables.repositories.request-changes-tips %} diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally.md b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally.md index 2cd07f6fb571..925c57de7170 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally.md +++ b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally.md @@ -16,19 +16,19 @@ category: --- > [!NOTE] -> Pull request authors can give upstream repository maintainers, or those with push access to the upstream repository, permission to make commits to their pull request's compare branch in a user-owned fork. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). +> Pull request authors can give upstream repository maintainers, or people with push access to the upstream repository, permission to make commits to their pull request's compare branch in a user-owned fork. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). ## Modifying an active pull request locally {% webui %} {% data reusables.repositories.sidebar-pr %} -1. In the list of pull requests, click the pull request you'd like to modify.{% ifversion fpt or ghec %} -1. To choose where you'd like to open the pull request, select the **{% octicon "code" aria-hidden="true" aria-label="code" %} Code** dropdown and click one of the tabs. +1. In the list of pull requests, click the pull request you want to modify.{% ifversion fpt or ghec %} +1. To choose where you want to open the pull request, select the **{% octicon "code" aria-hidden="true" aria-label="code" %} Code** dropdown and click one of the tabs. ![Screenshot of a pull request title. A button with an arrow indicating a dropdown menu, labeled "Code," is outlined in dark orange.](/assets/images/help/pull_requests/open-with-button.png){% else %} -1. In the merge box, click **command line instructions**. Follow the sequence of steps to bring down the proposed pull request. +1. In the merge box, click **command line instructions**. Follow the steps to download the proposed pull request. ![Screenshot of the merge box in a pull request. The link to access command line pull request instructions is outlined in dark orange.](/assets/images/help/pull_requests/pull-request-show-command-line-merge.png) @@ -52,20 +52,20 @@ gh pr checkout PULL-REQUEST ## Modifying an inactive pull request locally -If a pull request’s author is unresponsive to requests or has deleted their fork, the changes proposed in that pull request can still be merged via a new pull request. However, if you want to make changes to a pull request and the author is not responding, you'll need to perform some additional steps to update the pull request. +If a pull request’s author is unresponsive to requests or has deleted their fork, the changes proposed in that pull request can still be merged through a new pull request. However, if you want to make changes to a pull request and the author is not responding, you need to take additional steps to update the pull request. -Once a pull request is opened, {% data variables.product.github %} stores all of the changes remotely. In other words, commits in a pull request are available in a repository even before the pull request is merged. You can fetch an open pull request and recreate it as your own. +After a pull request is opened, {% data variables.product.github %} stores all of the changes remotely. In other words, commits in a pull request are available in a repository even before the pull request is merged. You can fetch an open pull request and recreate it as your own. -Anyone can work with a previously opened pull request to continue working on it, test it out, or even open a new pull request with additional changes. However, only collaborators with push access can merge pull requests. +Anyone can work with a previously opened pull request to continue working on it, test it, or open a new pull request with additional changes. However, only collaborators with push access can merge pull requests. {% data reusables.repositories.sidebar-issue-pr %} -1. In the "Pull Requests" list, click the pull request you'd like to merge. +1. In the "Pull Requests" list, click the pull request you want to merge. 1. Find the ID number of the inactive pull request. This is the sequence of digits right after the pull request's title. ![Screenshot of the title of a pull request. The pull request's ID number is outlined in dark orange.](/assets/images/help/pull_requests/pull-request-id-number.png) {% data reusables.command_line.open_the_multi_os_terminal %} -1. Fetch the reference to the pull request based on its ID number, creating a new branch in the process. Use the pull request ID and the name of the local branch you want to create in the command. +1. Fetch the reference to the pull request based on its ID number. This creates a new branch. Use the pull request ID and the name of the local branch you want to create in the command. ```shell git fetch origin pull/ID/head:BRANCH_NAME @@ -78,8 +78,8 @@ Anyone can work with a previously opened pull request to continue working on it, > Switched to a new branch 'BRANCH_NAME' ``` -1. At this point, you can do anything you want with this branch. You can run some local tests, or merge other branches into the branch. -1. When you're ready, you can push the new branch up: +1. Make any needed changes to this branch. You can run local tests or merge other branches into the branch. +1. When you're ready, push the new branch: ```shell [pull-inactive-pull-request] $ git push origin BRANCH_NAME @@ -96,7 +96,7 @@ Anyone can work with a previously opened pull request to continue working on it, ## Error: Failed to push some refs -The remote `refs/pull/` namespace is _read-only_. If you try to push any commits there, you'll see this error: +The remote `refs/pull/` namespace is _read-only_. If you try to push commits there, you'll see this error: ```shell ! [remote rejected] HEAD -> refs/pull/1/head (deny updating a hidden ref) @@ -104,4 +104,4 @@ error: failed to push some refs to 'git@github.local:USERNAME/REPOSITORY.git' ``` > [!TIP] -> When you remove or rename a remote reference, your local `refs/pull/origin/` namespace will not be affected by calls to `git-remote`. +> When you remove or rename a remote reference, calls to `git-remote` do not affect your local `refs/pull/origin/` namespace. diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request.md index ed344788f46f..5d2a3bc8272c 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request.md @@ -19,16 +19,16 @@ category: --- ## About pull request comments -You can comment on a pull request's **Conversation** tab to leave general comments, questions, or props. You can also suggest changes that the author of the pull request can apply directly from your comment. +You can comment on a pull request's **Conversation** tab to leave general comments, questions, or praise. You can also suggest changes that the pull request author can apply directly from your comment. -You can also comment on specific files or sections of a file in a pull request's **Files changed** tab in the form of individual line or file comments, or as part of a pull request review. Adding line or file comments is a great way to discuss questions about implementation or provide feedback to the author. For more information about pull request reviews, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews). +You can also comment on specific files or sections of a file in a pull request's **Files changed** tab as individual line or file comments, or as part of a pull request review. Adding line or file comments is a great way to discuss questions about implementation or give feedback to the author. For more information about pull request reviews, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews). For more information on adding line or file comments to a pull request review, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request). > [!NOTE] > If you reply to a pull request via email, your comment will be added on the **Conversation** tab and will not be part of a pull request review. -To reply to an existing line or file comment, you'll need to navigate to the comment on either the **Conversation** tab or **Files changed** tab and add an additional comment below it. +To reply to an existing line or file comment, navigate to the comment on either the **Conversation** tab or **Files changed** tab. Then, add another comment below it. > [!TIP] > * Pull request comments support the same [formatting](/get-started/writing-on-github) as regular comments on {% data variables.product.github %}, such as @mentions, emoji, and references. @@ -37,7 +37,7 @@ To reply to an existing line or file comment, you'll need to navigate to the com ## Adding comments to a pull request {% data reusables.repositories.sidebar-pr %} -1. In the list of pull requests, click the pull request where you'd like to leave line comments. +1. In the list of pull requests, click the pull request where you want to leave line comments. {% data reusables.repositories.changed-files %} {% data reusables.repositories.start-line-comment %} {% data reusables.repositories.multiple-lines-comment %} @@ -50,9 +50,9 @@ To reply to an existing line or file comment, you'll need to navigate to the com * If you want to add **multiple comments**, click **Start a review**, then continue adding comments. - When you have finished, click **Finish your review** at the top right of the page, leave a summary of your review, and click **Submit review**. + When you're finished, click **Finish your review** at the top right of the page, leave a summary of your review, and click **Submit review**. -Anyone watching the pull request or repository will receive a notification of your comments. Batching your comments avoids multiple notifications being sent. {% ifversion copilot %}If you are commenting on a pull request created by {% data variables.product.prodname_copilot_short %}, batching your comments prevents {% data variables.product.prodname_copilot_short %} from starting to work on individual comments before you have completed your review. See [AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/start-copilot-sessions).{% endif %} +Anyone watching the pull request or repository will receive a notification of your comments. Batching your comments avoids sending multiple notifications. {% ifversion copilot %}If you are commenting on a pull request created by {% data variables.product.prodname_copilot_short %}, batching your comments prevents {% data variables.product.prodname_copilot_short %} from starting to work on individual comments before you have completed your review. See [AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/start-copilot-sessions).{% endif %} ### Resolving conversations @@ -60,15 +60,15 @@ You can resolve a conversation in a pull request if you opened the pull request To indicate that a conversation on the **Files changed** tab is complete, click **Resolve conversation**. -The entire conversation will be collapsed and marked as resolved, making it easier to find conversations that still need to be addressed. +The entire conversation will collapse and be marked as resolved. This makes it easier to find conversations that still need to be addressed. If the suggestion in a comment is out of your pull request's scope, you can open a new issue that tracks the feedback and links back to the original comment. For more information, see [AUTOTITLE](/issues/tracking-your-work-with-issues/creating-an-issue#creating-an-issue-from-a-comment). #### Discovering and navigating conversations -You can discover and navigate to all the conversations in your pull request using the **Conversations** menu that's shown at the top of the **Files Changed** tab. +You can discover and navigate to all the conversations in your pull request with the **Conversations** menu at the top of the **Files changed** tab. -From this view, you can see which conversations are unresolved, resolved, and outdated. This makes it easy to discover and resolve conversations. +In this view, you can see which conversations are unresolved, resolved, and outdated. This makes it easy to discover and resolve conversations. ![Screenshot of the "Conversations" menu on the "Files Changed" tab of a pull request.](/assets/images/help/pull_requests/conversations-menu.png) diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/dismissing-a-pull-request-review.md b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/dismissing-a-pull-request-review.md index 77ebac8fb36b..f6be571a75a7 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/dismissing-a-pull-request-review.md +++ b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/dismissing-a-pull-request-review.md @@ -15,7 +15,7 @@ category: - Review pull requests --- {% data reusables.pull_requests.dismiss_review %} -This changes the status of the review to a review comment. When you dismiss a review, you must add a comment explaining why you dismissed it. Your comment will be added to the pull request conversation. +Dismissing a review changes the status of the review to a review comment. When you dismiss a review, you must add a comment explaining why you dismissed it. Your comment will be added to the pull request conversation. {% data reusables.search.requested_reviews_search %} @@ -25,7 +25,7 @@ This changes the status of the review to a review comment. When you dismiss a re ![Screenshot of the merge box for a pull request. The chevron icon to see the reviews is outlined in dark orange.](/assets/images/help/pull_requests/merge_box/pull-request-open-menu.png) -1. Next. to the review you'd like to dismiss, select the {% octicon "kebab-horizontal" aria-label="Show options" %} dropdown menu, then click **Dismiss review**. +1. Next to the review you'd like to dismiss, select the {% octicon "kebab-horizontal" aria-label="Show options" %} dropdown menu, then click **Dismiss review**. ![Screenshot of the merge box of a pull request. The Show options menu (kebab icon), is expanded, and the "Dismiss review" option is outlined in orange.](/assets/images/help/pull_requests/merge_box/pull-request-dismiss-review.png) diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request.md index 6dd12604a887..cdab577313f6 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request.md @@ -15,7 +15,7 @@ shortTitle: Filter files category: - Review pull requests --- -You can filter files in a pull request by file extension type, such as `.html` or `.js`, lack of an extension, code ownership, or dotfiles. You can also use the file tree to filter by file path, navigate between files, or see a high level view of the changed files. +You can filter files in a pull request by file extension type, such as `.html` or `.js`, lack of an extension, code ownership, or dotfiles. You can also use the file tree to filter by file path, navigate between files, or see a high-level view of the changed files. ## Using the file filter dropdown @@ -25,7 +25,7 @@ You can filter files in a pull request by file extension type, such as `.html` o {% data reusables.repositories.sidebar-pr %} 1. In the list of pull requests, click the pull request you'd like to filter. {% data reusables.repositories.changed-files %} -1. Use the File filter dropdown menu, and select, deselect, or click the desired filters. +1. Use the **File filter** dropdown menu, then select, deselect, or click the filters you want. ![Screenshot of the view options for a pull request. The file filter option is outlined in dark orange.](/assets/images/help/pull_requests/file-filter-option.png) @@ -39,13 +39,13 @@ You can filter files in a pull request by file extension type, such as `.html` o 1. In the list of pull requests, click the pull request you'd like to filter. {% data reusables.repositories.changed-files %} -1. Click on a file in the file tree to view the corresponding file diff. If the file tree is hidden, click {% octicon "sidebar-collapse" aria-label="The sidebar collapse icon" %} to display the file tree. +1. If the file tree is hidden, click {% octicon "sidebar-collapse" aria-label="The sidebar collapse icon" %} to display it. Then, click a file in the file tree to view the corresponding file diff. > [!NOTE] > The file tree will not display if your screen width is too narrow or if the pull request only includes one file. ![Screenshot of the "Files changed" tab of a pull request. In the left sidebar, the file tree is outlined in dark orange.](/assets/images/help/repository/file-tree.png) -1. To filter by file path, enter part or all of the file path in the **Filter changed files** search box. Alternatively, use the file filter dropdown. For more information, see [Using the file filter dropdown](#using-the-file-filter-dropdown). +1. To filter by file path, enter part or all of the file path in the **Filter changed files** search box. Alternatively, use the **File filter** dropdown menu. For more information, see [Using the file filter dropdown](#using-the-file-filter-dropdown). ## Further reading diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md index de7ca8a610f1..94679c764b09 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md @@ -14,9 +14,9 @@ shortTitle: Methods & functions category: - Review pull requests --- -Anyone with read access to a repository can see a summary list of the functions and methods changes in certain files of a pull request. +Anyone with read access to a repository can see a summary list of the function and method changes in certain files of a pull request. -The summary list of methods and functions is created from these supported file types: +The summary list of methods and functions is created from the following supported file types: * Go * JavaScript (includes TypeScript, Flow, and other types of JavaScript) * PHP @@ -35,7 +35,7 @@ The summary list of methods and functions is created from these supported file t > [!NOTE] > If you don't see the functions or methods you expected, confirm that your code compiles and doesn't contain errors. Only functions and methods changed in this pull request and found in _.go_, _.js_, _.ts_, _.py_, _.php_, and _.rb_ files appear in the drop-down menu. -1. You'll be redirected to the first line of the function or method you selected. +1. You'll go to the first line of the function or method you selected. ## Further reading diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request.md index 95ad17acc2d0..f291befb30ca 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request.md @@ -16,29 +16,31 @@ category: --- ## Applying suggested changes -Other people can suggest specific changes to your pull request. You can apply these suggested changes directly in a pull request if you have write access to the repository. If the pull request was created from a fork and the author allowed edits from maintainers, you can also apply suggested changes if you have write access to the upstream repository. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request) and [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). +Other people can suggest specific changes to your pull request. You can apply these suggested changes directly in a pull request if you have write access to the repository. + +If the pull request was created from a fork and the author allowed edits from maintainers, you can also apply suggested changes if you have write access to the upstream repository. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request) and [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). To quickly incorporate more than one suggested change into a single commit, you can also apply suggested changes as a batch. Applying one suggested change or a batch of suggested changes creates a single commit on the compare branch of the pull request. Each person who suggested a change included in the commit will be a co-author of the commit. The person who applies the suggested changes will be a co-author and the committer of the commit. For more information about the term committer in Git, see [Git Basics - Viewing the Commit History](https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History) from the _Pro Git_ book site. {% data reusables.repositories.sidebar-pr %} -1. In the list of pull requests, click the pull request you'd like to apply a suggested change to. -1. Navigate to the first suggested change you'd like to apply. +1. In the list of pull requests, click the pull request where you want to apply a suggested change. +1. Navigate to the first suggested change you want to apply. * To apply the change in its own commit, click **Commit suggestion**. ![Screenshot of a review comment with a suggestion. The "Commit suggestion" option is outlined in dark orange.](/assets/images/help/pull_requests/commit-suggestion-button.png) * To add the suggestion to a batch of changes, click **Add suggestion to batch**. Continue to add the suggested changes you want to include in a single commit. When you've finished adding suggested changes, click **Commit suggestions**. - ![Screenshot of a review comment with a suggestion. The "Add suggestion to batch" option is outlined in dark orange.](/assets/images/help/pull_requests/add-suggestion-to-batch.png) + ![Screenshot of a review comment with a suggestion. The "Add suggestion to batch" option is outlined in dark orange.](/assets/images/help/pull_requests/add-suggestion-to-batch.png) 1. In the commit message field, type a short, meaningful commit message that describes the change you made to the file or files. -1. Click **Commit changes.** +1. Click **Commit changes**. ## Re-requesting a review -You can re-request a review, for example, after you've made substantial changes to your pull request. +For example, you can re-request a review after you've made substantial changes to your pull request. To request a fresh review from a reviewer, in the sidebar of the **Conversation** tab, click the {% octicon "sync" aria-label="The sync icon" %} icon. ## Opening an issue for an out-of-scope suggestion diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request.md index 942ff0328622..8f846d74f0d1 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request.md @@ -25,11 +25,11 @@ category: {% ifversion ghes %}Before you can use dependency review, you must enable the dependency graph and connect {% data variables.location.product_location %} to {% data variables.product.prodname_dotcom_the_website %}. For more information, see [AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise).{% endif %} -Dependency review allows you to "shift left". You can use the provided predictive information to catch vulnerable dependencies before they hit production. For more information, see [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review). +Dependency review helps you find vulnerable dependencies before they reach production. For more information, see [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review). You can use the {% data variables.dependency-review.action_name %} to help enforce dependency reviews on pull requests in your repository. {% data reusables.dependency-review.dependency-review-action-overview %} -You can configure the {% data variables.dependency-review.action_name %} to better suit your needs by specifying the type of dependency vulnerability you wish to catch. For more information, see [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/configuring-the-dependency-review-action). +You can configure the {% data variables.dependency-review.action_name %} to better suit your needs by specifying the type of dependency vulnerability you want to catch. For more information, see [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/configuring-the-dependency-review-action). ## Reviewing dependencies in a pull request @@ -37,15 +37,15 @@ You can configure the {% data variables.dependency-review.action_name %} to bett {% data reusables.repositories.choose-pr-review %} {% data reusables.repositories.changed-files %} -1. If the pull request contains many files, use the **File filter** drop-down menu to collapse all files that don't record dependencies. This will make it easier to focus your review on the dependency changes. +1. If the pull request contains many files, use the **File filter** drop-down menu to collapse all files that don't record dependencies. This makes it easier to focus your review on the dependency changes. ![Screenshot of the "Changed files" tab. A dropdown labeled "File filter" is expanded, displaying a list of file types with checkboxes.](/assets/images/help/pull_requests/file-filter-menu-json.png) - The dependency review provides a clearer view of what has changed in large lock files, where the source diff is not rendered by default. + The dependency review provides a clearer view of what has changed in large lock files, where the source diff is not shown by default. > [!NOTE] > Dependency review rich diffs are not available for committed static JavaScript files like `jquery.js`. -1. On the right of the header for a manifest or lock file, display the dependency review by clicking **{% octicon "file" aria-label="Display the rich diff" %}**. +1. To display the dependency review, click **{% octicon "file" aria-label="Display the rich diff" %}** on the right of the header for a manifest or lock file. ![Screenshot of the "Files changed" tab of a pull request. The button to display the rich diff, labeled with a file icon, is outlined in dark orange.](/assets/images/help/pull_requests/dependency-review-rich-diff.png) @@ -62,8 +62,8 @@ You can configure the {% data variables.dependency-review.action_name %} to bett * The version, or version range, of the new, updated, or deleted dependency. * For a specific version of a dependency: * The age of that release of the dependency. - * The number of projects that are dependent on this software. This information is taken from the dependency graph. Checking the number of dependents can help you avoid accidentally adding the wrong dependency. - * The license used by this dependency, if this information is available. This is useful if you want to avoid code with certain licenses being used in your project. + * The number of projects that depend on this software. This information is taken from the dependency graph. Checking the number of dependents can help you avoid accidentally adding the wrong dependency. + * The license used by this dependency, if this information is available. This is useful if you want to avoid using code with certain licenses in your project. Where a dependency has a known vulnerability, the warning message includes: diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request.md index c20369ed8e64..15c23ffc8c4e 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request.md @@ -26,7 +26,7 @@ It's best to review changes in a pull request one file at a time: {% ifversion copilot %} -If the pull request was raised by {% data variables.product.prodname_copilot %} then, when you submit your comments, {% data variables.product.prodname_copilot_short %} will carry out more work to respond to your comments and will push a new commit to the pull request with further changes. See [AUTOTITLE](/copilot/concepts/agents/cloud-agent/about-cloud-agent). +If the pull request was raised by {% data variables.product.prodname_copilot %}, then {% data variables.product.prodname_copilot_short %} will respond to your comments when you submit them. {% data variables.product.prodname_copilot_short %} will push a new commit to the pull request with further changes. See [AUTOTITLE](/copilot/concepts/agents/cloud-agent/about-cloud-agent). {% endif %} @@ -34,15 +34,15 @@ If the pull request was raised by {% data variables.product.prodname_copilot %} ## Understanding the purpose of the pull request -Gaining a clear understanding of the motivation behind a pull request helps inform your review, so you can keep it targeted and meaningful, and provide feedback that is aligned with the pull request author’s intent and the project's goals. +Understanding the motivation behind a pull request helps you keep your review targeted and meaningful. It also helps you provide feedback that aligns with the pull request author’s intent and the project's goals. -There are several options available to you to better understand the context and rationale for proposed changes. +You have several options to better understand the context and rationale for proposed changes. ### Using the pull request sidebar for context -In the pull request sidebar, you can find valuable context including: +In the pull request sidebar, you can find valuable context, including: -* Linked **issues** or **discussions**: Review these to understand the problems or goals that the pull request aims to address, or to gather information on, for example, any background, design decisions, or current debates. +* Linked **issues** or **discussions**: Review these to understand the problems or goals that the pull request aims to address. You can also gather information about background, design decisions, or current debates. * Linked **projects** or **milestones**: Review how this pull request fits within larger projects or upcoming releases. Use this information to frame your review and check if the goals of the pull request align with the original intent. @@ -51,7 +51,7 @@ Use this information to frame your review and check if the goals of the pull req ### Using {% data variables.copilot.copilot_chat_short %} to understand the rationale -You can ask {% data variables.copilot.copilot_chat_short %} for help understanding the pull request’s intent or for clarification on any part of the change. +You can ask {% data variables.copilot.copilot_chat_short %} for help understanding the pull request’s intent or clarifying any part of the change. 1. At the top right of the pull request page, click the **{% octicon "copilot" aria-label="Copilot icon" %}** button next to the search bar. @@ -64,7 +64,7 @@ You can ask {% data variables.copilot.copilot_chat_short %} for help understandi * `Summarize the goals of this PR based on the linked issue.` * `How does this PR relate to issue ISSUE-URL?` -{% data variables.copilot.copilot_chat_short %} can help you clarify the bigger picture before diving into line-level review. +{% data variables.copilot.copilot_chat_short %} can help you clarify the bigger picture before you start line-level review. {% endif %} @@ -73,11 +73,11 @@ You can ask {% data variables.copilot.copilot_chat_short %} for help understandi {% data reusables.repositories.sidebar-pr %} {% data reusables.repositories.choose-pr-review %} {% data reusables.repositories.changed-files %} -You can change the format of the diff view in this tab by clicking {% octicon "gear" aria-label="The Settings gear" %} and choosing the unified or split view. The choice you make will apply when you view the diff for other pull requests. +To change the format of the diff view in this tab, click {% octicon "gear" aria-label="The Settings gear" %} and choose the unified or split view. The choice you make will apply when you view the diff for other pull requests. ![Screenshot of the "Files changed" tab for a pull request. The "Diff view" menu is outlined in dark orange.](/assets/images/help/pull_requests/diff-settings-menu.png) - You can also choose to hide whitespace differences. The choice you make only applies to this pull request and will be remembered the next time you visit this page. + You can also hide whitespace differences. The choice you make only applies to this pull request and will be remembered the next time you visit this page. 1. Optionally, filter the files to show only the files you want to review or use the file tree to navigate to a specific file. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request). {%- ifversion ghec %} 1. Optionally, if you have access to {% data variables.copilot.copilot_enterprise %}, you can ask {% data variables.product.prodname_copilot_short %} about the changes in a file in a pull request by clicking {% octicon "kebab-horizontal" aria-label="Show options" %} at the top right of the file, clicking **Ask {% data variables.product.prodname_copilot_short %} about this diff**, then typing a request such as "Explain these changes." For more information, see [AUTOTITLE](/enterprise-cloud@latest/copilot/github-copilot-chat/copilot-chat-in-github/using-github-copilot-chat-in-githubcom#asking-questions-about-a-specific-pull-request). @@ -133,7 +133,7 @@ For more information on reviewing pull requests in {% data variables.product.pro > [!NOTE] {% data reusables.copilot.copilot-requires-subscription %} -{% data variables.product.prodname_copilot %} can help you quickly understand the changes in a pull request by providing context and explanations for specific commits. If you’re unsure about the purpose of a particular change or need more details about how it fits into the broader codebase, you can ask {% data variables.product.prodname_copilot_short %} questions about individual commits. +{% data variables.product.prodname_copilot %} can help you quickly understand changes in a pull request by providing context and explanations for specific commits. If you’re unsure about the purpose of a particular change or need more details about how it fits into the broader codebase, you can ask {% data variables.product.prodname_copilot_short %} questions about individual commits. 1. Navigate to a commit on {% data variables.product.github %}. @@ -154,7 +154,7 @@ For more information on reviewing pull requests in {% data variables.product.pro ## Reviewing dependency changes -If the pull request contains changes to dependencies you can use the dependency review for a manifest or lock file to see what has changed and check whether the changes introduce security vulnerabilities. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request). +If the pull request contains changes to dependencies, you can use the dependency review for a manifest or lock file to see what has changed. You can also check whether the changes introduce security vulnerabilities. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request). {% data reusables.repositories.changed-files %} @@ -166,7 +166,7 @@ If the pull request contains changes to dependencies you can use the dependency ## Marking a file as viewed -After you finish reviewing a file, you can mark the file as viewed, and the file will collapse. If the file changes after you view the file, it will be unmarked as viewed. +After you finish reviewing a file, you can mark the file as viewed. The file will collapse. If the file changes after you view the file, it will be unmarked as viewed. {% data reusables.repositories.changed-files %} 1. On the right of the header of the file you've finished reviewing, select **Viewed**. diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/viewing-a-pull-request-review.md b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/viewing-a-pull-request-review.md index 45c51d259868..7380dd83c99b 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/viewing-a-pull-request-review.md +++ b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/viewing-a-pull-request-review.md @@ -16,11 +16,11 @@ category: --- {% data reusables.search.requested_reviews_search %} -When you view a full review, you'll see the same version of the pull request as the reviewer did at the time of the review. +When you view a full review, you see the same version of the pull request as the reviewer did at the time of the review. {% data reusables.repositories.sidebar-pr %} {% data reusables.repositories.choose-pr-review %} -1. On the "Conversation" tab, scroll to the review you'd like to see, then click **View changes**. +1. On the "Conversation" tab, scroll to the review you want to see, then click **View changes**. ![Screenshot of a review. The "View changes" link is outlined in dark orange.](/assets/images/help/pull_requests/view-full-review-view-changes.png) diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md index 24faad799ea5..c86f232f406f 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md +++ b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md @@ -16,7 +16,7 @@ category: ## About forks -Forks are like independent copies of repositories. Unlike branches, forks give you more freedom to experiment without affecting the original project. Unlike cloned or duplicated repositories, changes from forks can be merged back into the upstream repository via pull requests, similar to a branch. +Forks are like independent copies of repositories. Unlike branches, forks give you more freedom to experiment without affecting the original project. Unlike cloned or duplicated repositories, changes from forks can be merged back into the upstream repository with pull requests, similar to a branch. When you view a forked repository on {% data variables.product.github %}, the upstream repository is indicated below the name of the fork. @@ -34,7 +34,7 @@ Each fork is a complete repository with its own: ## When to use a fork -There are times when a fork may be a better fit for your task than a branch would be. A fork might be better: +A fork may fit your task better than a branch. A fork might be better: * To experiment safely without affecting the original project * To create separate space for discussions unrelated to a project's main goals @@ -46,6 +46,6 @@ There are times when a fork may be a better fit for your task than a branch woul ## Next steps -For instructions for forking a repository, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo). +For instructions on forking a repository, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo). For more information about when you can create forks, and the permission and visibility settings of forks, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks). diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks.md b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks.md index 91aa91676505..f0f33c1d745b 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks.md +++ b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks.md @@ -28,11 +28,11 @@ category: {% ifversion fpt or ghec %} -If you're a member of an {% data variables.enterprise.prodname_emu_enterprise %}, there are further restrictions on the repositories you can fork. {% ifversion ghec %}{% data reusables.enterprise-accounts.emu-forks %}{% endif %} For more information, see [AUTOTITLE](/enterprise-cloud@latest/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users){% ifversion fpt %} in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}.{% endif %} +If you're a member of an {% data variables.enterprise.prodname_emu_enterprise %}, additional restrictions apply to the repositories you can fork. {% ifversion ghec %}{% data reusables.enterprise-accounts.emu-forks %}{% endif %} For more information, see [AUTOTITLE](/enterprise-cloud@latest/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users){% ifversion fpt %} in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}.{% endif %} {% endif %} -Organizations can allow or prevent the forking of any private repositories owned by the organization{% ifversion ghec or ghes %}, and enterprises can enforce policies to specify where members can create forks of private or internal repositories. Policies control the options available to the enterprise's organizations{% endif %}. For more information, see [AUTOTITLE](/organizations/managing-organization-settings/managing-the-forking-policy-for-your-organization){% ifversion fpt %}.{% else %} and [AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-forking-private-or-internal-repositories).{% endif %} +Organizations can allow or prevent the forking of any private repositories owned by the organization{% ifversion ghec or ghes %}. Enterprises can also enforce policies to specify where members can create forks of private or internal repositories. Policies control the options available to the enterprise's organizations{% endif %}. For more information, see [AUTOTITLE](/organizations/managing-organization-settings/managing-the-forking-policy-for-your-organization){% ifversion fpt %}.{% else %} and [AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-forking-private-or-internal-repositories).{% endif %} ## About visibility of forks @@ -40,9 +40,9 @@ A fork is a new repository that shares code and visibility settings with the ups All repositories belong to a repository network. A repository network contains the upstream repository, the upstream repository's direct forks, and all forks of those forks. All forks in the repository network have the same visibility setting. For more information, see [AUTOTITLE](/repositories/viewing-activity-and-data-for-your-repository/understanding-connections-between-repositories). -If you delete a repository or change the repository's visibility settings, you will affect the repository's forks. For more information, see [What happens to forks when a repository is deleted or changes visibility](#what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility). +Deleting a repository or changing its visibility settings affects the repository's forks. For more information, see [What happens to forks when a repository is deleted or changes visibility](#what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility). -If you delete a fork, any code contributions of that fork will still be accessible to the repository network. +If you delete a fork, any code contributions from that fork remain accessible to the repository network. ## What happens to forks when a repository is deleted or changes visibility @@ -54,16 +54,16 @@ When you delete a private repository, all of its private forks are also deleted. ### Deleting a public repository -When you delete a public repository, the oldest, active public fork is chosen to be the new upstream repository. All other repositories are forked off of this new upstream and subsequent pull requests go to this new upstream repository. +When you delete a public repository, the oldest active public fork is chosen to be the new upstream repository. All other repositories are forked from this new upstream, and subsequent pull requests go to this new upstream repository. ### Changing a public repository to a private repository -If a public repository is made private, its public forks are split off into a new network. As with deleting a public repository, one of the existing public forks is chosen to be the new upstream repository and all other repositories are forked off of this new upstream. Subsequent pull requests go to this new upstream repository. +If a public repository is made private, its public forks are split off into a new network. As with deleting a public repository, one of the existing public forks is chosen to be the new upstream repository. All other repositories are forked from this new upstream, and subsequent pull requests go to this new upstream repository. In other words, a public repository's forks will remain public in their own separate repository network even after the upstream repository is made private. This allows the fork owners to continue to work and collaborate without interruption. If public forks were not moved into a separate network in this way, the owners of those forks would need to get the appropriate [access permissions](/get-started/learning-about-github/access-permissions-on-github) to pull changes from and submit pull requests to the (now private) upstream repository—even though they didn't need those permissions before. > [!WARNING] -> * Making a public repository private will permanently remove stars and watchers associated to users that will no longer have access to this repository. If you decide to make the repository public in the future, it will not be possible to restore these stars and watchers, and this will affect its repository rankings. +> * Making a public repository private will permanently remove stars and watchers associated with users who will no longer have access to this repository. If you decide to make the repository public in the future, you cannot restore these stars and watchers, and this will affect its repository rankings. > * Dependency graph and {% data variables.product.prodname_dependabot_alerts %} will remain enabled with permission to perform read-only analysis on this repository. Any custom {% data variables.product.prodname_dependabot %} alert rules will be disabled unless {% data variables.product.prodname_code_security %} is enabled for this repository. > * {% data variables.product.prodname_code_scanning_caps %} will become unavailable unless {% data variables.product.prodname_code_security %} is enabled for this repository. > * Current forks will remain public and will be detached from this repository. @@ -78,7 +78,9 @@ If a public repository is made private and then deleted, its public forks will c ### Changing a private repository to a public repository -When a private repository is made public, all the commits in that repository, including any commits previously pushed to private forks of that repository, will be migrated to a new public repository network and become visible to everyone. Any previously created private forks will remain private but will become disconnected from the original repository that was made public. Each private fork will become a separate private repository and create its own independent network of repositories. Any new changes made to these networks will not be accessible from the original repository that was made public. +When a private repository is made public, all the commits in that repository become visible to everyone. This includes any commits previously pushed to private forks of that repository. + +Any previously created private forks will remain private but will become disconnected from the original repository that was made public. Each private fork will become a separate private repository and create its own independent network of repositories. Any new changes made to these networks will not be accessible from the original repository that was made public. #### Deleting the public repository @@ -107,6 +109,7 @@ When you fork a public repository to your personal account, you can allow reposi This speeds up collaboration by letting maintainers: * Make direct commits to your branch * Run tests locally before merging + You cannot give push permissions to a fork owned by an organization. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). @@ -141,7 +144,7 @@ Forks within the same organization copy the collaborators and team settings of t ### About forks within an enterprise -Internal repositories only support a single level of forking, it is not possible to fork a private fork of an internal repository. This is intentional to simplify access and management for internal repositories which have enterprise-wide access. This differs from the behavior of public and private repositories, that allow nested forking. +Internal repositories only support a single level of forking. You cannot fork a private fork of an internal repository. This is intentional to simplify access and management for internal repositories, which have enterprise-wide access. This differs from the behavior of public and private repositories, which allow nested forking. {% endif %} diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md index 9cb5dfb470bf..d1d47f3b617f 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md +++ b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md @@ -15,11 +15,9 @@ shortTitle: Allow changes to a branch category: - Work with forks --- -When a user creates a pull request from their fork, the user generally has the authority to decide if other users can commit to the pull request's compare branch. If the pull request author wants greater collaboration, they can grant maintainers of the upstream repository (that is, anyone with push access to the upstream repository) permission to commit to the pull request's compare branch. To learn more about upstream repositories, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks). +When someone creates a pull request from their fork, they usually decide whether other people can commit to the pull request's compare branch. For greater collaboration, the author can give maintainers of the upstream repository—that is, anyone with push access to the upstream repository—permission to commit to the compare branch. To learn more about upstream repositories, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks). -Pull request authors can give these permissions when they initially create a pull request from a fork in a personal account or after they create the pull request. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork). - -You can set commit permissions when you first create a pull request from a fork. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork). Additionally, you can modify an existing pull request to let repository maintainers make commits to your branch. +Pull request authors can set these permissions when they create a pull request from a fork in a personal account. They can also update an existing pull request to let repository maintainers commit to the branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork). ## Enabling repository maintainer permissions on existing pull requests diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/configuring-a-remote-repository-for-a-fork.md b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/configuring-a-remote-repository-for-a-fork.md index 37eb7b5395ba..8aa85c3f1785 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/configuring-a-remote-repository-for-a-fork.md +++ b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/configuring-a-remote-repository-for-a-fork.md @@ -16,7 +16,7 @@ category: - Work with forks --- {% data reusables.command_line.open_the_multi_os_terminal %} -1. List the current configured remote repository for your fork. +1. List the remotes currently configured for your fork. ```shell $ git remote -v @@ -24,13 +24,13 @@ category: > origin https://{% data variables.product.product_url %}/YOUR-USERNAME/YOUR-FORK.git (push) ``` -1. Specify a new remote _upstream_ repository that will be synced with the fork. +1. Add a new remote named _upstream_ that points to the original repository. ```shell git remote add upstream https://{% data variables.product.product_url %}/ORIGINAL-OWNER/ORIGINAL-REPOSITORY.git ``` -1. Verify the new upstream repository you've specified for your fork. +1. Verify the new upstream repository that you specified for your fork. ```shell $ git remote -v diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/detaching-a-fork.md b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/detaching-a-fork.md index 61f78a48f3c6..7d425fd50f81 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/detaching-a-fork.md +++ b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/detaching-a-fork.md @@ -12,7 +12,7 @@ category: ## Converting a fork into a standalone repository -To turn your fork into a standalone repository, you can leave the fork network ensuring the new repository will no longer automatically sync with changes from the original repository. This is useful when you want to take the work you are doing in a different direction or maintain distinct versions. +To turn your fork into a standalone repository, you can leave the fork network. The new repository will no longer automatically sync with changes from the original repository. This is useful when you want to take your work in a different direction or maintain distinct versions. > [!WARNING] > * The new repository will not retain any of its issues, pull requests, wikis, stars, watchers, comments, child forks, or other metadata that may currently be associated with your current fork. @@ -40,11 +40,11 @@ You can only detach forks with the leave network option when: 1. To verify that you're detaching the correct repository, in the text box, type the name of the fork. 1. Click **Leave fork network**. -While the fork is being detached, some operations will be briefly unavailable until the fork has been transitioned to a standalone repository. +While the fork is being detached, some operations will be briefly unavailable. They will become available again after the fork becomes a standalone repository. ## Manually leaving the fork network -To turn your fork into a standalone repository, you can clone the fork, use the clone to create a new repository, and then delete the fork removing the connection to the original network. +To turn your fork into a standalone repository, you can clone the fork and use the clone to create a new repository. Then, delete the fork to remove the connection to the original network. {% data reusables.command_line.open_the_multi_os_terminal %} 1. Create a bare clone of the fork. @@ -65,7 +65,7 @@ To turn your fork into a standalone repository, you can clone the fork, use the git --git-dir FORK.git push --mirror https://{% data variables.product.product_url %}/EXAMPLE-USER/FORK.git ``` -1. Remove temporary local clone you created earlier. +1. Remove the temporary local clone you created earlier. ```shell rm -rf FORK.git diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo.md b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo.md index dba0d2dfd5c7..b6cbd527c92a 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo.md +++ b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo.md @@ -23,20 +23,20 @@ Forking a repository lets you propose changes to a project without affecting the ## Prerequisites -If you haven't yet, first set up Git and authentication with {% data variables.location.product_location %} from Git. For more information, see [AUTOTITLE](/get-started/git-basics/set-up-git). +If you haven't already, set up Git and authentication with {% data variables.location.product_location %} from Git. For more information, see [AUTOTITLE](/get-started/git-basics/set-up-git). ## Forking a repository {% webui %} -You might fork a project to propose changes to the upstream repository. In this case, it's good practice to regularly sync your fork with the upstream repository. To do this, you'll need to use Git on the command line. You can practice setting the upstream repository using the same [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository you just forked. +You might fork a project to propose changes to the upstream repository. In this case, it's good practice to sync your fork with the upstream repository regularly. To do this, you'll need to use Git on the command line. You can practice setting the upstream repository using the same [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository you just forked. 1. On {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %}{% else %}{% data variables.location.product_location %}{% endif %}, navigate to the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. 1. In the top-right corner of the page, click **Fork**. ![Screenshot of the main page of repository. A button, labeled with a fork icon and "Fork 59.3k," is outlined in dark orange.](/assets/images/help/repository/fork-button.png) 1. Under "Owner," select the dropdown menu and click an owner for the forked repository. -1. By default, forks are named the same as their upstream repositories. Optionally, to further distinguish your fork, in the "Repository name" field, type a name. +1. By default, forks are named the same as their upstream repositories. Optionally, in the "Repository name" field, type a different name to distinguish your fork. 1. Optionally, in the "Description" field, type a description of your fork. 1. Optionally, select **Copy the DEFAULT branch only**. @@ -78,19 +78,19 @@ You can fork a repository on {% data variables.product.prodname_dotcom_the_websi ## Cloning your forked repository -Right now, you have a fork of the Spoon-Knife repository, but you do not have the files in that repository locally on your computer. +You now have a fork of the Spoon-Knife repository, but you do not have the files from that repository on your computer. 1. On {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %}{% else %}{% data variables.location.product_location %}{% endif %}, navigate to **your fork** of the Spoon-Knife repository. {% data reusables.repositories.copy-clone-url %} {% data reusables.command_line.open_the_multi_os_terminal %} {% data reusables.command_line.change-current-directory-clone %} -1. Type `git clone`, and then paste the URL you copied earlier. It will look like this, with your {% data variables.product.github %} username instead of `YOUR-USERNAME`: +1. Type `git clone`, then paste the URL you copied earlier. It will look like this, with your {% data variables.product.github %} username instead of `YOUR-USERNAME`: ```shell git clone https://{% data variables.product.product_url %}/YOUR-USERNAME/Spoon-Knife ``` -1. Press **Enter**. Your local clone will be created. +1. Press **Enter**. Git creates your local clone. ```shell $ git clone https://{% data variables.product.product_url %}/YOUR-USERNAME/Spoon-Knife @@ -107,7 +107,7 @@ Right now, you have a fork of the Spoon-Knife repository, but you do not have th ## Cloning your forked repository -Right now, you have a fork of the Spoon-Knife repository, but you do not have the files in that repository locally on your computer. +You now have a fork of the Spoon-Knife repository, but you do not have the files from that repository on your computer. {% data reusables.cli.cli-learn-more %} @@ -121,19 +121,19 @@ gh repo fork REPOSITORY --clone=true ## Configuring Git to sync your fork with the upstream repository -When you fork a project in order to propose changes to the upstream repository, you can configure Git to pull changes from the upstream repository into the local clone of your fork. +When you fork a project to propose changes to the upstream repository, you can configure Git to pull changes from the upstream repository into the local clone of your fork. {% webui %} 1. On {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %}{% else %}{% data variables.location.product_location %}{% endif %}, navigate to the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. {% data reusables.repositories.copy-clone-url %} {% data reusables.command_line.open_the_multi_os_terminal %} -1. Change directories to the location of the fork you cloned. +1. Change to the directory for the fork you cloned. * To go to your home directory, type just `cd` with no other text. * To list the files and folders in your current directory, type `ls`. * To go into one of your listed directories, type `cd YOUR-LISTED-DIRECTORY`. * To go up one directory, type `cd ..`. -1. Type `git remote -v` and press **Enter**. You will see the current configured remote repository for your fork. +1. Type `git remote -v` and press **Enter**. You will see the remote repository currently configured for your fork. ```shell $ git remote -v @@ -141,13 +141,13 @@ When you fork a project in order to propose changes to the upstream repository, > origin https://{% data variables.product.product_url %}/YOUR-USERNAME/YOUR-FORK.git (push) ``` -1. Type `git remote add upstream`, and then paste the URL you copied in Step 3 and press **Enter**. It will look like this: +1. Type `git remote add upstream`, then paste the URL you copied in Step 3 and press **Enter**. It will look like this: ```shell git remote add upstream https://{% data variables.product.product_url %}/ORIGINAL-OWNER/Spoon-Knife.git ``` -1. To verify the new upstream repository you have specified for your fork, type `git remote -v` again. You should see the URL for your fork as `origin`, and the URL for the upstream repository as `upstream`. +1. To verify the new upstream repository you specified for your fork, type `git remote -v` again. You should see the URL for your fork as `origin` and the URL for the upstream repository as `upstream`. ```shell $ git remote -v @@ -157,7 +157,7 @@ When you fork a project in order to propose changes to the upstream repository, > upstream https://{% data variables.product.product_url %}/ORIGINAL-OWNER/ORIGINAL-REPOSITORY.git (push) ``` -Now, you can keep your fork synced with the upstream repository with a few Git commands. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork). +You can now keep your fork synced with the upstream repository with a few Git commands. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork). {% endwebui %} @@ -184,7 +184,7 @@ gh repo fork REPOSITORY --remote-name "main-remote-repo" You can make any changes to a fork, including: * **Creating branches:** [_Branches_](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository) allow you to build new features or test out ideas without putting your main project at risk. -* **Opening pull requests:** If you want to contribute back to the upstream repository, you can send a request to the original author to pull your fork into their repository by submitting a pull request. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork). +* **Opening pull requests:** If you want to contribute back to the upstream repository, you can submit a pull request to ask the original author to pull your fork into their repository. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork). ## Find another repository to fork @@ -200,7 +200,7 @@ You have now forked a repository, practiced cloning your fork, and configured an * For more information about cloning the fork and syncing the changes in a forked repository from your computer, see [AUTOTITLE](/get-started/git-basics/set-up-git). -* You can also create a new repository where you can put all your projects and share the code on {% data variables.product.prodname_dotcom %}. {% data reusables.getting-started.create-a-repository %} +* You can also create a new repository to store your projects and share the code on {% data variables.product.prodname_dotcom %}. {% data reusables.getting-started.create-a-repository %} * {% data reusables.getting-started.being-social %} diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork.md b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork.md index ae7bc77e8afc..2c520cfbbb30 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork.md +++ b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork.md @@ -40,7 +40,7 @@ To update the remote fork from its parent, use the `gh repo sync -b BRANCH-NAME` gh repo sync owner/cli-fork -b BRANCH-NAME ``` -If the changes from the upstream repository cause conflict then the {% data variables.product.prodname_cli %} can't sync. You can set the `--force` flag to overwrite the destination branch. +If the changes from the upstream repository cause conflicts, the {% data variables.product.prodname_cli %} can't sync. To overwrite the destination branch, use the `--force` flag. ## Syncing a fork branch from the command line @@ -60,14 +60,14 @@ Before you can sync your fork with an upstream repository, you must configure a > * [new branch] main -> upstream/main ``` -1. Check out your fork's local default branch - in this case, we use `main`. +1. Check out your fork's local default branch. In this example, we use `main`. ```shell $ git checkout main > Switched to branch 'main' ``` -1. Merge the changes from the upstream default branch - in this case, `upstream/main` - into your local default branch. This brings your fork's default branch into sync with the upstream repository, without losing your local changes. +1. Merge the changes from the upstream default branch into your local default branch. In this example, the upstream default branch is `upstream/main`. This syncs your fork's default branch with the upstream repository without losing your local changes. ```shell $ git merge upstream/main diff --git a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits.md b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits.md index 59e89b072609..c98519ed3c4f 100644 --- a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits.md +++ b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits.md @@ -18,14 +18,14 @@ category: {% data reusables.commits.about-commits %} -If the repository you are committing to has compulsory commit signoffs enabled, and you are committing via the web interface, you will automatically sign off on the commit as part of the commit process. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-the-commit-signoff-policy-for-your-repository). +If the repository you are committing to requires commit signoffs, and you are committing in the web interface, you will automatically sign off on the commit. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-the-commit-signoff-policy-for-your-repository). You can add a co-author on any commits you collaborate on. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors). {% ifversion fpt or ghec %} You can also create a commit on behalf of an organization. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors#creating-a-commit-on-behalf-of-an-organization).{% endif %} -Rebasing allows you to change a series of commits and can modify the order of the commits in your timeline. For more information, see [AUTOTITLE](/get-started/using-git/about-git-rebase). +Rebasing lets you change a series of commits and can change the order of the commits in your timeline. For more information, see [AUTOTITLE](/get-started/using-git/about-git-rebase). ## About commit branches and tag labels @@ -51,7 +51,7 @@ You can use the file tree to navigate between files in a commit. {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.navigate-to-commit-page %} {% data reusables.repositories.navigate-to-commit %} -1. Click on a file in the file tree to view the corresponding file diff. If the file tree is hidden, click {% octicon "sidebar-collapse" aria-label="The sidebar collapse icon" %} to display the file tree. +1. Click a file in the file tree to view the corresponding file diff. If the file tree is hidden, click {% octicon "sidebar-collapse" aria-label="The sidebar collapse icon" %} to display the file tree. > [!NOTE] > The file tree will not display if your screen width is too narrow or if the commit only includes one file. diff --git a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message.md b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message.md index 90bbddc87512..6b73a35232ee 100644 --- a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message.md +++ b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message.md @@ -15,13 +15,13 @@ category: --- ## Rewriting the most recent commit message -You can change the most recent commit message using the `git commit --amend` command. +You can change the most recent commit message with the `git commit --amend` command. -In Git, the text of the commit message is part of the commit. Changing the commit message will change the commit ID—i.e., the SHA1 checksum that names the commit. Effectively, you are creating a new commit that replaces the old one. +In Git, the text of the commit message is part of the commit. Changing the commit message changes the commit ID—the SHA1 checksum that names the commit. You create a new commit that replaces the old one. ## Commit has not been pushed online -If the commit only exists in your local repository and has not been pushed to {% data variables.location.product_location %}, you can amend the commit message with the `git commit --amend` command. +If the commit only exists in your local repository and has not been pushed to {% data variables.location.product_location %}, you can amend the commit message with `git commit --amend`. 1. On the command line, navigate to the repository that contains the commit you want to amend. 1. Type `git commit --amend` and press **Enter**. @@ -31,14 +31,14 @@ If the commit only exists in your local repository and has not been pushed to {% * You can create commits on behalf of your organization by adding a trailer to the commit. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors#creating-a-commit-on-behalf-of-an-organization). {% endif %} -The new commit and message will appear on {% data variables.location.product_location %} the next time you push. +The new commit and message will appear on {% data variables.location.product_location %} after you push. > [!TIP] > You can change the default text editor for Git by changing the `core.editor` setting. For more information, see [Basic Client Configuration](https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration#_basic_client_configuration) in the Git manual. ## Amending older or multiple commit messages -If you have already pushed the commit to {% data variables.location.product_location %}, you will have to force push a commit with an amended message. +If you have already pushed the commit to {% data variables.location.product_location %}, you must force push a commit with an amended message. > [!WARNING] > We strongly discourage force pushing, since this changes the history of your repository. If you force push, people who have already cloned your repository will have to manually fix their local history. For more information, see [Recovering from upstream rebase](https://git-scm.com/docs/git-rebase#_recovering_from_upstream_rebase) in the Git manual. @@ -99,14 +99,14 @@ If you need to amend the message for multiple commits or an older commit, you ca ``` 1. Save and close the commit list file. -1. In each resulting commit file, type the new commit message, save the file, and close it. -1. When you're ready to push your changes to GitHub, use the push --force command to force push over the old commit. +1. In each resulting commit file, type the new commit message. Save and close the file. +1. When you're ready to push your changes to GitHub, use `push --force` to force push over the old commit. ```shell git push --force origin EXAMPLE-BRANCH ``` -For more information on interactive rebase, see [Interactive mode](https://git-scm.com/docs/git-rebase#_interactive_mode) in the Git manual. +For more information about interactive rebase, see [Interactive mode](https://git-scm.com/docs/git-rebase#_interactive_mode) in the Git manual. > [!NOTE] > As before, amending the commit message will result in a new commit with a new ID. However, in this case, every commit that follows the amended commit will also get a new ID because each commit also contains the ID of its parent. diff --git a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md index bca3f1dcbe70..d92bdc49511c 100644 --- a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md +++ b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md @@ -25,11 +25,11 @@ You can attribute a commit to more than one author by adding one or more `Co-aut ### Required co-author information -Before you can add a co-author to a commit, you must know the appropriate email to use for each co-author. For the co-author's commit to count as a contribution, you must use the email associated with their account on {% data variables.location.product_location %}. +Before you add a co-author to a commit, you must know the right email address to use for each co-author. For the co-author's commit to count as a contribution, use the email address associated with their account on {% data variables.location.product_location %}. {% ifversion fpt or ghec %} -If a person chooses to keep their email address private, you should use their {% data variables.product.github %}-provided `no-reply` email to protect their privacy. Otherwise, the co-author's email will be available to the public in the commit message. If you want to keep your email private, you can choose to use a {% data variables.product.github %}-provided `no-reply` email for Git operations and ask other co-authors to list your `no-reply` email in commit trailers. +If a person chooses to keep their email address private, you should use their {% data variables.product.github %}-provided `no-reply` email to protect their privacy. Otherwise, the co-author's email will be public in the commit message. To keep your email private, you can choose to use a {% data variables.product.github %}-provided `no-reply` email for Git operations and ask other co-authors to list your `no-reply` email in commit trailers. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address). @@ -48,7 +48,7 @@ You can use {% data variables.product.prodname_desktop %} to create a commit wit {% data reusables.pull_requests.collect-co-author-commit-git-config-info %} -1. Type your commit message and a short, meaningful description of your changes. After your commit description, instead of a closing quotation, add an empty line. +1. Type your commit message and a short, meaningful description of your changes. After your commit description, add an empty line instead of a closing quotation mark. ```shell $ git commit -m "Refactor usability tests. @@ -70,11 +70,11 @@ You can use {% data variables.product.prodname_desktop %} to create a commit wit > Co-authored-by: ANOTHER-NAME " ``` -The new commit and message will appear on {% data variables.location.product_location %} the next time you push. For more information, see [AUTOTITLE](/get-started/using-git/pushing-commits-to-a-remote-repository). +The new commit and message will appear on {% data variables.location.product_location %} after you push. For more information, see [AUTOTITLE](/get-started/using-git/pushing-commits-to-a-remote-repository). ### Creating co-authored commits on {% data variables.product.github %} -After you've made changes in a file using the web editor on {% data variables.product.github %}, you can create a co-authored commit by adding a `Co-authored-by:` trailer to the commit's message. +After you make changes in a file using the web editor on {% data variables.product.github %}, you can create a co-authored commit by adding a `Co-authored-by:` trailer to the commit's message. {% data reusables.pull_requests.collect-co-author-commit-git-config-info %} 1. Click **Commit changes...** @@ -127,7 +127,7 @@ The new commit, message, and badge will appear on {% data variables.product.prod ### Creating commits with an `on-behalf-of` badge on {% data variables.product.github %} -After you've made changes in a file using the web editor on {% data variables.product.github %}, you can create a commit on behalf of your organization by adding an `on-behalf-of:` trailer to the commit's message. +After you make changes in a file using the web editor on {% data variables.product.github %}, you can create a commit on behalf of your organization by adding an `on-behalf-of:` trailer to the commit's message. 1. Click **Commit changes...** 1. In the "Commit message" field, type a short, meaningful commit message that describes the changes you made. diff --git a/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits.md b/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits.md index b2a00f11e686..043d146a62de 100644 --- a/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits.md +++ b/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits.md @@ -25,7 +25,7 @@ category: ## Commits are linked to the wrong user -{% data variables.product.github %} uses the email address in the commit header to link the commit to a {% data variables.product.github %} user. If your commits are being linked to another user, or not linked to a user at all, you may need to change your local Git configuration settings, add an email address to your account email settings, or do both. +{% data variables.product.github %} uses the email address in the commit header to link the commit to a {% data variables.product.github %} user. If your commits are linked to another user or not linked to any user, you may need to change your local Git configuration settings, add an email address to your account email settings, or do both. > [!NOTE] > If your commits are linked to another user, that does not mean the user can access your repository. A user can only access a repository you own if you add them as a collaborator or add them to a team that has access to the repository. @@ -41,7 +41,7 @@ Commits you make from this point forward will be linked to your account. ### Commits are not linked to any user -If your commits are not linked to any user, the commit author's name will not be rendered as a link to a user profile. To check the email address used for those commits and connect commits to your account, take the following steps. +If your commits are not linked to any user, the commit author's name will not be rendered as a link to a user profile. To check the email address used for those commits and connect commits to your account, follow these steps. {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.navigate-to-commit-page %} @@ -68,11 +68,11 @@ $ git show 1095ff3d0153115e75b7bca2c09e5136845b5592 > fatal: bad object 1095ff3d0153115e75b7bca2c09e5136845b5592 ``` -However, when you view the commit on {% data variables.location.product_location %}, you'll be able to see it without any problems: +However, when you view the commit on {% data variables.location.product_location %}, you can see it without any problems: `github.com/ACCOUNT/REPOSITORY/commit/1095ff3d0153115e75b7bca2c09e5136845b5592` -There are several possible explanations: +The following explanations are possible: * The local repository is out of date. * The branch that contains the commit was deleted, so the commit is no longer referenced. @@ -86,29 +86,20 @@ Your local repository may not have the commit yet. To get information from your git fetch REMOTE ``` -This safely copies information from the remote repository to your local clone without making any changes to the files you have checked out. -You can use `git fetch upstream` to get information from a repository you've forked, or `git fetch origin` to get information from a repository you've only cloned. +This safely copies information from the remote repository to your local clone without changing the files you have checked out. + +You can use `git fetch upstream` to get information from a repository you've forked. You can use `git fetch origin` to get information from a repository you've only cloned. > [!TIP] > For more information, read about [managing remotes and fetching data](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) in the [Pro Git](https://git-scm.com/book) book. ### The branch that contained the commit was deleted -If a collaborator on the repository has deleted the branch containing the commit -or has force pushed over the branch, the missing commit may have been orphaned -(i.e. it cannot be reached from any reference) and therefore will not be fetched -into your local clone. +If a collaborator on the repository deleted the branch containing the commit or force pushed over the branch, the missing commit may have been orphaned. This means the commit cannot be reached from any reference, so it will not be fetched into your local clone. -Fortunately, if any collaborator has a local clone of the repository with the -missing commit, they can push it back to {% data variables.product.github %}. They need to make sure the commit -is referenced by a local branch and then push it as a new branch to {% data variables.product.github %}. +If any collaborator has a local clone of the repository with the missing commit, they can push it back to {% data variables.product.github %}. They need to make sure a local branch references the commit. Then, they can push it as a new branch to {% data variables.product.github %}. -Let's say that the person still has a local branch (call it `B`) that contains -the commit. This might be tracking the branch that was force pushed or deleted -and they simply haven't updated yet. To preserve the commit, they can push that -local branch to a new branch (call it `recover-B`) on {% data variables.product.github %}. For this example, -let's assume they have a remote named `upstream` via which they have push access -to `github.com/ACCOUNT/REPOSITORY`. +Let's say that the person still has a local branch, called `B`, that contains the commit. This branch might track the branch that was force pushed or deleted, and the person might not have updated it yet. To preserve the commit, they can push that local branch to a new branch, called `recover-B`, on {% data variables.product.github %}. For this example, let's assume they have a remote named `upstream` with push access to `github.com/ACCOUNT/REPOSITORY`. The other person runs: @@ -136,7 +127,7 @@ To keep your repository secure, push protection prevents you from accidentally c ### Understanding why push protection has blocked your commit -Leaked secrets can pose serious security risks to your repository and your supply chain. Push protection prevents you from accidentally introducing secrets to your codebase where they could be exploited by malicious actors. +Leaked secrets can pose serious security risks to your repository and your supply chain. Push protection prevents you from accidentally adding secrets to your codebase, where malicious actors could exploit them. If the repository you're contributing to on {% data variables.product.github %} is secured by push protection, you'll encounter a push protection block whenever you: @@ -146,7 +137,7 @@ If the repository you're contributing to on {% data variables.product.github %} ### Resolving a push protection block -In order to resolve the block, you should remove the secret from the commit (or request). If you believe the secret is safe to push, you may be able to bypass the block. For more information on how to remove the secret or, if necessary, bypass the block, see: +To resolve the block, you should remove the secret from the commit or request. If you believe the secret is safe to push, you may be able to bypass the block. For more information about how to remove the secret or, if necessary, bypass the block, see: * [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-command-line) * [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-in-the-github-ui) diff --git a/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits.md b/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits.md index ff2a81e827b9..df7b07dd91bc 100644 --- a/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits.md +++ b/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits.md @@ -19,26 +19,26 @@ category: --- To compare different versions of your repository, append `/compare` to your repository's path. -We'll demonstrate the power of Compare by looking at the compare page for [a fork of the Linguist repo](https://github.com/octocat/linguist), which is at [https://github.com/octocat/linguist/compare/master...octocat:master](https://github.com/octocat/linguist/compare/master...octocat:master). +The following example uses the compare page for [a fork of the Linguist repository](https://github.com/octocat/linguist), which is at [https://github.com/octocat/linguist/compare/master...octocat:master](https://github.com/octocat/linguist/compare/master...octocat:master). -Every repository's Compare view contains two drop down menus: `base` and `compare`. +Every repository's Compare view contains two dropdown menus: `base` and `compare`. -`base` should be considered the starting point of your comparison, and `compare` is the endpoint. During a comparison, you can always change your `base` and `compare` points by clicking on **Edit**. +`base` is the starting point of your comparison, and `compare` is the endpoint. During a comparison, you can change your `base` and `compare` points by clicking **Edit**. ## Comparing branches The most common use of Compare is to compare branches, such as when you're starting a new pull request. You'll always be taken to the branch comparison view when starting [a new pull request](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request). -To compare branches, you can select a branch name from the `compare` drop down menu at the top of the page. +To compare branches, select a branch name from the `compare` dropdown menu at the top of the page. Here's an example of a [comparison between two branches](https://github.com/octocat/linguist/compare/master...octocat:an-example-comparison-for-docs). ## Comparing tags -Comparing release tags will show you changes to your repository since the last release. +Comparing release tags shows changes to your repository since the last release. For more information, see [AUTOTITLE](/repositories/releasing-projects-on-github/comparing-releases). -To compare tags, you can select a tag name from the `compare` drop-down menu at the top of the page. +To compare tags, select a tag name from the `compare` dropdown menu at the top of the page. Here's an example of a [comparison between two tags](https://github.com/octocat/linguist/compare/v2.2.0...octocat:v2.3.3). @@ -57,11 +57,11 @@ To learn more about other comparison options, see [AUTOTITLE](/pull-requests/col ## Comparing across forks -You can compare your base repository and any forked repository. This is the view that's presented when a user performs a Pull Request to a project. +You can compare your base repository and any forked repository. This view appears when a user opens a pull request to a project. -To compare branches on different repositories, preface the branch names with user names. For example, by specifying `octocat:main` for `base` and `octo-org:main` for `compare`, you can compare the `main` branch of the repositories respectively owned by `octocat` and `octo-org`. +To compare branches on different repositories, preface the branch names with user names. For example, specify `octocat:main` for `base` and `octo-org:main` for `compare` to compare the `main` branches of repositories owned by `octocat` and `octo-org`. -You can also preface the branch name with a user name and a repository name. For example, specifying `octocat:awesome-app:main` would use the `main` branch in the `octocat/awesome-app` repository. This can be useful in large organizations, where you might have an upstream repository and a fork both owned by the organization. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks). +You can also preface the branch name with a user name and a repository name. For example, specifying `octocat:awesome-app:main` uses the `main` branch in the `octocat/awesome-app` repository. This can be useful in large organizations, where an upstream repository and a fork might both be owned by the organization. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks). Here's an example of a [comparison between two repositories](https://github.com/github-linguist/linguist/compare/master...octocat:master). @@ -76,24 +76,18 @@ You can compare a single commit in Git to the commit's predecessors using two ty ## Differences between commit views -You might observe differences in commit history depending on the chosen viewing method. On {% data variables.product.github %}, you can see the commit history of a repository by: +You might observe differences in commit history depending on the chosen viewing method. On {% data variables.product.github %}, you can see the commit history of a repository in these places: -* Navigating to [the commits page](https://github.com/rust-lang/rust/commits/main) of a repository by clicking the clock icon with the number of commits at the top of the main repository view. -* Navigating to [the commit history for a specific file](https://github.com/rust-lang/rust/commits/main/README.md) by clicking on a file, then clicking **History**, to get. +* The repository's [commits page](https://github.com/rust-lang/rust/commits/main), which you can open by clicking the clock icon with the number of commits at the top of the main repository view. +* The [commit history for a specific file](https://github.com/rust-lang/rust/commits/main/README.md), which you can open by clicking a file and then clicking **History**. These two commit views may show _different_ information at times. The history for a single file may omit commits found on the repository's commit history. -Git has several different ways of showing the history of a repository. When Git shows the history of a single file, it simplifies history by omitting -commits that did not change the file. Instead of looking at every commit to -decide whether it touched the file, Git will omit a whole branch if that branch, -when merged, did not impact the final contents of the file. Any commits on the -branch that touched the file will not be shown. +Git has several ways to show the history of a repository. When Git shows the history of a single file, it simplifies history by omitting commits that did not change the file. Instead of looking at every commit to decide whether it touched the file, Git will omit a whole branch if that branch, when merged, did not impact the final contents of the file. Any commits on that branch that touched the file will not be shown. For a file's commit history, {% data variables.product.github %} explicitly follows this simple strategy. It makes the history simpler by removing commits that didn't contribute to the final result. For example, if a side branch made a change and then reverted it, that commit would not show up in the branch history. This makes reviewing branches more efficient, since you only see the commits that affect the file. -This truncated view might not always contain the information you're -after. If you want to see the entire history, {% data variables.product.github %} provides a view with more -information on a repository's commits page. +This truncated view might not always contain the information you need. To see the entire history, use the repository's commits page on {% data variables.product.github %}. For more information on how Git considers commit history, see [the "History Simplification"](https://git-scm.com/docs/git-log#_history_simplification) section of the `git log` help article. From bb865117ec38c5054dbbc99699bdfc2f3c6b7770 Mon Sep 17 00:00:00 2001 From: Jenni C <97056108+dihydroJenoxide@users.noreply.github.com> Date: Tue, 21 Jul 2026 02:49:16 +0000 Subject: [PATCH 05/17] Restructure pull-requests docset into EDI content-type IA (#62016) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- content/index.md | 2 +- .../addressing-merge-conflicts/index.md | 18 ---- .../index.md | 18 ---- .../about-collaborative-development-models.md | 35 -------- .../getting-started/index.md | 17 ---- .../index.md | 21 ----- .../collaborating-with-pull-requests/index.md | 26 ------ ...out-comparing-branches-in-pull-requests.md | 89 ------------------- .../working-with-forks/about-forks.md | 51 ----------- .../creating-and-editing-commits/index.md | 17 ---- .../index.md | 18 ---- .../viewing-and-comparing-commits/index.md | 15 ---- .../about-branches.md | 80 ++++++++++++++++- .../about-commits.md | 2 + .../about-forks.md} | 48 ++++++++-- .../about-merge-conflicts.md | 4 +- .../about-pull-request-merges.md | 4 +- .../about-pull-request-reviews.md | 4 +- .../about-pull-requests.md | 29 +++++- .../about-status-checks.md | 2 + .../helping-others-review-your-changes.md | 4 +- content/pull-requests/concepts/index.md | 28 ++++++ ...anaging-and-standardizing-pull-requests.md | 5 +- .../working-with-pre-receive-hooks.md | 2 + .../changing-a-commit-message.md | 4 +- .../commit-changes}/comparing-commits.md | 4 +- ...creating-a-commit-with-multiple-authors.md | 4 +- .../how-tos/commit-changes/index.md | 28 ++++++ .../troubleshooting-commits.md | 4 +- ...nging-the-base-branch-of-a-pull-request.md | 4 +- .../changing-the-stage-of-a-pull-request.md | 2 + ...pull-request-branch-created-from-a-fork.md | 2 + .../creating-a-pull-request-from-a-fork.md | 4 +- .../creating-a-pull-request.md | 6 +- ...eleting-branches-within-your-repository.md | 4 +- .../create-pull-requests}/index.md | 20 ++--- ...ll-request-in-sync-with-the-base-branch.md | 5 +- .../requesting-a-pull-request-review.md | 4 +- content/pull-requests/how-tos/index.md | 16 ++++ .../automatically-merging-a-pull-request.md | 2 + .../closing-a-pull-request.md | 4 +- .../merge-and-close-pull-requests/index.md | 34 +++++++ ...rging-a-pull-request-with-a-merge-queue.md | 4 +- .../merging-a-pull-request.md | 2 + .../resolving-a-merge-conflict-on-github.md | 4 +- ...a-merge-conflict-using-the-command-line.md | 2 + .../reverting-a-pull-request.md | 2 + .../troubleshooting-required-status-checks.md | 2 + ...ng-a-pull-request-with-required-reviews.md | 4 +- .../checking-out-pull-requests-locally.md | 4 +- .../commenting-on-a-pull-request.md | 4 +- .../dismissing-a-pull-request-review.md | 4 +- .../filtering-files-in-a-pull-request.md | 4 +- ...methods-and-functions-in-a-pull-request.md | 4 +- ...rporating-feedback-in-your-pull-request.md | 4 +- .../review-pull-requests}/index.md | 23 ++--- ...ng-dependency-changes-in-a-pull-request.md | 1 + ...wing-proposed-changes-in-a-pull-request.md | 4 +- .../viewing-a-pull-request-review.md | 2 + ...pull-request-branch-created-from-a-fork.md | 4 +- ...figuring-a-remote-repository-for-a-fork.md | 4 +- .../work-with-forks}/detaching-a-fork.md | 3 + .../work-with-forks}/fork-a-repo.md | 2 + .../work-with-forks}/index.md | 14 +-- .../work-with-forks}/syncing-a-fork.md | 2 + content/pull-requests/index.md | 35 +++++--- content/pull-requests/reference/index.md | 13 +++ ...ery-parameters-to-create-a-pull-request.md | 2 + src/frame/tests/page.ts | 6 +- src/redirects/tests/redirects.ts | 7 +- 70 files changed, 443 insertions(+), 413 deletions(-) delete mode 100644 content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/index.md delete mode 100644 content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/index.md delete mode 100644 content/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models.md delete mode 100644 content/pull-requests/collaborating-with-pull-requests/getting-started/index.md delete mode 100644 content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/index.md delete mode 100644 content/pull-requests/collaborating-with-pull-requests/index.md delete mode 100644 content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests.md delete mode 100644 content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md delete mode 100644 content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/index.md delete mode 100644 content/pull-requests/committing-changes-to-your-project/index.md delete mode 100644 content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/index.md rename content/pull-requests/{collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests => concepts}/about-branches.md (50%) rename content/pull-requests/{committing-changes-to-your-project/creating-and-editing-commits => concepts}/about-commits.md (97%) rename content/pull-requests/{collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks.md => concepts/about-forks.md} (85%) rename content/pull-requests/{collaborating-with-pull-requests/addressing-merge-conflicts => concepts}/about-merge-conflicts.md (93%) rename content/pull-requests/{collaborating-with-pull-requests/incorporating-changes-from-a-pull-request => concepts}/about-pull-request-merges.md (93%) rename content/pull-requests/{collaborating-with-pull-requests/reviewing-changes-in-pull-requests => concepts}/about-pull-request-reviews.md (93%) rename content/pull-requests/{collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests => concepts}/about-pull-requests.md (64%) rename content/pull-requests/{collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features => concepts}/about-status-checks.md (97%) rename content/pull-requests/{collaborating-with-pull-requests/getting-started => concepts}/helping-others-review-your-changes.md (96%) create mode 100644 content/pull-requests/concepts/index.md rename content/pull-requests/{collaborating-with-pull-requests/getting-started => concepts}/managing-and-standardizing-pull-requests.md (94%) rename content/pull-requests/{collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features => concepts}/working-with-pre-receive-hooks.md (92%) rename content/pull-requests/{committing-changes-to-your-project/creating-and-editing-commits => how-tos/commit-changes}/changing-a-commit-message.md (93%) rename content/pull-requests/{committing-changes-to-your-project/viewing-and-comparing-commits => how-tos/commit-changes}/comparing-commits.md (97%) rename content/pull-requests/{committing-changes-to-your-project/creating-and-editing-commits => how-tos/commit-changes}/creating-a-commit-with-multiple-authors.md (96%) create mode 100644 content/pull-requests/how-tos/commit-changes/index.md rename content/pull-requests/{committing-changes-to-your-project => how-tos/commit-changes}/troubleshooting-commits.md (97%) rename content/pull-requests/{collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests => how-tos/create-pull-requests}/changing-the-base-branch-of-a-pull-request.md (88%) rename content/pull-requests/{collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests => how-tos/create-pull-requests}/changing-the-stage-of-a-pull-request.md (94%) rename content/pull-requests/{collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests => how-tos/create-pull-requests}/committing-changes-to-a-pull-request-branch-created-from-a-fork.md (96%) rename content/pull-requests/{collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests => how-tos/create-pull-requests}/creating-a-pull-request-from-a-fork.md (91%) rename content/pull-requests/{collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests => how-tos/create-pull-requests}/creating-a-pull-request.md (95%) rename content/pull-requests/{collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests => how-tos/create-pull-requests}/creating-and-deleting-branches-within-your-repository.md (94%) rename content/pull-requests/{collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests => how-tos/create-pull-requests}/index.md (62%) rename content/pull-requests/{collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests => how-tos/create-pull-requests}/keeping-your-pull-request-in-sync-with-the-base-branch.md (91%) rename content/pull-requests/{collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests => how-tos/create-pull-requests}/requesting-a-pull-request-review.md (92%) create mode 100644 content/pull-requests/how-tos/index.md rename content/pull-requests/{collaborating-with-pull-requests/incorporating-changes-from-a-pull-request => how-tos/merge-and-close-pull-requests}/automatically-merging-a-pull-request.md (96%) rename content/pull-requests/{collaborating-with-pull-requests/incorporating-changes-from-a-pull-request => how-tos/merge-and-close-pull-requests}/closing-a-pull-request.md (72%) create mode 100644 content/pull-requests/how-tos/merge-and-close-pull-requests/index.md rename content/pull-requests/{collaborating-with-pull-requests/incorporating-changes-from-a-pull-request => how-tos/merge-and-close-pull-requests}/merging-a-pull-request-with-a-merge-queue.md (92%) rename content/pull-requests/{collaborating-with-pull-requests/incorporating-changes-from-a-pull-request => how-tos/merge-and-close-pull-requests}/merging-a-pull-request.md (98%) rename content/pull-requests/{collaborating-with-pull-requests/addressing-merge-conflicts => how-tos/merge-and-close-pull-requests}/resolving-a-merge-conflict-on-github.md (96%) rename content/pull-requests/{collaborating-with-pull-requests/addressing-merge-conflicts => how-tos/merge-and-close-pull-requests}/resolving-a-merge-conflict-using-the-command-line.md (97%) rename content/pull-requests/{collaborating-with-pull-requests/incorporating-changes-from-a-pull-request => how-tos/merge-and-close-pull-requests}/reverting-a-pull-request.md (94%) rename content/pull-requests/{collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features => how-tos/merge-and-close-pull-requests}/troubleshooting-required-status-checks.md (97%) rename content/pull-requests/{collaborating-with-pull-requests/reviewing-changes-in-pull-requests => how-tos/review-pull-requests}/approving-a-pull-request-with-required-reviews.md (87%) rename content/pull-requests/{collaborating-with-pull-requests/reviewing-changes-in-pull-requests => how-tos/review-pull-requests}/checking-out-pull-requests-locally.md (93%) rename content/pull-requests/{collaborating-with-pull-requests/reviewing-changes-in-pull-requests => how-tos/review-pull-requests}/commenting-on-a-pull-request.md (93%) rename content/pull-requests/{collaborating-with-pull-requests/reviewing-changes-in-pull-requests => how-tos/review-pull-requests}/dismissing-a-pull-request-review.md (88%) rename content/pull-requests/{collaborating-with-pull-requests/reviewing-changes-in-pull-requests => how-tos/review-pull-requests}/filtering-files-in-a-pull-request.md (91%) rename content/pull-requests/{collaborating-with-pull-requests/reviewing-changes-in-pull-requests => how-tos/review-pull-requests}/finding-changed-methods-and-functions-in-a-pull-request.md (88%) rename content/pull-requests/{collaborating-with-pull-requests/reviewing-changes-in-pull-requests => how-tos/review-pull-requests}/incorporating-feedback-in-your-pull-request.md (92%) rename content/pull-requests/{collaborating-with-pull-requests/reviewing-changes-in-pull-requests => how-tos/review-pull-requests}/index.md (76%) rename content/pull-requests/{collaborating-with-pull-requests/reviewing-changes-in-pull-requests => how-tos/review-pull-requests}/reviewing-dependency-changes-in-a-pull-request.md (97%) rename content/pull-requests/{collaborating-with-pull-requests/reviewing-changes-in-pull-requests => how-tos/review-pull-requests}/reviewing-proposed-changes-in-a-pull-request.md (97%) rename content/pull-requests/{collaborating-with-pull-requests/reviewing-changes-in-pull-requests => how-tos/review-pull-requests}/viewing-a-pull-request-review.md (91%) rename content/pull-requests/{collaborating-with-pull-requests/working-with-forks => how-tos/work-with-forks}/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md (91%) rename content/pull-requests/{collaborating-with-pull-requests/working-with-forks => how-tos/work-with-forks}/configuring-a-remote-repository-for-a-fork.md (79%) rename content/pull-requests/{collaborating-with-pull-requests/working-with-forks => how-tos/work-with-forks}/detaching-a-fork.md (96%) rename content/pull-requests/{collaborating-with-pull-requests/working-with-forks => how-tos/work-with-forks}/fork-a-repo.md (98%) rename content/pull-requests/{collaborating-with-pull-requests/working-with-forks => how-tos/work-with-forks}/index.md (63%) rename content/pull-requests/{collaborating-with-pull-requests/working-with-forks => how-tos/work-with-forks}/syncing-a-fork.md (97%) create mode 100644 content/pull-requests/reference/index.md rename content/pull-requests/{collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests => reference}/using-query-parameters-to-create-a-pull-request.md (95%) diff --git a/content/index.md b/content/index.md index 6fa6f3010d9c..ddfaa931ba04 100644 --- a/content/index.md +++ b/content/index.md @@ -7,7 +7,7 @@ featuredLinks: - /repositories/creating-and-managing-repositories - /get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax popular: - - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests + - /pull-requests/concepts/about-pull-requests - /authentication - /copilot/how-tos/get-code-suggestions/get-ide-code-suggestions - /get-started/git-basics/managing-remote-repositories diff --git a/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/index.md b/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/index.md deleted file mode 100644 index 137bb43795fc..000000000000 --- a/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Addressing merge conflicts -intro: 'If your changes have merge conflicts with the base branch, you must address the merge conflicts before you can merge your pull request''s changes.' -redirect_from: - - /github/collaborating-with-issues-and-pull-requests/addressing-merge-conflicts - - /articles/addressing-merge-conflicts - - /github/collaborating-with-pull-requests/addressing-merge-conflicts -versions: - fpt: '*' - ghes: '*' - ghec: '*' -children: - - /about-merge-conflicts - - /resolving-a-merge-conflict-on-github - - /resolving-a-merge-conflict-using-the-command-line -shortTitle: Address merge conflicts ---- - diff --git a/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/index.md b/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/index.md deleted file mode 100644 index 858faff8bb41..000000000000 --- a/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Collaborating on repositories with code quality features -intro: 'Workflow quality features like statuses, {% ifversion ghes %}pre-receive hooks, {% endif %}protected branches, and required status checks help collaborators make contributions that meet conditions set by organization and repository administrators.' -redirect_from: - - /github/collaborating-with-issues-and-pull-requests/collaborating-on-repositories-with-code-quality-features - - /articles/collaborating-on-repositories-with-code-quality-features-enabled - - /articles/collaborating-on-repositories-with-code-quality-features - - /github/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features -versions: - fpt: '*' - ghes: '*' - ghec: '*' -children: - - /about-status-checks - - /troubleshooting-required-status-checks - - /working-with-pre-receive-hooks -shortTitle: Code quality features ---- diff --git a/content/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models.md b/content/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models.md deleted file mode 100644 index f2d4eb3089b7..000000000000 --- a/content/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: About collaborative development models -intro: The way you use pull requests depends on the type of development model you use in your project. You can use the fork and pull model or the shared repository model. -redirect_from: - - /github/collaborating-with-issues-and-pull-requests/getting-started/about-collaborative-development-models - - /articles/types-of-collaborative-development-models - - /articles/about-collaborative-development-models - - /github/collaborating-with-issues-and-pull-requests/about-collaborative-development-models - - /github/collaborating-with-pull-requests/getting-started/about-collaborative-development-models -versions: - fpt: '*' - ghes: '*' - ghec: '*' -shortTitle: Collaborative development -category: - - Create pull requests ---- -## Fork and pull model - -In the fork and pull model, anyone can fork an existing ("upstream") repository if they have read access and the owner of the upstream repository allows it. Be aware that a fork and its upstream share the same Git data. This means that all content uploaded to a fork is accessible from the upstream and all other forks of that upstream. - -You do not need permission from the upstream repository to push to a fork you created. You can optionally allow anyone with push access to the upstream repository to make changes to your pull request branch. This model is popular with open-source projects because it reduces friction for new contributors and lets people work independently without upfront coordination. - -> [!TIP] -> {% data reusables.open-source.open-source-guide-general %} {% data reusables.open-source.open-source-learning %} - -## Shared repository model - -In the shared repository model, collaborators have push access to a single shared repository and create topic branches when they need to make changes. Pull requests are useful in this model because they start code review and general discussion about a set of changes before the changes are merged into the main development branch. This model is more common with small teams and organizations collaborating on private projects. - -## Further reading - -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork) diff --git a/content/pull-requests/collaborating-with-pull-requests/getting-started/index.md b/content/pull-requests/collaborating-with-pull-requests/getting-started/index.md deleted file mode 100644 index 7597f96c0950..000000000000 --- a/content/pull-requests/collaborating-with-pull-requests/getting-started/index.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Getting started -shortTitle: Getting started -intro: 'Learn about the {% data variables.product.prodname_dotcom %} flow and different ways to collaborate on and discuss your projects.' -redirect_from: - - /github/collaborating-with-issues-and-pull-requests/getting-started - - /github/collaborating-with-issues-and-pull-requests/overview - - /github/collaborating-with-pull-requests/getting-started -versions: - fpt: '*' - ghes: '*' - ghec: '*' -children: - - /about-collaborative-development-models - - /helping-others-review-your-changes - - /managing-and-standardizing-pull-requests ---- diff --git a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/index.md b/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/index.md deleted file mode 100644 index 28966f048fde..000000000000 --- a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/index.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Incorporating changes from a pull request -intro: 'You can propose changes to your work on {% data variables.product.github %} through pull requests. Learn how to create, manage, and merge pull requests.' -redirect_from: - - /github/collaborating-with-issues-and-pull-requests/incorporating-changes-from-a-pull-request - - /articles/incorporating-changes-from-a-pull-request - - /github/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request -versions: - fpt: '*' - ghes: '*' - ghec: '*' -children: - - /about-pull-request-merges - - /merging-a-pull-request - - /automatically-merging-a-pull-request - - /merging-a-pull-request-with-a-merge-queue - - /closing-a-pull-request - - /reverting-a-pull-request -shortTitle: Incorporate changes ---- - diff --git a/content/pull-requests/collaborating-with-pull-requests/index.md b/content/pull-requests/collaborating-with-pull-requests/index.md deleted file mode 100644 index 9d430a206f01..000000000000 --- a/content/pull-requests/collaborating-with-pull-requests/index.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Collaborating with pull requests -intro: 'Track and discuss changes in issues, then propose and review changes in pull requests.' -redirect_from: - - /github/collaborating-with-issues-and-pull-requests - - /categories/63/articles - - /categories/collaborating - - /categories/collaborating-on-projects-using-pull-requests - - /categories/collaborating-on-projects-using-issues-and-pull-requests - - /categories/collaborating-with-issues-and-pull-requests - - /github/collaborating-with-pull-requests -versions: - fpt: '*' - ghes: '*' - ghec: '*' -children: - - /getting-started - - /working-with-forks - - /collaborating-on-repositories-with-code-quality-features - - /proposing-changes-to-your-work-with-pull-requests - - /addressing-merge-conflicts - - /reviewing-changes-in-pull-requests - - /incorporating-changes-from-a-pull-request -shortTitle: Collaborate with pull requests ---- - diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests.md deleted file mode 100644 index 3eb93aaa1a70..000000000000 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: About comparing branches in pull requests -intro: Pull requests display diffs to compare the changes you made in your topic branch against the base branch that you want to merge your changes into. -redirect_from: - - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests - - /articles/about-comparing-branches-in-pull-requests - - /github/collaborating-with-issues-and-pull-requests/about-comparing-branches-in-pull-requests - - /github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests -versions: - fpt: '*' - ghes: '*' - ghec: '*' -shortTitle: Compare branches -category: - - Create pull requests ---- - -> [!NOTE] -> When you create your pull request, you can change the base branch that you're comparing your changes against. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request#changing-the-branch-range-and-destination-repository). - -You can view proposed changes in a pull request in the Files changed tab. -![Screenshot of the tabs for a pull request. The "Files changed" tab is outlined in dark orange.](/assets/images/help/pull_requests/pull-request-tabs-changed-files.png) - -Instead of viewing the commits themselves, you can view the proposed changes as they'll appear in the files once the pull request is merged. The files appear in alphabetical order within the Files changed tab. Additions to the files appear in green and are marked by a `+` sign. Content that has been removed appears in red and is marked by a `-` sign. - -## Diff view options - -> [!TIP] -> If you're having trouble understanding the context of a change, you can click **View** in the Files changed tab to view the whole file with the proposed changes. - -You have several options for viewing a diff: -* The unified view shows updated and existing content together in a linear view. -* The split view shows old content on one side and new content on the other side. -* The rich diff view shows a preview of how the changes will look once the pull request is merged. -* The source view shows the changes in source without the formatting of the rich diff view. - -You can also choose to ignore whitespace changes to get a more accurate view of the meaningful changes in a pull request. - -![Screenshot of the "Files changed" tab for a pull request. The "Diff view" menu is outlined in dark orange.](/assets/images/help/pull_requests/diff-settings-menu.png) - -To simplify reviewing changes in a large pull request, filter the diff to show only selected file types, show files you are a CODEOWNER of, hide files you have already viewed, or hide deleted files. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request). - -![Screenshot of the file filter dropdown menu. The menu is expanded and outlined in dark orange.](/assets/images/help/pull_requests/file-filter-menu.png) - -You can also use the diff view to see which dependencies you are introducing or changing with your pull request, and whether the dependency versions contain security vulnerabilities. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request#reviewing-dependencies-in-a-pull-request). - -## Reasons diffs will not display - -* You've exceeded the total limit of files or certain file types. For more information, see [AUTOTITLE](/repositories/creating-and-managing-repositories/repository-limits#diff-limits). -* Your file matches a rule in the repository's _.gitattributes_ file to block that file from displaying by default. For more information, see [AUTOTITLE](/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github). - -## Three-dot and two-dot Git diff comparisons - -There are two comparison methods for the `git diff` command: two-dot (`git diff A..B`) and three-dot (`git diff A...B`). Pull requests on {% data variables.product.prodname_dotcom %} show a three-dot diff. - -### Three-dot Git diff comparison - -The three-dot comparison shows the difference between the most recent common commit of both branches (merge base) and the most recent version of the topic branch. - -### Two-dot Git diff comparison - -The two-dot comparison shows the difference between the most recent state of the base branch (for example, `main`) and the most recent version of the topic branch. - -To see two committish references in a two-dot diff comparison on {% data variables.product.prodname_dotcom %}, you can edit the URL of your repository's "Comparing changes" page. For more information, see the [Git Glossary for "committish"](https://git-scm.com/docs/gitglossary#gitglossary-aiddefcommit-ishacommit-ishalsocommittish) on the _Pro Git_ book site. - -{% data reusables.repositories.two-dot-diff-comparison-example-urls %} - -A two-dot diff compares two Git committish references, such as SHAs or OIDs (Object IDs), directly with each other. On {% data variables.product.prodname_dotcom %}, the Git committish references in a two-dot diff comparison must be pushed to the same repository or its forks. - -If you want to simulate a two-dot diff in a pull request and see a comparison between the most recent versions of each branch, you can merge the base branch into your topic branch, which updates the last common ancestor between your branches. - -For more information about Git commands to compare changes, see [Git diff options](https://git-scm.com/docs/git-diff#git-diff-emgitdiffemltoptionsgtltcommitgtltcommitgt--ltpathgt82308203) from the _Pro Git_ book site. - -## About three-dot comparison on {% data variables.product.prodname_dotcom %} - -Because the three-dot comparison uses the merge base, it focuses on "what a pull request introduces." - -When you use a two-dot comparison, the diff changes when the base branch is updated, even if you haven't made any changes to the topic branch. Additionally, a two-dot comparison focuses on the base branch. This means that anything you add is displayed as missing from the base branch, as if it was a deletion, and vice versa. As a result, the changes the topic branch introduces become ambiguous. - -In contrast, when you compare the branches using the three-dot comparison, changes in the topic branch are always in the diff if the base branch is updated, because the diff shows all of the changes since the branches diverged. - -### Merging often - -To avoid confusion, merge the base branch (for example, `main`) into your topic branch frequently. When you merge the base branch, the diffs shown by two-dot and three-dot comparisons are the same. We recommend merging a pull request as soon as possible. This encourages contributors to make pull requests smaller, which we recommend in general. - -## Further reading - -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks) diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md deleted file mode 100644 index c86f232f406f..000000000000 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: About forks -intro: A fork is a new repository that shares code and visibility settings with the original "upstream" repository. -redirect_from: - - /github/collaborating-with-issues-and-pull-requests/working-with-forks/about-forks - - /articles/about-forks - - /github/collaborating-with-issues-and-pull-requests/about-forks - - /github/collaborating-with-pull-requests/working-with-forks/about-forks -versions: - fpt: '*' - ghes: '*' - ghec: '*' -category: - - Work with forks ---- - -## About forks - -Forks are like independent copies of repositories. Unlike branches, forks give you more freedom to experiment without affecting the original project. Unlike cloned or duplicated repositories, changes from forks can be merged back into the upstream repository with pull requests, similar to a branch. - -When you view a forked repository on {% data variables.product.github %}, the upstream repository is indicated below the name of the fork. - -![Screenshot of a repository's page on GitHub. Below the name of the repository, "mona/docs", the text "forked from github/docs" is outlined in orange.](/assets/images/help/pull_requests/fork-path.png) - -## What makes forks distinct from branches - -Each fork is a complete repository with its own: - -* Branches -* Members and discussions -* Issues and pull requests -* Actions and projects -* Tags, labels, and wikis - -## When to use a fork - -A fork may fit your task better than a branch. A fork might be better: - -* To experiment safely without affecting the original project -* To create separate space for discussions unrelated to a project's main goals -* When you might want to make your work an independent repository later - -## Which repositories can be forked? - -{% data reusables.repositories.you-can-fork %} - -## Next steps - -For instructions on forking a repository, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo). - -For more information about when you can create forks, and the permission and visibility settings of forks, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks). diff --git a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/index.md b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/index.md deleted file mode 100644 index 4cc690448bec..000000000000 --- a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/index.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Creating and editing commits -intro: '' -redirect_from: - - /articles/creating-and-editing-commits - - /github/committing-changes-to-your-project/creating-and-editing-commits -versions: - fpt: '*' - ghes: '*' - ghec: '*' -children: - - /about-commits - - /creating-a-commit-with-multiple-authors - - /changing-a-commit-message -shortTitle: Create & edit commits ---- - diff --git a/content/pull-requests/committing-changes-to-your-project/index.md b/content/pull-requests/committing-changes-to-your-project/index.md deleted file mode 100644 index 5670a0f729fe..000000000000 --- a/content/pull-requests/committing-changes-to-your-project/index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Committing changes to your project -intro: You can manage code changes in a repository by grouping work into commits. -redirect_from: - - /categories/21/articles - - /categories/commits - - /categories/committing-changes-to-your-project - - /github/committing-changes-to-your-project -versions: - fpt: '*' - ghes: '*' - ghec: '*' -children: - - /creating-and-editing-commits - - /viewing-and-comparing-commits - - /troubleshooting-commits -shortTitle: Commit changes to your project ---- diff --git a/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/index.md b/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/index.md deleted file mode 100644 index 842a1d1220fb..000000000000 --- a/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/index.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Viewing and comparing commits -intro: '' -redirect_from: - - /articles/viewing-and-comparing-commits - - /github/committing-changes-to-your-project/viewing-and-comparing-commits -versions: - fpt: '*' - ghes: '*' - ghec: '*' -children: - - /comparing-commits -shortTitle: View & compare commits ---- - diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches.md b/content/pull-requests/concepts/about-branches.md similarity index 50% rename from content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches.md rename to content/pull-requests/concepts/about-branches.md index 19effaba71d5..58538ba77194 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches.md +++ b/content/pull-requests/concepts/about-branches.md @@ -1,18 +1,25 @@ --- title: About branches -intro: 'Use a branch to isolate development work without affecting other branches in the repository. Each repository has one default branch, and can have multiple other branches. You can merge a branch into another branch using a pull request.' +intro: Use a branch to isolate development work without affecting other branches in the repository. Each repository has one default branch, and can have multiple other branches. You can merge a branch into another branch using a pull request. redirect_from: - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches - /articles/working-with-protected-branches - /articles/about-branches - /github/collaborating-with-issues-and-pull-requests/about-branches - /github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches + - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests + - /articles/about-comparing-branches-in-pull-requests + - /github/collaborating-with-issues-and-pull-requests/about-comparing-branches-in-pull-requests + - /github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests + - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests + - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches versions: fpt: '*' ghes: '*' ghec: '*' category: - Create pull requests +contentType: concepts --- ## About branches @@ -73,8 +80,79 @@ When a branch is protected: * If required commit signing is enabled on a branch, you can't push any commits to the branch that are not signed and verified. For more information, see [AUTOTITLE](/authentication/managing-commit-signature-verification/about-commit-signature-verification) and [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-signed-commits). * If you use {% data variables.product.prodname_dotcom %}'s conflict editor to fix conflicts for a pull request that you created from a protected branch, {% data variables.product.prodname_dotcom %} helps you create an alternative branch for the pull request so that your conflict resolution can be merged. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github). +## Comparing branches in pull requests + +> [!NOTE] +> When you create your pull request, you can change the base branch that you're comparing your changes against. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request#changing-the-branch-range-and-destination-repository). + +You can view proposed changes in a pull request in the Files changed tab. +![Screenshot of the tabs for a pull request. The "Files changed" tab is outlined in dark orange.](/assets/images/help/pull_requests/pull-request-tabs-changed-files.png) + +Instead of viewing the commits themselves, you can view the proposed changes as they'll appear in the files once the pull request is merged. The files appear in alphabetical order within the Files changed tab. Additions to the files appear in green and are marked by a `+` sign. Content that has been removed appears in red and is marked by a `-` sign. + +### Diff view options + +> [!TIP] +> If you're having trouble understanding the context of a change, you can click **View** in the Files changed tab to view the whole file with the proposed changes. + +You have several options for viewing a diff: +* The unified view shows updated and existing content together in a linear view. +* The split view shows old content on one side and new content on the other side. +* The rich diff view shows a preview of how the changes will look once the pull request is merged. +* The source view shows the changes in source without the formatting of the rich diff view. + +You can also choose to ignore whitespace changes to get a more accurate view of the meaningful changes in a pull request. + +![Screenshot of the "Files changed" tab for a pull request. The "Diff view" menu is outlined in dark orange.](/assets/images/help/pull_requests/diff-settings-menu.png) + +To simplify reviewing changes in a large pull request, filter the diff to show only selected file types, show files you are a CODEOWNER of, hide files you have already viewed, or hide deleted files. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request). + +![Screenshot of the file filter dropdown menu. The menu is expanded and outlined in dark orange.](/assets/images/help/pull_requests/file-filter-menu.png) + +You can also use the diff view to see which dependencies you are introducing or changing with your pull request, and whether the dependency versions contain security vulnerabilities. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request#reviewing-dependencies-in-a-pull-request). + +### Reasons diffs will not display + +* You've exceeded the total limit of files or certain file types. For more information, see [AUTOTITLE](/repositories/creating-and-managing-repositories/repository-limits#diff-limits). +* Your file matches a rule in the repository's _.gitattributes_ file to block that file from displaying by default. For more information, see [AUTOTITLE](/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github). + +### Three-dot and two-dot Git diff comparisons + +There are two comparison methods for the `git diff` command: two-dot (`git diff A..B`) and three-dot (`git diff A...B`). Pull requests on {% data variables.product.prodname_dotcom %} show a three-dot diff. + +#### Three-dot Git diff comparison + +The three-dot comparison shows the difference between the most recent common commit of both branches (merge base) and the most recent version of the topic branch. + +#### Two-dot Git diff comparison + +The two-dot comparison shows the difference between the most recent state of the base branch (for example, `main`) and the most recent version of the topic branch. + +To see two committish references in a two-dot diff comparison on {% data variables.product.prodname_dotcom %}, you can edit the URL of your repository's "Comparing changes" page. For more information, see the [Git Glossary for "committish"](https://git-scm.com/docs/gitglossary#gitglossary-aiddefcommit-ishacommit-ishalsocommittish) on the _Pro Git_ book site. + +{% data reusables.repositories.two-dot-diff-comparison-example-urls %} + +A two-dot diff compares two Git committish references, such as SHAs or OIDs (Object IDs), directly with each other. On {% data variables.product.prodname_dotcom %}, the Git committish references in a two-dot diff comparison must be pushed to the same repository or its forks. + +If you want to simulate a two-dot diff in a pull request and see a comparison between the most recent versions of each branch, you can merge the base branch into your topic branch, which updates the last common ancestor between your branches. + +For more information about Git commands to compare changes, see [Git diff options](https://git-scm.com/docs/git-diff#git-diff-emgitdiffemltoptionsgtltcommitgtltcommitgt--ltpathgt82308203) from the _Pro Git_ book site. + +### About three-dot comparison on {% data variables.product.prodname_dotcom %} + +Because the three-dot comparison uses the merge base, it focuses on "what a pull request introduces." + +When you use a two-dot comparison, the diff changes when the base branch is updated, even if you haven't made any changes to the topic branch. Additionally, a two-dot comparison focuses on the base branch. This means that anything you add is displayed as missing from the base branch, as if it was a deletion, and vice versa. As a result, the changes the topic branch introduces become ambiguous. + +In contrast, when you compare the branches using the three-dot comparison, changes in the topic branch are always in the diff if the base branch is updated, because the diff shows all of the changes since the branches diverged. + +#### Merging often + +To avoid confusion, merge the base branch (for example, `main`) into your topic branch frequently. When you merge the base branch, the diffs shown by two-dot and three-dot comparisons are the same. We recommend merging a pull request as soon as possible. This encourages contributors to make pull requests smaller, which we recommend in general. + ## Further reading * [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) * [AUTOTITLE](/get-started/learning-about-github/github-glossary#branch) in the {% data variables.product.prodname_dotcom %} glossary * [Branches in a Nutshell](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell) in the Git documentation +* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks) diff --git a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits.md b/content/pull-requests/concepts/about-commits.md similarity index 97% rename from content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits.md rename to content/pull-requests/concepts/about-commits.md index c98519ed3c4f..895046d5fa4f 100644 --- a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits.md +++ b/content/pull-requests/concepts/about-commits.md @@ -7,12 +7,14 @@ redirect_from: - /github/committing-changes-to-your-project/about-commits - /github/committing-changes-to-your-project/creating-and-editing-commits/about-commits - /pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/commit-branch-and-tag-labels + - /pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits versions: fpt: '*' ghes: '*' ghec: '*' category: - Commit changes +contentType: concepts --- ## About commits diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks.md b/content/pull-requests/concepts/about-forks.md similarity index 85% rename from content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks.md rename to content/pull-requests/concepts/about-forks.md index f0f33c1d745b..ea77409c8365 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks.md +++ b/content/pull-requests/concepts/about-forks.md @@ -1,23 +1,55 @@ --- -title: About permissions and visibility of forks -shortTitle: Permissions and visibility -intro: 'The permissions and visibility of forks depend on whether the upstream repository is public or private, {% ifversion fpt %}and whether it is owned by an organization{% else %}whether it is owned by an organization, and the policies of your enterprise{% endif %}.' +title: About forks +intro: A fork is a new repository that shares code and visibility settings with the original "upstream" repository. redirect_from: + - /github/collaborating-with-issues-and-pull-requests/working-with-forks/about-forks + - /articles/about-forks + - /github/collaborating-with-issues-and-pull-requests/about-forks + - /github/collaborating-with-pull-requests/working-with-forks/about-forks - /github/collaborating-with-issues-and-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility - /articles/changing-the-visibility-of-a-network - /articles/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility - /github/collaborating-with-issues-and-pull-requests/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility - /github/collaborating-with-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility - /pull-requests/collaborating-with-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility + - /pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks + - /pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks versions: fpt: '*' ghes: '*' ghec: '*' category: - Work with forks +contentType: concepts --- -## About permissions for creating forks +## About forks + +Forks are like independent copies of repositories. Unlike branches, forks give you more freedom to experiment without affecting the original project. Unlike cloned or duplicated repositories, changes from forks can be merged back into the upstream repository with pull requests, similar to a branch. + +When you view a forked repository on {% data variables.product.github %}, the upstream repository is indicated below the name of the fork. + +![Screenshot of a repository's page on GitHub. Below the name of the repository, "mona/docs", the text "forked from github/docs" is outlined in orange.](/assets/images/help/pull_requests/fork-path.png) + +## What makes forks distinct from branches + +Each fork is a complete repository with its own: + +* Branches +* Members and discussions +* Issues and pull requests +* Actions and projects +* Tags, labels, and wikis + +## When to use a fork + +A fork may fit your task better than a branch. A fork might be better: + +* To experiment safely without affecting the original project +* To create separate space for discussions unrelated to a project's main goals +* When you might want to make your work an independent repository later + +## Which repositories can be forked? {% data reusables.repositories.you-can-fork %} @@ -34,8 +66,8 @@ If you're a member of an {% data variables.enterprise.prodname_emu_enterprise %} Organizations can allow or prevent the forking of any private repositories owned by the organization{% ifversion ghec or ghes %}. Enterprises can also enforce policies to specify where members can create forks of private or internal repositories. Policies control the options available to the enterprise's organizations{% endif %}. For more information, see [AUTOTITLE](/organizations/managing-organization-settings/managing-the-forking-policy-for-your-organization){% ifversion fpt %}.{% else %} and [AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-forking-private-or-internal-repositories).{% endif %} -## About visibility of forks +## About visibility of forks A fork is a new repository that shares code and visibility settings with the upstream repository. All forks of public repositories are public. You cannot change the visibility of a fork. All repositories belong to a repository network. A repository network contains the upstream repository, the upstream repository's direct forks, and all forks of those forks. All forks in the repository network have the same visibility setting. For more information, see [AUTOTITLE](/repositories/viewing-activity-and-data-for-your-repository/understanding-connections-between-repositories). @@ -148,7 +180,7 @@ Internal repositories only support a single level of forking. You cannot fork a {% endif %} -## Further reading +## Next steps + +For instructions on forking a repository, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo). -* [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility) -* [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-the-forking-policy-for-your-repository) diff --git a/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts.md b/content/pull-requests/concepts/about-merge-conflicts.md similarity index 93% rename from content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts.md rename to content/pull-requests/concepts/about-merge-conflicts.md index 1095ce800ba7..9725be98fdf1 100644 --- a/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts.md +++ b/content/pull-requests/concepts/about-merge-conflicts.md @@ -1,18 +1,20 @@ --- title: About merge conflicts -intro: 'Merge conflicts happen when you merge branches that have competing commits, and Git needs your help to decide which changes to incorporate in the final merge.' +intro: Merge conflicts happen when you merge branches that have competing commits, and Git needs your help to decide which changes to incorporate in the final merge. redirect_from: - /github/collaborating-with-issues-and-pull-requests/addressing-merge-conflicts/about-merge-conflicts - /articles/about-merge-conflicts - /github/collaborating-with-issues-and-pull-requests/about-merge-conflicts - /github/about-merge-conflicts - /github/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts + - /pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts versions: fpt: '*' ghec: '*' ghes: '*' category: - Merge and close pull requests +contentType: concepts --- Git can often resolve differences between branches and merge them automatically. Usually, changes are on different lines or in different files, so Git can merge them without help. Sometimes, competing changes need your help. Merge conflicts often happen when people make different changes to the same line of the same file, or when one person edits a file and another person deletes the same file. diff --git a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges.md b/content/pull-requests/concepts/about-pull-request-merges.md similarity index 93% rename from content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges.md rename to content/pull-requests/concepts/about-pull-request-merges.md index 3193b205970b..0e8950d5c02d 100644 --- a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges.md +++ b/content/pull-requests/concepts/about-pull-request-merges.md @@ -1,18 +1,20 @@ --- title: About pull request merges -intro: 'You can [merge pull requests](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request) by retaining all the commits in a feature branch, squashing all commits into a single commit, or by rebasing individual commits from the `head` branch onto the `base` branch.' +intro: You can [merge pull requests](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request) by retaining all the commits in a feature branch, squashing all commits into a single commit, or by rebasing individual commits from the `head` branch onto the `base` branch. redirect_from: - /github/collaborating-with-issues-and-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges - /articles/about-pull-request-merge-squashing - /articles/about-pull-request-merges - /github/collaborating-with-issues-and-pull-requests/about-pull-request-merges - /github/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges + - /pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges versions: fpt: '*' ghes: '*' ghec: '*' category: - Merge and close pull requests +contentType: concepts --- ## Merge your commits diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews.md b/content/pull-requests/concepts/about-pull-request-reviews.md similarity index 93% rename from content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews.md rename to content/pull-requests/concepts/about-pull-request-reviews.md index 00e698492f68..9ed3ca8b37fe 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews.md +++ b/content/pull-requests/concepts/about-pull-request-reviews.md @@ -1,11 +1,12 @@ --- title: About pull request reviews -intro: 'Collaborate on pull requests to improve code quality.' +intro: Collaborate on pull requests to improve code quality. redirect_from: - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews - /articles/about-pull-request-reviews - /github/collaborating-with-issues-and-pull-requests/about-pull-request-reviews - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews + - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews versions: fpt: '*' ghes: '*' @@ -13,6 +14,7 @@ versions: shortTitle: About PR reviews category: - Review pull requests +contentType: concepts --- Pull request reviews are one of the main ways people collaborate on {% data variables.product.github %}. Reviewers can comment on changes, suggest improvements, and approve or request changes before code is merged. This process helps teams maintain code quality and share knowledge. diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md b/content/pull-requests/concepts/about-pull-requests.md similarity index 64% rename from content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md rename to content/pull-requests/concepts/about-pull-requests.md index bbb575d93d42..325e13eda624 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md +++ b/content/pull-requests/concepts/about-pull-requests.md @@ -1,18 +1,26 @@ --- title: About pull requests -intro: 'Pull requests let you propose, review, and merge code changes.' +intro: Pull requests let you propose, review, and merge code changes. redirect_from: - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests - /articles/using-pull-requests - /articles/about-pull-requests - /github/collaborating-with-issues-and-pull-requests/about-pull-requests - /github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests + - /github/collaborating-with-issues-and-pull-requests/getting-started/about-collaborative-development-models + - /articles/types-of-collaborative-development-models + - /articles/about-collaborative-development-models + - /github/collaborating-with-issues-and-pull-requests/about-collaborative-development-models + - /github/collaborating-with-pull-requests/getting-started/about-collaborative-development-models + - /pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models + - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests versions: fpt: '*' ghes: '*' ghec: '*' category: - Create pull requests +contentType: concepts --- Pull requests are proposals to merge code changes into a project. A pull request is {% data variables.product.github %}'s key **collaboration feature**, letting you discuss and review changes before merging them. This helps teams work together, catch issues early, and maintain code quality. @@ -64,8 +72,27 @@ The compare and pull request pages use different methods to calculate the diff f * Compare pages show the diff between the tip of the head ref and the current common ancestor (that is, the merge base) of the head and base ref. * Pull request pages show the diff between the tip of the head ref and the common ancestor of the head and base ref at the time when the pull request was created. As a result, the merge base used for the comparison might be different. +## Collaborative development models + +The way you use pull requests depends on the type of development model you use in your project. You can use the fork and pull model or the shared repository model. + +### Fork and pull model + +In the fork and pull model, anyone can fork an existing ("upstream") repository if they have read access and the owner of the upstream repository allows it. Be aware that a fork and its upstream share the same Git data. This means that all content uploaded to a fork is accessible from the upstream and all other forks of that upstream. + +You do not need permission from the upstream repository to push to a fork you created. You can optionally allow anyone with push access to the upstream repository to make changes to your pull request branch. This model is popular with open-source projects because it reduces friction for new contributors and lets people work independently without upfront coordination. + +> [!TIP] +> {% data reusables.open-source.open-source-guide-general %} {% data reusables.open-source.open-source-learning %} + +### Shared repository model + +In the shared repository model, collaborators have push access to a single shared repository and create topic branches when they need to make changes. Pull requests are useful in this model because they start code review and general discussion about a set of changes before the changes are merged into the main development branch. This model is more common with small teams and organizations collaborating on private projects. + ## Further reading * [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) * [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches) * [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request) +* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) +* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork) diff --git a/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks.md b/content/pull-requests/concepts/about-status-checks.md similarity index 97% rename from content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks.md rename to content/pull-requests/concepts/about-status-checks.md index 1de8e62a59c1..946f282025b8 100644 --- a/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks.md +++ b/content/pull-requests/concepts/about-status-checks.md @@ -7,12 +7,14 @@ redirect_from: - /articles/about-status-checks - /github/collaborating-with-issues-and-pull-requests/about-status-checks - /github/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks + - /pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks versions: fpt: '*' ghes: '*' ghec: '*' category: - Merge and close pull requests +contentType: concepts --- Status checks are based on external processes, such as continuous integration builds, that run for each push you make to a repository. You can see the _pending_, _passing_, or _failing_ state of status checks next to individual commits in your pull request. diff --git a/content/pull-requests/collaborating-with-pull-requests/getting-started/helping-others-review-your-changes.md b/content/pull-requests/concepts/helping-others-review-your-changes.md similarity index 96% rename from content/pull-requests/collaborating-with-pull-requests/getting-started/helping-others-review-your-changes.md rename to content/pull-requests/concepts/helping-others-review-your-changes.md index 906ca4d44841..6e352fc39ac5 100644 --- a/content/pull-requests/collaborating-with-pull-requests/getting-started/helping-others-review-your-changes.md +++ b/content/pull-requests/concepts/helping-others-review-your-changes.md @@ -1,8 +1,9 @@ --- title: Helping others review your changes -intro: 'You can use pull requests to provide clear context for your changes and keep your team informed, improving collaboration and the quality of reviews.' +intro: You can use pull requests to provide clear context for your changes and keep your team informed, improving collaboration and the quality of reviews. redirect_from: - /pull-requests/collaborating-with-pull-requests/getting-started/best-practices-for-pull-requests + - /pull-requests/collaborating-with-pull-requests/getting-started/helping-others-review-your-changes versions: fpt: '*' ghes: '*' @@ -10,6 +11,7 @@ versions: shortTitle: Help others review your changes category: - Create pull requests +contentType: concepts --- When you create a pull request, you’re asking your team to review your changes and provide feedback. This guide shares best practices for creating pull requests that are easy to review and keep your team informed, so that you can improve collaboration and the quality of reviews. diff --git a/content/pull-requests/concepts/index.md b/content/pull-requests/concepts/index.md new file mode 100644 index 000000000000..702dff3adefa --- /dev/null +++ b/content/pull-requests/concepts/index.md @@ -0,0 +1,28 @@ +--- +title: Concepts for pull requests +redirect_from: + - /pull-requests/collaborating-with-pull-requests/getting-started + - /github/collaborating-with-issues-and-pull-requests/getting-started + - /github/collaborating-with-issues-and-pull-requests/overview + - /github/collaborating-with-pull-requests/getting-started +shortTitle: Concepts +intro: Learn the core concepts behind pull requests, branches, forks, commits, reviews, and merges. +versions: + fpt: '*' + ghes: '*' + ghec: '*' +children: + - /about-forks + - /about-commits + - /about-status-checks + - /working-with-pre-receive-hooks + - /about-pull-request-merges + - /about-pull-request-reviews + - /managing-and-standardizing-pull-requests + - /helping-others-review-your-changes + - /about-branches + - /about-merge-conflicts + - /about-pull-requests +contentType: concepts +--- + diff --git a/content/pull-requests/collaborating-with-pull-requests/getting-started/managing-and-standardizing-pull-requests.md b/content/pull-requests/concepts/managing-and-standardizing-pull-requests.md similarity index 94% rename from content/pull-requests/collaborating-with-pull-requests/getting-started/managing-and-standardizing-pull-requests.md rename to content/pull-requests/concepts/managing-and-standardizing-pull-requests.md index 4b9480c2dbe2..a0c02154a4af 100644 --- a/content/pull-requests/collaborating-with-pull-requests/getting-started/managing-and-standardizing-pull-requests.md +++ b/content/pull-requests/concepts/managing-and-standardizing-pull-requests.md @@ -1,6 +1,6 @@ --- title: Managing and standardizing pull requests -intro: 'Use these steps to manage and standardize the pull requests that contributors create in your repository.' +intro: Use these steps to manage and standardize the pull requests that contributors create in your repository. versions: fpt: '*' ghes: '*' @@ -8,6 +8,9 @@ versions: shortTitle: Manage and standardize pull requests category: - Create pull requests +redirect_from: + - /pull-requests/collaborating-with-pull-requests/getting-started/managing-and-standardizing-pull-requests +contentType: concepts --- If you are a repository maintainer, you can manage and standardize the pull requests that contributors create in your repository. These steps can help you ensure that pull requests are reviewed by the right people and meet your repository's standards. diff --git a/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/working-with-pre-receive-hooks.md b/content/pull-requests/concepts/working-with-pre-receive-hooks.md similarity index 92% rename from content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/working-with-pre-receive-hooks.md rename to content/pull-requests/concepts/working-with-pre-receive-hooks.md index 36a74c73611d..9dd35a24bf4a 100644 --- a/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/working-with-pre-receive-hooks.md +++ b/content/pull-requests/concepts/working-with-pre-receive-hooks.md @@ -6,11 +6,13 @@ redirect_from: - /articles/working-with-pre-receive-hooks - /github/collaborating-with-issues-and-pull-requests/working-with-pre-receive-hooks - /github/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/working-with-pre-receive-hooks + - /pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/working-with-pre-receive-hooks versions: ghes: '*' shortTitle: Pre-receive hooks category: - Merge and close pull requests +contentType: concepts --- Pre-receive hooks run tests on code pushed to a repository to make sure contributions meet repository or organization policy. If the commit contents pass the tests, the push is accepted into the repository. If the commit contents do not pass the tests, the push is not accepted. diff --git a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message.md b/content/pull-requests/how-tos/commit-changes/changing-a-commit-message.md similarity index 93% rename from content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message.md rename to content/pull-requests/how-tos/commit-changes/changing-a-commit-message.md index 6b73a35232ee..09d516372dcc 100644 --- a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message.md +++ b/content/pull-requests/how-tos/commit-changes/changing-a-commit-message.md @@ -5,13 +5,15 @@ redirect_from: - /articles/changing-a-commit-message - /github/committing-changes-to-your-project/changing-a-commit-message - /github/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message -intro: 'If a commit message contains unclear, incorrect, or sensitive information, you can amend it locally and push a new commit with a new message to {% data variables.product.github %}. You can also change a commit message to add missing information.' + - /pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message +intro: If a commit message contains unclear, incorrect, or sensitive information, you can amend it locally and push a new commit with a new message to {% data variables.product.github %}. You can also change a commit message to add missing information. versions: fpt: '*' ghes: '*' ghec: '*' category: - Commit changes +contentType: how-tos --- ## Rewriting the most recent commit message diff --git a/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits.md b/content/pull-requests/how-tos/commit-changes/comparing-commits.md similarity index 97% rename from content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits.md rename to content/pull-requests/how-tos/commit-changes/comparing-commits.md index df7b07dd91bc..b616d6ed1758 100644 --- a/content/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits.md +++ b/content/pull-requests/how-tos/commit-changes/comparing-commits.md @@ -1,6 +1,6 @@ --- title: Comparing commits -intro: 'You can compare the state of your repository across branches, tags, commits, forks, and dates.' +intro: You can compare the state of your repository across branches, tags, commits, forks, and dates. redirect_from: - /articles/comparing-commits-across-time - /github/committing-changes-to-your-project/comparing-commits-across-time @@ -10,12 +10,14 @@ redirect_from: - /github/committing-changes-to-your-project/differences-between-commit-views - /github/committing-changes-to-your-project/viewing-and-comparing-commits/differences-between-commit-views - /pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/differences-between-commit-views + - /pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits versions: fpt: '*' ghes: '*' ghec: '*' category: - Commit changes +contentType: how-tos --- To compare different versions of your repository, append `/compare` to your repository's path. diff --git a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md b/content/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors.md similarity index 96% rename from content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md rename to content/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors.md index d92bdc49511c..6c39390db58b 100644 --- a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md +++ b/content/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors.md @@ -1,7 +1,7 @@ --- title: Creating a commit with multiple authors or on behalf of an organization allowTitleToDifferFromFilename: true -intro: 'You can attribute a commit to more than one author, or to an organization, by adding trailers to the commit''s message.' +intro: You can attribute a commit to more than one author, or to an organization, by adding trailers to the commit's message. redirect_from: - /articles/creating-a-commit-with-multiple-authors - /github/committing-changes-to-your-project/creating-a-commit-with-multiple-authors @@ -10,6 +10,7 @@ redirect_from: - /github/committing-changes-to-your-project/creating-a-commit-on-behalf-of-an-organization - /github/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-on-behalf-of-an-organization - /pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-on-behalf-of-an-organization + - /pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors versions: fpt: '*' ghes: '*' @@ -17,6 +18,7 @@ versions: shortTitle: Multiple authors or an org category: - Commit changes +contentType: how-tos --- ## Creating a commit with multiple authors diff --git a/content/pull-requests/how-tos/commit-changes/index.md b/content/pull-requests/how-tos/commit-changes/index.md new file mode 100644 index 000000000000..b458f116a794 --- /dev/null +++ b/content/pull-requests/how-tos/commit-changes/index.md @@ -0,0 +1,28 @@ +--- +title: Commit changes +redirect_from: + - /pull-requests/committing-changes-to-your-project + - /categories/21/articles + - /categories/commits + - /categories/committing-changes-to-your-project + - /github/committing-changes-to-your-project + - /pull-requests/committing-changes-to-your-project/creating-and-editing-commits + - /articles/creating-and-editing-commits + - /github/committing-changes-to-your-project/creating-and-editing-commits + - /pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits + - /articles/viewing-and-comparing-commits + - /github/committing-changes-to-your-project/viewing-and-comparing-commits +shortTitle: Commit changes +intro: Create, change, compare, and troubleshoot commits in your pull requests. +versions: + fpt: '*' + ghes: '*' + ghec: '*' +children: + - /comparing-commits + - /creating-a-commit-with-multiple-authors + - /troubleshooting-commits + - /changing-a-commit-message +contentType: how-tos +--- + diff --git a/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits.md b/content/pull-requests/how-tos/commit-changes/troubleshooting-commits.md similarity index 97% rename from content/pull-requests/committing-changes-to-your-project/troubleshooting-commits.md rename to content/pull-requests/how-tos/commit-changes/troubleshooting-commits.md index 043d146a62de..fb7df911e21b 100644 --- a/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits.md +++ b/content/pull-requests/how-tos/commit-changes/troubleshooting-commits.md @@ -1,7 +1,7 @@ --- title: Troubleshooting commits shortTitle: Troubleshooting commits -intro: 'Resolve common problems with commits, such as commits linked to the wrong user, commits that are missing from your local clone, and commits blocked by push protection.' +intro: Resolve common problems with commits, such as commits linked to the wrong user, commits that are missing from your local clone, and commits blocked by push protection. redirect_from: - /articles/troubleshooting-commits - /github/committing-changes-to-your-project/troubleshooting-commits @@ -15,12 +15,14 @@ redirect_from: - /github/committing-changes-to-your-project/troubleshooting-commits/commit-exists-on-github-but-not-in-my-local-clone - /pull-requests/committing-changes-to-your-project/troubleshooting-commits/commit-exists-on-github-but-not-in-my-local-clone - /pull-requests/committing-changes-to-your-project/troubleshooting-commits/my-commit-is-blocked-by-push-protection + - /pull-requests/committing-changes-to-your-project/troubleshooting-commits versions: fpt: '*' ghes: '*' ghec: '*' category: - Commit changes +contentType: how-tos --- ## Commits are linked to the wrong user diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request.md b/content/pull-requests/how-tos/create-pull-requests/changing-the-base-branch-of-a-pull-request.md similarity index 88% rename from content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request.md rename to content/pull-requests/how-tos/create-pull-requests/changing-the-base-branch-of-a-pull-request.md index 2c6092099cd4..7998e5273c54 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request.md +++ b/content/pull-requests/how-tos/create-pull-requests/changing-the-base-branch-of-a-pull-request.md @@ -1,11 +1,12 @@ --- title: Changing the base branch of a pull request -intro: 'After a pull request is opened, you can change the base branch to compare the changes in the pull request against a different branch.' +intro: After a pull request is opened, you can change the base branch to compare the changes in the pull request against a different branch. redirect_from: - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request - /articles/changing-the-base-branch-of-a-pull-request - /github/collaborating-with-issues-and-pull-requests/changing-the-base-branch-of-a-pull-request - /github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request + - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request versions: fpt: '*' ghes: '*' @@ -13,6 +14,7 @@ versions: shortTitle: Change the base branch category: - Create pull requests +contentType: how-tos --- > [!WARNING] diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request.md b/content/pull-requests/how-tos/create-pull-requests/changing-the-stage-of-a-pull-request.md similarity index 94% rename from content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request.md rename to content/pull-requests/how-tos/create-pull-requests/changing-the-stage-of-a-pull-request.md index 8d565055303e..c61456c79a5c 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request.md +++ b/content/pull-requests/how-tos/create-pull-requests/changing-the-stage-of-a-pull-request.md @@ -7,6 +7,7 @@ redirect_from: - /articles/changing-the-stage-of-a-pull-request - /github/collaborating-with-issues-and-pull-requests/changing-the-stage-of-a-pull-request - /github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request + - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request versions: fpt: '*' ghes: '*' @@ -14,6 +15,7 @@ versions: shortTitle: Change the state category: - Create pull requests +contentType: how-tos --- ## Marking a pull request as ready for review diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md b/content/pull-requests/how-tos/create-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md similarity index 96% rename from content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md rename to content/pull-requests/how-tos/create-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md index 2dc417f0a67b..94112a4993a6 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md +++ b/content/pull-requests/how-tos/create-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md @@ -6,6 +6,7 @@ redirect_from: - /articles/committing-changes-to-a-pull-request-branch-created-from-a-fork - /github/collaborating-with-issues-and-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork - /github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork + - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork versions: fpt: '*' ghes: '*' @@ -13,6 +14,7 @@ versions: shortTitle: Commit to PR branch from fork category: - Create pull requests +contentType: how-tos --- You can make commits only on pull request branches that: * Are opened in a repository that you have push access to and were created from a fork of that repository diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork.md b/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request-from-a-fork.md similarity index 91% rename from content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork.md rename to content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request-from-a-fork.md index 9a70f291c0b5..f4f5b4a12c7f 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork.md +++ b/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request-from-a-fork.md @@ -6,7 +6,8 @@ redirect_from: - /articles/creating-a-pull-request-from-a-fork - /github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork - /github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork -permissions: 'Anyone with write access to a repository can create a pull request from a user-owned fork. {% data reusables.enterprise-accounts.emu-permission-propose %}' + - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork +permissions: Anyone with write access to a repository can create a pull request from a user-owned fork. {% data reusables.enterprise-accounts.emu-permission-propose %} versions: fpt: '*' ghes: '*' @@ -14,6 +15,7 @@ versions: shortTitle: Create a PR from a fork category: - Create pull requests +contentType: how-tos --- If your pull request compares your topic branch with a branch in the upstream repository as the base branch, your topic branch is also called the "compare branch" of the pull request. diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request.md b/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request.md similarity index 95% rename from content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request.md rename to content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request.md index f3e72d8a5b42..006c69676e93 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request.md +++ b/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request.md @@ -1,17 +1,19 @@ --- title: Creating a pull request -intro: 'Create a pull request to propose and collaborate on changes to a repository. These changes are proposed in a *branch*, which ensures that the default branch only contains finished and approved work.' -permissions: 'Anyone with read access to a repository can create a pull request. {% data reusables.enterprise-accounts.emu-permission-propose %}' +intro: Create a pull request to propose and collaborate on changes to a repository. These changes are proposed in a *branch*, which ensures that the default branch only contains finished and approved work. +permissions: Anyone with read access to a repository can create a pull request. {% data reusables.enterprise-accounts.emu-permission-propose %} redirect_from: - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request - /articles/creating-a-pull-request - /github/collaborating-with-issues-and-pull-requests/creating-a-pull-request + - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request versions: fpt: '*' ghes: '*' ghec: '*' category: - Create pull requests +contentType: how-tos --- If you want to create a new branch for your pull request but don't have write permissions to the repository, you can fork the repository first. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) and [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks). diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository.md b/content/pull-requests/how-tos/create-pull-requests/creating-and-deleting-branches-within-your-repository.md similarity index 94% rename from content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository.md rename to content/pull-requests/how-tos/create-pull-requests/creating-and-deleting-branches-within-your-repository.md index 8c3db2f11444..e7e31bfa55e1 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository.md +++ b/content/pull-requests/how-tos/create-pull-requests/creating-and-deleting-branches-within-your-repository.md @@ -1,11 +1,12 @@ --- title: Creating and deleting branches within your repository -intro: 'You can create or delete branches directly on {% data variables.product.github %}.' +intro: You can create or delete branches directly on {% data variables.product.github %}. redirect_from: - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository - /articles/deleting-branches-in-a-pull-request - /articles/creating-and-deleting-branches-within-your-repository - /github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository + - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository versions: fpt: '*' ghes: '*' @@ -13,6 +14,7 @@ versions: shortTitle: Create & delete branches category: - Create pull requests +contentType: how-tos --- ## Creating a branch diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/index.md b/content/pull-requests/how-tos/create-pull-requests/index.md similarity index 62% rename from content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/index.md rename to content/pull-requests/how-tos/create-pull-requests/index.md index 42562e848dda..a0ea3dd35bc1 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/index.md +++ b/content/pull-requests/how-tos/create-pull-requests/index.md @@ -1,27 +1,25 @@ --- -title: Proposing changes to your work with pull requests -intro: 'After you add changes to a topic branch or fork, you can open a pull request to ask your collaborators or the repository administrator to review your changes before merging them into the project.' +title: Create pull requests redirect_from: + - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests - /articles/proposing-changes-to-your-work-with-pull-requests - /github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests +shortTitle: Create pull requests +intro: Create pull requests and the branches behind them, keep them in sync, and request reviews. versions: fpt: '*' ghes: '*' ghec: '*' children: - - /about-branches + - /requesting-a-pull-request-review + - /changing-the-stage-of-a-pull-request + - /keeping-your-pull-request-in-sync-with-the-base-branch - /creating-and-deleting-branches-within-your-repository - - /about-pull-requests - - /about-comparing-branches-in-pull-requests + - /committing-changes-to-a-pull-request-branch-created-from-a-fork - /creating-a-pull-request - /creating-a-pull-request-from-a-fork - - /using-query-parameters-to-create-a-pull-request - - /changing-the-stage-of-a-pull-request - - /requesting-a-pull-request-review - - /keeping-your-pull-request-in-sync-with-the-base-branch - /changing-the-base-branch-of-a-pull-request - - /committing-changes-to-a-pull-request-branch-created-from-a-fork -shortTitle: Propose changes +contentType: how-tos --- diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md b/content/pull-requests/how-tos/create-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md similarity index 91% rename from content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md rename to content/pull-requests/how-tos/create-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md index 2496d66b5175..c053f470d8cb 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md +++ b/content/pull-requests/how-tos/create-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md @@ -1,6 +1,6 @@ --- title: Keeping your pull request in sync with the base branch -intro: 'After you open a pull request, you can update the head branch, which contains your changes, with any changes that have been made in the base branch.' +intro: After you open a pull request, you can update the head branch, which contains your changes, with any changes that have been made in the base branch. permissions: People with write permissions to the repository to which the head branch of the pull request belongs can update the head branch with changes that have been made in the base branch. versions: fpt: '*' @@ -9,6 +9,9 @@ versions: shortTitle: Update the head branch category: - Create pull requests +redirect_from: + - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch +contentType: how-tos --- ## About keeping your pull request in sync diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review.md b/content/pull-requests/how-tos/create-pull-requests/requesting-a-pull-request-review.md similarity index 92% rename from content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review.md rename to content/pull-requests/how-tos/create-pull-requests/requesting-a-pull-request-review.md index daec333b3dc1..c3b9c8a212ce 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review.md +++ b/content/pull-requests/how-tos/create-pull-requests/requesting-a-pull-request-review.md @@ -1,12 +1,13 @@ --- title: Requesting a pull request review -intro: 'After you create a pull request, you can ask a specific person to review the changes you''ve proposed. If you''re an organization member, you can also request a specific team to review your changes.' +intro: After you create a pull request, you can ask a specific person to review the changes you've proposed. If you're an organization member, you can also request a specific team to review your changes. product: '{% data reusables.gated-features.multiple-pr-reviewers %}' redirect_from: - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review - /articles/requesting-a-pull-request-review - /github/collaborating-with-issues-and-pull-requests/requesting-a-pull-request-review - /github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review + - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review versions: fpt: '*' ghes: '*' @@ -14,6 +15,7 @@ versions: shortTitle: Request a PR review category: - Create pull requests +contentType: how-tos --- Repositories belong to a personal account (a single individual owner) or an organization account (a shared account with many collaborators or maintainers). For more information, see [AUTOTITLE](/get-started/learning-about-github/types-of-github-accounts). diff --git a/content/pull-requests/how-tos/index.md b/content/pull-requests/how-tos/index.md new file mode 100644 index 000000000000..d70fe79e5f1c --- /dev/null +++ b/content/pull-requests/how-tos/index.md @@ -0,0 +1,16 @@ +--- +title: How-tos for pull requests +shortTitle: How-tos +intro: 'Follow step-by-step guidance to create, review, merge, and close pull requests, work with forks, and manage commits.' +versions: + fpt: '*' + ghes: '*' + ghec: '*' +children: + - /create-pull-requests + - /review-pull-requests + - /merge-and-close-pull-requests + - /work-with-forks + - /commit-changes +contentType: how-tos +--- diff --git a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/automatically-merging-a-pull-request.md similarity index 96% rename from content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request.md rename to content/pull-requests/how-tos/merge-and-close-pull-requests/automatically-merging-a-pull-request.md index c9bdc506ccb7..14d614383a6b 100644 --- a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/automatically-merging-a-pull-request.md @@ -10,9 +10,11 @@ redirect_from: - /github/collaborating-with-issues-and-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request - /github/collaborating-with-issues-and-pull-requests/automatically-merging-a-pull-request - /github/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request + - /pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request shortTitle: Merge PR automatically category: - Merge and close pull requests +contentType: how-tos --- ## About auto-merge diff --git a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/closing-a-pull-request.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/closing-a-pull-request.md similarity index 72% rename from content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/closing-a-pull-request.md rename to content/pull-requests/how-tos/merge-and-close-pull-requests/closing-a-pull-request.md index 4cf52c408841..891022ffec31 100644 --- a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/closing-a-pull-request.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/closing-a-pull-request.md @@ -1,17 +1,19 @@ --- title: Closing a pull request -intro: 'You may choose to *close* a pull request without [merging it into the upstream branch](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request). This can be handy if the changes proposed in the branch are no longer needed, or if another solution has been proposed in another branch.' +intro: You may choose to *close* a pull request without [merging it into the upstream branch](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request). This can be handy if the changes proposed in the branch are no longer needed, or if another solution has been proposed in another branch. redirect_from: - /github/collaborating-with-issues-and-pull-requests/incorporating-changes-from-a-pull-request/closing-a-pull-request - /articles/closing-a-pull-request - /github/collaborating-with-issues-and-pull-requests/closing-a-pull-request - /github/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/closing-a-pull-request + - /pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/closing-a-pull-request versions: fpt: '*' ghes: '*' ghec: '*' category: - Merge and close pull requests +contentType: how-tos --- > [!TIP] diff --git a/content/pull-requests/how-tos/merge-and-close-pull-requests/index.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/index.md new file mode 100644 index 000000000000..c7824eca05fb --- /dev/null +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/index.md @@ -0,0 +1,34 @@ +--- +title: Merge and close pull requests +redirect_from: + - /pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts + - /github/collaborating-with-issues-and-pull-requests/addressing-merge-conflicts + - /articles/addressing-merge-conflicts + - /github/collaborating-with-pull-requests/addressing-merge-conflicts + - /pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features + - /github/collaborating-with-issues-and-pull-requests/collaborating-on-repositories-with-code-quality-features + - /articles/collaborating-on-repositories-with-code-quality-features-enabled + - /articles/collaborating-on-repositories-with-code-quality-features + - /github/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features + - /pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request + - /github/collaborating-with-issues-and-pull-requests/incorporating-changes-from-a-pull-request + - /articles/incorporating-changes-from-a-pull-request + - /github/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request +shortTitle: Merge and close +intro: Merge, automatically merge, revert, and close pull requests, and resolve merge conflicts and status checks. +versions: + fpt: '*' + ghes: '*' + ghec: '*' +children: + - /resolving-a-merge-conflict-using-the-command-line + - /resolving-a-merge-conflict-on-github + - /troubleshooting-required-status-checks + - /closing-a-pull-request + - /automatically-merging-a-pull-request + - /reverting-a-pull-request + - /merging-a-pull-request + - /merging-a-pull-request-with-a-merge-queue +contentType: how-tos +--- + diff --git a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request-with-a-merge-queue.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request-with-a-merge-queue.md similarity index 92% rename from content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request-with-a-merge-queue.md rename to content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request-with-a-merge-queue.md index aeb95037a111..962b66131872 100644 --- a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request-with-a-merge-queue.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request-with-a-merge-queue.md @@ -1,6 +1,6 @@ --- title: Merging a pull request with a merge queue -intro: 'If a merge queue is required by the branch protection setting for the branch, you can add your pull requests to a merge queue and {% data variables.product.github %} will merge the pull requests for you once all required checks have passed.' +intro: If a merge queue is required by the branch protection setting for the branch, you can add your pull requests to a merge queue and {% data variables.product.github %} will merge the pull requests for you once all required checks have passed. versions: fpt: '*' ghec: '*' @@ -9,10 +9,12 @@ shortTitle: Merge PR with merge queue redirect_from: - /pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/adding-a-pull-request-to-the-merge-queue - /github/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/adding-a-pull-request-to-the-merge-queue + - /pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request-with-a-merge-queue defaultTool: webui product: '{% data reusables.gated-features.merge-queue %}' category: - Merge and close pull requests +contentType: how-tos --- ## About merge queues diff --git a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request.md similarity index 98% rename from content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request.md rename to content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request.md index d09618154cdb..0a4beb4511b3 100644 --- a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request.md @@ -6,12 +6,14 @@ redirect_from: - /articles/merging-a-pull-request - /github/collaborating-with-issues-and-pull-requests/merging-a-pull-request - /github/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request + - /pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request versions: fpt: '*' ghes: '*' ghec: '*' category: - Merge and close pull requests +contentType: how-tos --- ## About pull request merges diff --git a/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github.md similarity index 96% rename from content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github.md rename to content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github.md index 28ed9791c13c..eb45df9ac697 100644 --- a/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github.md @@ -1,12 +1,13 @@ --- title: Resolving a merge conflict on GitHub -intro: 'You can resolve simple merge conflicts that involve competing line changes on GitHub, using the conflict editor.' +intro: You can resolve simple merge conflicts that involve competing line changes on GitHub, using the conflict editor. redirect_from: - /github/collaborating-with-issues-and-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github - /articles/resolving-a-merge-conflict-on-github - /github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-on-github - /github/resolving-a-merge-conflict-on-github - /github/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github + - /pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github versions: fpt: '*' ghes: '*' @@ -14,6 +15,7 @@ versions: shortTitle: Resolve merge conflicts category: - Merge and close pull requests +contentType: how-tos --- On {% data variables.product.github %}, you can only resolve merge conflicts caused by competing line changes, such as when people make different changes to the same line of the same file on different branches in your Git repository. For all other types of merge conflicts, you must resolve the conflict locally on the command line. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). diff --git a/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line.md similarity index 97% rename from content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line.md rename to content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line.md index 8078b9f7ef06..e550c21bde8e 100644 --- a/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line.md @@ -7,6 +7,7 @@ redirect_from: - /articles/resolving-a-merge-conflict-using-the-command-line - /github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-using-the-command-line - /github/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line + - /pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line versions: fpt: '*' ghes: '*' @@ -14,6 +15,7 @@ versions: shortTitle: Resolve merge conflicts in Git category: - Merge and close pull requests +contentType: how-tos --- Merge conflicts happen when competing changes are made to the same line of a file, or when one person edits a file and another person deletes the same file. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts). diff --git a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/reverting-a-pull-request.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/reverting-a-pull-request.md similarity index 94% rename from content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/reverting-a-pull-request.md rename to content/pull-requests/how-tos/merge-and-close-pull-requests/reverting-a-pull-request.md index c4f785e16a57..abe9a9985a12 100644 --- a/content/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/reverting-a-pull-request.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/reverting-a-pull-request.md @@ -6,12 +6,14 @@ redirect_from: - /github/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/reverting-a-pull-request - /articles/reverting-a-pull-request - /github/collaborating-with-issues-and-pull-requests/reverting-a-pull-request + - /pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/reverting-a-pull-request versions: fpt: '*' ghes: '*' ghec: '*' category: - Merge and close pull requests +contentType: how-tos --- ## About reverting a pull request diff --git a/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/troubleshooting-required-status-checks.md similarity index 97% rename from content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks.md rename to content/pull-requests/how-tos/merge-and-close-pull-requests/troubleshooting-required-status-checks.md index e0d4dc98112f..f271d656a90f 100644 --- a/content/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/troubleshooting-required-status-checks.md @@ -10,9 +10,11 @@ redirect_from: - /github/administering-a-repository/troubleshooting-required-status-checks - /github/administering-a-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks - /repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks + - /pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks shortTitle: Required status checks category: - Merge and close pull requests +contentType: how-tos --- For an overview of how status checks work, including the difference between checks and commit statuses, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks). diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews.md b/content/pull-requests/how-tos/review-pull-requests/approving-a-pull-request-with-required-reviews.md similarity index 87% rename from content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews.md rename to content/pull-requests/how-tos/review-pull-requests/approving-a-pull-request-with-required-reviews.md index ec057fd234d1..70a811af64f5 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews.md +++ b/content/pull-requests/how-tos/review-pull-requests/approving-a-pull-request-with-required-reviews.md @@ -1,11 +1,12 @@ --- title: Approving a pull request with required reviews -intro: 'If your repository requires reviews, pull requests must have a specific number of approving reviews from people with _write_ or _admin_ permissions in the repository before they can be merged.' +intro: If your repository requires reviews, pull requests must have a specific number of approving reviews from people with _write_ or _admin_ permissions in the repository before they can be merged. redirect_from: - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews - /articles/approving-a-pull-request-with-required-reviews - /github/collaborating-with-issues-and-pull-requests/approving-a-pull-request-with-required-reviews - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews + - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews versions: fpt: '*' ghes: '*' @@ -13,6 +14,7 @@ versions: shortTitle: Required reviews category: - Review pull requests +contentType: how-tos --- For more information about required reviews, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-pull-request-reviews-before-merging). diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally.md b/content/pull-requests/how-tos/review-pull-requests/checking-out-pull-requests-locally.md similarity index 93% rename from content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally.md rename to content/pull-requests/how-tos/review-pull-requests/checking-out-pull-requests-locally.md index 925c57de7170..9e187caa16f2 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally.md +++ b/content/pull-requests/how-tos/review-pull-requests/checking-out-pull-requests-locally.md @@ -1,11 +1,12 @@ --- title: Checking out pull requests locally -intro: 'When someone sends you a pull request from a fork or branch of your repository, you can merge it locally to resolve a merge conflict or to test and verify the changes before merging on {% data variables.product.github %}.' +intro: When someone sends you a pull request from a fork or branch of your repository, you can merge it locally to resolve a merge conflict or to test and verify the changes before merging on {% data variables.product.github %}. redirect_from: - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally - /articles/checking-out-pull-requests-locally - /github/collaborating-with-issues-and-pull-requests/checking-out-pull-requests-locally - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally + - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally versions: fpt: '*' ghes: '*' @@ -13,6 +14,7 @@ versions: shortTitle: Check out a PR locally category: - Review pull requests +contentType: how-tos --- > [!NOTE] diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request.md b/content/pull-requests/how-tos/review-pull-requests/commenting-on-a-pull-request.md similarity index 93% rename from content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request.md rename to content/pull-requests/how-tos/review-pull-requests/commenting-on-a-pull-request.md index 5d2a3bc8272c..616cf6f43615 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request.md +++ b/content/pull-requests/how-tos/review-pull-requests/commenting-on-a-pull-request.md @@ -8,7 +8,8 @@ redirect_from: - /articles/commenting-on-a-pull-request - /github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request -intro: 'After you open a pull request in a repository, collaborators or team members can comment on the comparison of files between the two specified branches, or leave general comments on the project as a whole.' + - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request +intro: After you open a pull request in a repository, collaborators or team members can comment on the comparison of files between the two specified branches, or leave general comments on the project as a whole. versions: fpt: '*' ghes: '*' @@ -16,6 +17,7 @@ versions: shortTitle: Comment on a PR category: - Review pull requests +contentType: how-tos --- ## About pull request comments diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/dismissing-a-pull-request-review.md b/content/pull-requests/how-tos/review-pull-requests/dismissing-a-pull-request-review.md similarity index 88% rename from content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/dismissing-a-pull-request-review.md rename to content/pull-requests/how-tos/review-pull-requests/dismissing-a-pull-request-review.md index f6be571a75a7..d7c925c2c585 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/dismissing-a-pull-request-review.md +++ b/content/pull-requests/how-tos/review-pull-requests/dismissing-a-pull-request-review.md @@ -1,11 +1,12 @@ --- title: Dismissing a pull request review -intro: 'If your repository requires reviews, you can dismiss pull request reviews that are no longer valid or are unable to be approved by the reviewer.' +intro: If your repository requires reviews, you can dismiss pull request reviews that are no longer valid or are unable to be approved by the reviewer. redirect_from: - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/dismissing-a-pull-request-review - /articles/dismissing-a-pull-request-review - /github/collaborating-with-issues-and-pull-requests/dismissing-a-pull-request-review - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/dismissing-a-pull-request-review + - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/dismissing-a-pull-request-review versions: fpt: '*' ghes: '*' @@ -13,6 +14,7 @@ versions: shortTitle: Dismiss a PR review category: - Review pull requests +contentType: how-tos --- {% data reusables.pull_requests.dismiss_review %} Dismissing a review changes the status of the review to a review comment. When you dismiss a review, you must add a comment explaining why you dismissed it. Your comment will be added to the pull request conversation. diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request.md b/content/pull-requests/how-tos/review-pull-requests/filtering-files-in-a-pull-request.md similarity index 91% rename from content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request.md rename to content/pull-requests/how-tos/review-pull-requests/filtering-files-in-a-pull-request.md index cdab577313f6..621cf92c1e9a 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request.md +++ b/content/pull-requests/how-tos/review-pull-requests/filtering-files-in-a-pull-request.md @@ -1,12 +1,13 @@ --- title: Filtering files in a pull request -intro: 'To help you quickly review changes in a large pull request, you can filter changed files or use the file tree to navigate between files.' +intro: To help you quickly review changes in a large pull request, you can filter changed files or use the file tree to navigate between files. redirect_from: - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request - /articles/filtering-files-in-a-pull-request-by-file-type - /articles/filtering-files-in-a-pull-request - /github/collaborating-with-issues-and-pull-requests/filtering-files-in-a-pull-request - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request + - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request versions: fpt: '*' ghes: '*' @@ -14,6 +15,7 @@ versions: shortTitle: Filter files category: - Review pull requests +contentType: how-tos --- You can filter files in a pull request by file extension type, such as `.html` or `.js`, lack of an extension, code ownership, or dotfiles. You can also use the file tree to filter by file path, navigate between files, or see a high-level view of the changed files. diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md b/content/pull-requests/how-tos/review-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md similarity index 88% rename from content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md rename to content/pull-requests/how-tos/review-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md index 94679c764b09..86cfde8052c0 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md +++ b/content/pull-requests/how-tos/review-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md @@ -1,11 +1,12 @@ --- title: Finding changed methods and functions in a pull request -intro: 'You can quickly find proposed changes to a method or function in a pull request in *.go*, *.js*, *.ts*, *.py*, *.php*, and *.rb* files.' +intro: You can quickly find proposed changes to a method or function in a pull request in *.go*, *.js*, *.ts*, *.py*, *.php*, and *.rb* files. redirect_from: - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/finding-changed-methods-and-functions-in-a-pull-request - /articles/finding-changed-methods-and-functions-in-a-pull-request - /github/collaborating-with-issues-and-pull-requests/finding-changed-methods-and-functions-in-a-pull-request - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/finding-changed-methods-and-functions-in-a-pull-request + - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/finding-changed-methods-and-functions-in-a-pull-request versions: fpt: '*' ghes: '*' @@ -13,6 +14,7 @@ versions: shortTitle: Methods & functions category: - Review pull requests +contentType: how-tos --- Anyone with read access to a repository can see a summary list of the function and method changes in certain files of a pull request. diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request.md b/content/pull-requests/how-tos/review-pull-requests/incorporating-feedback-in-your-pull-request.md similarity index 92% rename from content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request.md rename to content/pull-requests/how-tos/review-pull-requests/incorporating-feedback-in-your-pull-request.md index f291befb30ca..165d3f723b67 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request.md +++ b/content/pull-requests/how-tos/review-pull-requests/incorporating-feedback-in-your-pull-request.md @@ -1,11 +1,12 @@ --- title: Incorporating feedback in your pull request -intro: 'When reviewers suggest changes in a pull request, you can automatically incorporate the changes into the pull request or open an issue to track out-of-scope suggestions.' +intro: When reviewers suggest changes in a pull request, you can automatically incorporate the changes into the pull request or open an issue to track out-of-scope suggestions. redirect_from: - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request - /articles/incorporating-feedback-in-your-pull-request - /github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request + - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request versions: fpt: '*' ghes: '*' @@ -13,6 +14,7 @@ versions: shortTitle: Incorporate feedback category: - Review pull requests +contentType: how-tos --- ## Applying suggested changes diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/index.md b/content/pull-requests/how-tos/review-pull-requests/index.md similarity index 76% rename from content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/index.md rename to content/pull-requests/how-tos/review-pull-requests/index.md index c043af16f8d9..5159c13a3a53 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/index.md +++ b/content/pull-requests/how-tos/review-pull-requests/index.md @@ -1,27 +1,28 @@ --- -title: Reviewing changes in pull requests +title: Review pull requests redirect_from: + - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests - /articles/reviewing-and-discussing-changes-in-pull-requests - /articles/reviewing-changes-in-pull-requests - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests -intro: 'After a pull request has been opened, you can review and discuss the set of proposed changes.' +shortTitle: Review pull requests +intro: Review proposed changes, comment, approve, and manage reviews on pull requests. versions: fpt: '*' ghes: '*' ghec: '*' children: - - /about-pull-request-reviews - - /reviewing-proposed-changes-in-a-pull-request - - /filtering-files-in-a-pull-request - /finding-changed-methods-and-functions-in-a-pull-request - - /commenting-on-a-pull-request - - /viewing-a-pull-request-review + - /filtering-files-in-a-pull-request + - /reviewing-proposed-changes-in-a-pull-request - /reviewing-dependency-changes-in-a-pull-request - - /incorporating-feedback-in-your-pull-request - - /approving-a-pull-request-with-required-reviews - - /dismissing-a-pull-request-review - /checking-out-pull-requests-locally -shortTitle: Review changes + - /viewing-a-pull-request-review + - /commenting-on-a-pull-request + - /dismissing-a-pull-request-review + - /approving-a-pull-request-with-required-reviews + - /incorporating-feedback-in-your-pull-request +contentType: how-tos --- diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request.md b/content/pull-requests/how-tos/review-pull-requests/reviewing-dependency-changes-in-a-pull-request.md similarity index 97% rename from content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request.md rename to content/pull-requests/how-tos/review-pull-requests/reviewing-dependency-changes-in-a-pull-request.md index 8f846d74f0d1..fdb7cb38fa3d 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request.md +++ b/content/pull-requests/how-tos/review-pull-requests/reviewing-dependency-changes-in-a-pull-request.md @@ -10,6 +10,7 @@ redirect_from: - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request - /github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request + - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request shortTitle: Review dependency changes contentType: how-tos category: diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request.md b/content/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request.md similarity index 97% rename from content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request.md rename to content/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request.md index 15c23ffc8c4e..871f46760e88 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request.md +++ b/content/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request.md @@ -1,11 +1,12 @@ --- title: Reviewing proposed changes in a pull request -intro: 'In a pull request, you can review and discuss commits, changed files, and the differences (or "diff") between the files in the base and compare branches.' +intro: In a pull request, you can review and discuss commits, changed files, and the differences (or "diff") between the files in the base and compare branches. redirect_from: - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request - /articles/reviewing-proposed-changes-in-a-pull-request - /github/collaborating-with-issues-and-pull-requests/reviewing-proposed-changes-in-a-pull-request - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request + - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request versions: fpt: '*' ghes: '*' @@ -13,6 +14,7 @@ versions: shortTitle: Review proposed changes category: - Review pull requests +contentType: how-tos --- ## About reviewing pull requests diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/viewing-a-pull-request-review.md b/content/pull-requests/how-tos/review-pull-requests/viewing-a-pull-request-review.md similarity index 91% rename from content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/viewing-a-pull-request-review.md rename to content/pull-requests/how-tos/review-pull-requests/viewing-a-pull-request-review.md index 7380dd83c99b..d5f96566d693 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/viewing-a-pull-request-review.md +++ b/content/pull-requests/how-tos/review-pull-requests/viewing-a-pull-request-review.md @@ -6,6 +6,7 @@ redirect_from: - /articles/viewing-a-pull-request-review - /github/collaborating-with-issues-and-pull-requests/viewing-a-pull-request-review - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/viewing-a-pull-request-review + - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/viewing-a-pull-request-review versions: fpt: '*' ghes: '*' @@ -13,6 +14,7 @@ versions: shortTitle: View a PR review category: - Review pull requests +contentType: how-tos --- {% data reusables.search.requested_reviews_search %} diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md b/content/pull-requests/how-tos/work-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md similarity index 91% rename from content/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md rename to content/pull-requests/how-tos/work-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md index d1d47f3b617f..5d93d5065e29 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md +++ b/content/pull-requests/how-tos/work-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md @@ -1,11 +1,12 @@ --- title: Allowing changes to a pull request branch created from a fork -intro: 'For greater collaboration, you can allow commits on branches you''ve created from forks in your personal account.' +intro: For greater collaboration, you can allow commits on branches you've created from forks in your personal account. redirect_from: - /github/collaborating-with-issues-and-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork - /articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork - /github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork - /github/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork + - /pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork permissions: People with push access to the upstream repository of a fork in a personal account can commit to the forked branches. versions: fpt: '*' @@ -14,6 +15,7 @@ versions: shortTitle: Allow changes to a branch category: - Work with forks +contentType: how-tos --- When someone creates a pull request from their fork, they usually decide whether other people can commit to the pull request's compare branch. For greater collaboration, the author can give maintainers of the upstream repository—that is, anyone with push access to the upstream repository—permission to commit to the compare branch. To learn more about upstream repositories, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks). diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/configuring-a-remote-repository-for-a-fork.md b/content/pull-requests/how-tos/work-with-forks/configuring-a-remote-repository-for-a-fork.md similarity index 79% rename from content/pull-requests/collaborating-with-pull-requests/working-with-forks/configuring-a-remote-repository-for-a-fork.md rename to content/pull-requests/how-tos/work-with-forks/configuring-a-remote-repository-for-a-fork.md index 8aa85c3f1785..bb6e1afef5dc 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/configuring-a-remote-repository-for-a-fork.md +++ b/content/pull-requests/how-tos/work-with-forks/configuring-a-remote-repository-for-a-fork.md @@ -1,12 +1,13 @@ --- title: Configuring a remote repository for a fork -intro: 'You must configure a remote that points to the upstream repository in Git to [sync changes you make in a fork](/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork) with the original repository. This also allows you to sync changes made in the original repository with the fork.' +intro: You must configure a remote that points to the upstream repository in Git to [sync changes you make in a fork](/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork) with the original repository. This also allows you to sync changes made in the original repository with the fork. redirect_from: - /github/collaborating-with-issues-and-pull-requests/working-with-forks/configuring-a-remote-for-a-fork - /articles/configuring-a-remote-for-a-fork - /github/collaborating-with-issues-and-pull-requests/configuring-a-remote-for-a-fork - /github/collaborating-with-pull-requests/working-with-forks/configuring-a-remote-for-a-fork - /github/collaborating-with-pull-requests/working-with-forks/configuring-a-remote-repository-for-a-fork + - /pull-requests/collaborating-with-pull-requests/working-with-forks/configuring-a-remote-repository-for-a-fork versions: fpt: '*' ghes: '*' @@ -14,6 +15,7 @@ versions: shortTitle: Configure a remote repository category: - Work with forks +contentType: how-tos --- {% data reusables.command_line.open_the_multi_os_terminal %} 1. List the remotes currently configured for your fork. diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/detaching-a-fork.md b/content/pull-requests/how-tos/work-with-forks/detaching-a-fork.md similarity index 96% rename from content/pull-requests/collaborating-with-pull-requests/working-with-forks/detaching-a-fork.md rename to content/pull-requests/how-tos/work-with-forks/detaching-a-fork.md index 7d425fd50f81..c6204456db9b 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/detaching-a-fork.md +++ b/content/pull-requests/how-tos/work-with-forks/detaching-a-fork.md @@ -8,6 +8,9 @@ versions: permissions: People with admin access for a forked repository can delete the forked repository. category: - Work with forks +redirect_from: + - /pull-requests/collaborating-with-pull-requests/working-with-forks/detaching-a-fork +contentType: how-tos --- ## Converting a fork into a standalone repository diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo.md b/content/pull-requests/how-tos/work-with-forks/fork-a-repo.md similarity index 98% rename from content/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo.md rename to content/pull-requests/how-tos/work-with-forks/fork-a-repo.md index b6cbd527c92a..abb95513f84a 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo.md +++ b/content/pull-requests/how-tos/work-with-forks/fork-a-repo.md @@ -8,6 +8,7 @@ redirect_from: - /github/getting-started-with-github/fork-a-repo - /github/getting-started-with-github/quickstart/fork-a-repo - /get-started/quickstart/fork-a-repo + - /pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo intro: Create a fork of a repository so you can make changes without affecting the upstream repository. permissions: '{% data reusables.enterprise-accounts.emu-permission-fork %}' versions: @@ -16,6 +17,7 @@ versions: ghec: '*' category: - Work with forks +contentType: how-tos --- ## About forks diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/index.md b/content/pull-requests/how-tos/work-with-forks/index.md similarity index 63% rename from content/pull-requests/collaborating-with-pull-requests/working-with-forks/index.md rename to content/pull-requests/how-tos/work-with-forks/index.md index 99d8093b3915..f3faed60ab14 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/index.md +++ b/content/pull-requests/how-tos/work-with-forks/index.md @@ -1,20 +1,22 @@ --- -title: Working with forks -intro: 'Forks are often used in open source development on {% data variables.product.github %}.' +title: Work with forks redirect_from: + - /pull-requests/collaborating-with-pull-requests/working-with-forks - /github/collaborating-with-issues-and-pull-requests/working-with-forks - /articles/working-with-forks - /github/collaborating-with-pull-requests/working-with-forks +shortTitle: Work with forks +intro: Fork repositories, sync forks, and manage changes to pull request branches created from forks. versions: fpt: '*' ghes: '*' ghec: '*' children: - - /about-forks - /fork-a-repo - - /about-permissions-and-visibility-of-forks - - /configuring-a-remote-repository-for-a-fork - - /syncing-a-fork - /allowing-changes-to-a-pull-request-branch-created-from-a-fork + - /configuring-a-remote-repository-for-a-fork - /detaching-a-fork + - /syncing-a-fork +contentType: how-tos --- + diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork.md b/content/pull-requests/how-tos/work-with-forks/syncing-a-fork.md similarity index 97% rename from content/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork.md rename to content/pull-requests/how-tos/work-with-forks/syncing-a-fork.md index 2c520cfbbb30..ce1660be2778 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork.md +++ b/content/pull-requests/how-tos/work-with-forks/syncing-a-fork.md @@ -11,6 +11,7 @@ redirect_from: - /articles/merging-an-upstream-repository-into-your-fork - /github/collaborating-with-issues-and-pull-requests/merging-an-upstream-repository-into-your-fork - /github/collaborating-with-pull-requests/working-with-forks/merging-an-upstream-repository-into-your-fork + - /pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork versions: fpt: '*' ghes: '*' @@ -18,6 +19,7 @@ versions: permissions: People with write access for a forked repository can sync the fork to the upstream repository. category: - Work with forks +contentType: how-tos --- ## Syncing a fork branch from the web UI diff --git a/content/pull-requests/index.md b/content/pull-requests/index.md index f29a33b89b91..506e1f3a92bb 100644 --- a/content/pull-requests/index.md +++ b/content/pull-requests/index.md @@ -1,20 +1,29 @@ --- title: Pull requests documentation +redirect_from: + - /pull-requests/collaborating-with-pull-requests + - /github/collaborating-with-issues-and-pull-requests + - /categories/63/articles + - /categories/collaborating + - /categories/collaborating-on-projects-using-pull-requests + - /categories/collaborating-on-projects-using-issues-and-pull-requests + - /categories/collaborating-with-issues-and-pull-requests + - /github/collaborating-with-pull-requests intro: 'Learn how to use pull requests to suggest changes to a project, receive suggested changes to your own projects, and address issues in pull requests, such as merge conflicts.' introLinks: - overview: /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests + overview: /pull-requests/concepts/about-pull-requests layout: discovery-landing carousels: recommended: - - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests - - /pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models - - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request - - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request - - /pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request - - /pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github - - /pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo - - /pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork - - /pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits + - /pull-requests/concepts/about-pull-requests + - /pull-requests/concepts/about-branches + - /pull-requests/how-tos/create-pull-requests/creating-a-pull-request + - /pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request + - /pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request + - /pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github + - /pull-requests/how-tos/work-with-forks/fork-a-repo + - /pull-requests/how-tos/work-with-forks/syncing-a-fork + - /pull-requests/concepts/about-commits includedCategories: - Create pull requests - Review pull requests @@ -27,7 +36,9 @@ versions: ghec: '*' ghes: '*' children: - - /committing-changes-to-your-project - - /collaborating-with-pull-requests + - /concepts + - /how-tos + - /reference +contentType: landing --- diff --git a/content/pull-requests/reference/index.md b/content/pull-requests/reference/index.md new file mode 100644 index 000000000000..b38249ab35d5 --- /dev/null +++ b/content/pull-requests/reference/index.md @@ -0,0 +1,13 @@ +--- +title: Reference for pull requests +shortTitle: Reference +intro: Look up specific information for working with pull requests. +versions: + fpt: '*' + ghes: '*' + ghec: '*' +children: + - /using-query-parameters-to-create-a-pull-request +contentType: reference +--- + diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request.md b/content/pull-requests/reference/using-query-parameters-to-create-a-pull-request.md similarity index 95% rename from content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request.md rename to content/pull-requests/reference/using-query-parameters-to-create-a-pull-request.md index 50a87dc9243d..6095e9e044ba 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request.md +++ b/content/pull-requests/reference/using-query-parameters-to-create-a-pull-request.md @@ -3,12 +3,14 @@ title: Using query parameters to create a pull request intro: Use query parameters to create custom URLs to open pull requests with pre-populated fields. redirect_from: - /github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request + - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request versions: fpt: '*' ghes: '*' ghec: '*' category: - Create pull requests +contentType: reference --- You can use query parameters to open pull requests. Query parameters are optional parts of a URL that you can customize to share a specific web page view, such as search filter results or a pull request template on {% data variables.product.prodname_dotcom %}. diff --git a/src/frame/tests/page.ts b/src/frame/tests/page.ts index 5bde34f72e1d..4d13313627b4 100644 --- a/src/frame/tests/page.ts +++ b/src/frame/tests/page.ts @@ -27,8 +27,7 @@ const enterpriseServerVersions = Object.keys(allVersions).filter((v) => const nonEnterpriseDefaultPlan = nonEnterpriseDefaultVersion.split('@')[0] const opts = { - relativePath: - 'pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches.md', + relativePath: 'pull-requests/concepts/about-branches.md', basePath: path.join(__dirname, '../../../content'), languageCode: 'en', } @@ -202,8 +201,7 @@ describe('Page class', () => { test('sets versioned values', async () => { const page = await Page.init(opts) - const expectedPath = - 'pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches' + const expectedPath = 'pull-requests/concepts/about-branches' expect( page!.permalinks.find((permalink) => permalink.pageVersion === nonEnterpriseDefaultVersion)! .href, diff --git a/src/redirects/tests/redirects.ts b/src/redirects/tests/redirects.ts index 4e2222b17503..0d46a5aa6516 100644 --- a/src/redirects/tests/redirects.ts +++ b/src/redirects/tests/redirects.ts @@ -17,8 +17,7 @@ describe('redirects', () => { test('page.buildRedirects() returns an array', async () => { const page = await Page.init({ - relativePath: - 'pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches.md', + relativePath: 'pull-requests/concepts/about-branches.md', basePath: path.join(__dirname, '../../../content'), languageCode: 'en', }) @@ -312,7 +311,7 @@ describe('redirects', () => { }) describe('enterprise user article', () => { - const userArticle = `/en/enterprise-server@${enterpriseServerReleases.latest}/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo` + const userArticle = `/en/enterprise-server@${enterpriseServerReleases.latest}/pull-requests/how-tos/work-with-forks/fork-a-repo` test('no product redirects to GitHub.com product on the latest version', async () => { const res = await get( @@ -344,7 +343,7 @@ describe('redirects', () => { }) describe('enterprise user article with frontmatter redirect', () => { - const userArticle = `/en/enterprise-server@${enterpriseServerReleases.latest}/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo` + const userArticle = `/en/enterprise-server@${enterpriseServerReleases.latest}/pull-requests/how-tos/work-with-forks/fork-a-repo` const redirectFromPath = '/articles/fork-a-repo' test('redirects to expected article', async () => { From c588e70a9a547ad22c79ed4b307d16ab34d0b165 Mon Sep 17 00:00:00 2001 From: Jenni C <97056108+dihydroJenoxide@users.noreply.github.com> Date: Tue, 21 Jul 2026 02:49:17 +0000 Subject: [PATCH 06/17] Align pull-requests content to EDI content types (#62018) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../pull-requests/concepts/about-branches.md | 70 ++-------- .../pull-requests/concepts/about-commits.md | 23 +--- content/pull-requests/concepts/about-forks.md | 125 ++++++------------ .../concepts/about-merge-conflicts.md | 13 +- .../concepts/about-pull-request-merges.md | 54 +++----- .../concepts/about-pull-request-reviews.md | 12 +- .../concepts/about-pull-requests.md | 37 ++---- .../concepts/about-status-checks.md | 76 +++-------- .../helping-others-review-your-changes.md | 58 +++----- ...anaging-and-standardizing-pull-requests.md | 28 ++-- .../working-with-pre-receive-hooks.md | 9 +- .../changing-a-commit-message.md | 80 +++-------- .../commit-changes/comparing-commits.md | 68 ++++------ ...creating-a-commit-with-multiple-authors.md | 54 ++------ .../commit-changes/troubleshooting-commits.md | 102 +++++--------- ...pull-request-branch-created-from-a-fork.md | 61 ++------- .../creating-a-pull-request-from-a-fork.md | 10 +- .../creating-a-pull-request.md | 13 +- ...eleting-branches-within-your-repository.md | 12 +- ...ll-request-in-sync-with-the-base-branch.md | 17 +-- .../requesting-a-pull-request-review.md | 15 +-- .../automatically-merging-a-pull-request.md | 8 +- ...rging-a-pull-request-with-a-merge-queue.md | 7 +- .../merging-a-pull-request.md | 19 ++- .../resolving-a-merge-conflict-on-github.md | 22 +-- ...a-merge-conflict-using-the-command-line.md | 18 +-- .../reverting-a-pull-request.md | 9 +- .../troubleshooting-required-status-checks.md | 57 ++++---- .../commenting-on-a-pull-request.md | 4 +- ...wing-proposed-changes-in-a-pull-request.md | 2 +- ...ery-parameters-to-create-a-pull-request.md | 29 ++-- 31 files changed, 350 insertions(+), 762 deletions(-) diff --git a/content/pull-requests/concepts/about-branches.md b/content/pull-requests/concepts/about-branches.md index 58538ba77194..9154cae7f980 100644 --- a/content/pull-requests/concepts/about-branches.md +++ b/content/pull-requests/concepts/about-branches.md @@ -21,6 +21,7 @@ category: - Create pull requests contentType: concepts --- + ## About branches Branches let you develop features, fix bugs, or safely experiment with new ideas in a contained area of your repository. @@ -45,76 +46,37 @@ By default, {% data variables.product.github %} names the default branch `main` ## Working with branches -Once you're satisfied with your work, you can open a pull request to merge the changes in the current branch (the _head_ branch) into another branch (the _base_ branch). For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests). +Branches are usually short-lived. After you finish work on a branch, you can open a pull request to discuss and merge the changes from the head branch into the base branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests). -After a pull request has been merged or closed, you can delete the head branch because it's no longer needed. You must have write access in the repository to delete branches. You can't delete branches that are directly associated with open pull requests. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/deleting-and-restoring-branches-in-a-pull-request). +After a pull request has been merged or closed, the head branch is often no longer needed. Deleting unused branches keeps a repository easier to navigate. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/deleting-and-restoring-branches-in-a-pull-request). {% data reusables.pull_requests.retargeted-on-branch-deletion %} -The following diagrams illustrate this. - -In the first diagram, someone has created a branch called `feature1` from the `main` branch, and then you created a branch called `feature2` from `feature1`. There are open pull requests for both branches. The arrows indicate the current base branch for each pull request. At this point, `feature1` is the base branch for `feature2`. If the pull request for `feature2` is merged now, the `feature2` branch will be merged into `feature1`. - -![Diagram that shows a feature1 branch with a pull request targeting main, and a feature2 branch with a pull request targeting feature1.](/assets/images/help/branches/pr-retargeting-diagram1.png) -In the next diagram, someone has merged the pull request for `feature1` into the `main` branch and deleted the `feature1` branch. As a result, {% data variables.product.prodname_dotcom %} has automatically retargeted the pull request for `feature2` so that its base branch is now `main`. - -![Diagram that shows both feature1 and feature2 branches with pull requests targeting main.](/assets/images/help/branches/pr-retargeting-diagram2.png) - -Now, when you merge the `feature2` pull request, it'll be merged into the `main` branch. +For example, if one pull request targets a feature branch and that feature branch is later merged and deleted, {% data variables.product.prodname_dotcom %} may update the remaining pull request so that it targets the merged branch's base branch instead. ## Working with protected branches -Repository administrators or custom roles with the "edit repository rules" permission can enable protections on a branch. If you're working on a branch that's protected, you won't be able to delete or force push to the branch. Repository administrators can also enable other protected branch settings to enforce workflows before a branch can be merged. +Protected branches help maintainers enforce rules on important branches. A protected branch can block force pushes or deletion, require status checks, require reviews, require code owner approval, or require signed commits before changes can merge. + +These protections help teams keep important branches stable and make expectations clear before a pull request is merged. To see whether your pull request can be merged, check the merge box at the bottom of the pull request's **Conversation** tab. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). > [!NOTE] > If you're a repository administrator, you can merge pull requests on branches with branch protections enabled even if the pull request does not meet the requirements, unless branch protections have been set to "Include administrators." -To see if your pull request can be merged, look in the merge box at the bottom of the pull request's **Conversation** tab. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). - -When a branch is protected: - -* You can't delete or force push to the branch. -* If required status checks are enabled on the branch, you can't merge changes into the branch until all of the required CI tests pass. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks). -* If required pull request reviews are enabled on the branch, you can't merge changes into the branch until all requirements in the pull request review policy have been met. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request). -* If required review from a code owner is enabled on a branch and a pull request modifies code that has an owner, a code owner must approve the pull request before it can be merged. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners). -* If required commit signing is enabled on a branch, you can't push any commits to the branch that are not signed and verified. For more information, see [AUTOTITLE](/authentication/managing-commit-signature-verification/about-commit-signature-verification) and [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-signed-commits). -* If you use {% data variables.product.prodname_dotcom %}'s conflict editor to fix conflicts for a pull request that you created from a protected branch, {% data variables.product.prodname_dotcom %} helps you create an alternative branch for the pull request so that your conflict resolution can be merged. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github). - ## Comparing branches in pull requests > [!NOTE] > When you create your pull request, you can change the base branch that you're comparing your changes against. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request#changing-the-branch-range-and-destination-repository). -You can view proposed changes in a pull request in the Files changed tab. -![Screenshot of the tabs for a pull request. The "Files changed" tab is outlined in dark orange.](/assets/images/help/pull_requests/pull-request-tabs-changed-files.png) - -Instead of viewing the commits themselves, you can view the proposed changes as they'll appear in the files once the pull request is merged. The files appear in alphabetical order within the Files changed tab. Additions to the files appear in green and are marked by a `+` sign. Content that has been removed appears in red and is marked by a `-` sign. +A pull request compares the proposed changes on the head branch with the base branch. The **Files changed** tab shows what would change if the pull request merged. -### Diff view options - -> [!TIP] -> If you're having trouble understanding the context of a change, you can click **View** in the Files changed tab to view the whole file with the proposed changes. - -You have several options for viewing a diff: -* The unified view shows updated and existing content together in a linear view. -* The split view shows old content on one side and new content on the other side. -* The rich diff view shows a preview of how the changes will look once the pull request is merged. -* The source view shows the changes in source without the formatting of the rich diff view. +![Screenshot of the tabs for a pull request. The "Files changed" tab is outlined in dark orange.](/assets/images/help/pull_requests/pull-request-tabs-changed-files.png) -You can also choose to ignore whitespace changes to get a more accurate view of the meaningful changes in a pull request. +Diff views help reviewers understand the changes without reading every commit. You can view a unified diff, split diff, rich diff, or source diff; ignore whitespace changes; or filter files to focus on the most relevant changes. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request). ![Screenshot of the "Files changed" tab for a pull request. The "Diff view" menu is outlined in dark orange.](/assets/images/help/pull_requests/diff-settings-menu.png) -To simplify reviewing changes in a large pull request, filter the diff to show only selected file types, show files you are a CODEOWNER of, hide files you have already viewed, or hide deleted files. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request). - -![Screenshot of the file filter dropdown menu. The menu is expanded and outlined in dark orange.](/assets/images/help/pull_requests/file-filter-menu.png) - -You can also use the diff view to see which dependencies you are introducing or changing with your pull request, and whether the dependency versions contain security vulnerabilities. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request#reviewing-dependencies-in-a-pull-request). - -### Reasons diffs will not display - -* You've exceeded the total limit of files or certain file types. For more information, see [AUTOTITLE](/repositories/creating-and-managing-repositories/repository-limits#diff-limits). -* Your file matches a rule in the repository's _.gitattributes_ file to block that file from displaying by default. For more information, see [AUTOTITLE](/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github). +Diffs may not display if a pull request exceeds repository diff limits or if a file is hidden by a rule in the repository's _.gitattributes_ file. For more information, see [AUTOTITLE](/repositories/creating-and-managing-repositories/repository-limits#diff-limits) and [AUTOTITLE](/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github). ### Three-dot and two-dot Git diff comparisons @@ -128,23 +90,17 @@ The three-dot comparison shows the difference between the most recent common com The two-dot comparison shows the difference between the most recent state of the base branch (for example, `main`) and the most recent version of the topic branch. -To see two committish references in a two-dot diff comparison on {% data variables.product.prodname_dotcom %}, you can edit the URL of your repository's "Comparing changes" page. For more information, see the [Git Glossary for "committish"](https://git-scm.com/docs/gitglossary#gitglossary-aiddefcommit-ishacommit-ishalsocommittish) on the _Pro Git_ book site. - -{% data reusables.repositories.two-dot-diff-comparison-example-urls %} - A two-dot diff compares two Git committish references, such as SHAs or OIDs (Object IDs), directly with each other. On {% data variables.product.prodname_dotcom %}, the Git committish references in a two-dot diff comparison must be pushed to the same repository or its forks. -If you want to simulate a two-dot diff in a pull request and see a comparison between the most recent versions of each branch, you can merge the base branch into your topic branch, which updates the last common ancestor between your branches. - For more information about Git commands to compare changes, see [Git diff options](https://git-scm.com/docs/git-diff#git-diff-emgitdiffemltoptionsgtltcommitgtltcommitgt--ltpathgt82308203) from the _Pro Git_ book site. ### About three-dot comparison on {% data variables.product.prodname_dotcom %} Because the three-dot comparison uses the merge base, it focuses on "what a pull request introduces." -When you use a two-dot comparison, the diff changes when the base branch is updated, even if you haven't made any changes to the topic branch. Additionally, a two-dot comparison focuses on the base branch. This means that anything you add is displayed as missing from the base branch, as if it was a deletion, and vice versa. As a result, the changes the topic branch introduces become ambiguous. +When you use a two-dot comparison, the diff changes when the base branch is updated, even if you haven't made any changes to the topic branch. A two-dot comparison also focuses on the base branch, which can make the changes introduced by the topic branch harder to understand. -In contrast, when you compare the branches using the three-dot comparison, changes in the topic branch are always in the diff if the base branch is updated, because the diff shows all of the changes since the branches diverged. +In contrast, a three-dot comparison keeps showing the changes introduced by the topic branch since the branches diverged. #### Merging often diff --git a/content/pull-requests/concepts/about-commits.md b/content/pull-requests/concepts/about-commits.md index 895046d5fa4f..1bd61441c0c7 100644 --- a/content/pull-requests/concepts/about-commits.md +++ b/content/pull-requests/concepts/about-commits.md @@ -31,14 +31,9 @@ Rebasing lets you change a series of commits and can change the order of the com ## About commit branches and tag labels -You can see which branch a commit is on by looking at the labels beneath the commit on the commit page. +Commit pages can show labels for branches and tags that contain the commit. These labels help you understand where a commit appears in the repository history. -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.navigate-to-commit-page %} -{% data reusables.repositories.navigate-to-commit %} -1. To see what branch the commit is on, check the label below the commit message. - - ![Screenshot of a commit summary. A branch icon and "main" are highlighted with an orange outline.](/assets/images/help/commits/commit-branch-indicator.png) +![Screenshot of a commit summary. A branch icon and "main" are highlighted with an orange outline.](/assets/images/help/commits/commit-branch-indicator.png) If your commit is not on the default branch (`main`), the label will show the branches which contain the commit. If the commit is part of an unmerged pull request, you can click the link to go to the pull request. @@ -48,18 +43,12 @@ Once the commit is on the default branch, any tags that contain the commit will ## Using the file tree -You can use the file tree to navigate between files in a commit. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.navigate-to-commit-page %} -{% data reusables.repositories.navigate-to-commit %} -1. Click a file in the file tree to view the corresponding file diff. If the file tree is hidden, click {% octicon "sidebar-collapse" aria-label="The sidebar collapse icon" %} to display the file tree. +The file tree helps you navigate between files in a commit and focus on the diffs that matter. You can select a file to view its diff or filter by file path when a commit changes many files. - > [!NOTE] - > The file tree will not display if your screen width is too narrow or if the commit only includes one file. +> [!NOTE] +> The file tree will not display if your screen width is too narrow or if the commit only includes one file. - ![Screenshot of the "Files changed" tab of a pull request. In the left sidebar, the file tree is outlined in dark orange.](/assets/images/help/repository/file-tree.png) -1. To filter by file path, enter part or all of the file path in the **Filter changed files** search box. +![Screenshot of the "Files changed" tab of a pull request. In the left sidebar, the file tree is outlined in dark orange.](/assets/images/help/repository/file-tree.png) ## Further reading diff --git a/content/pull-requests/concepts/about-forks.md b/content/pull-requests/concepts/about-forks.md index ea77409c8365..a9b5b1aa83d2 100644 --- a/content/pull-requests/concepts/about-forks.md +++ b/content/pull-requests/concepts/about-forks.md @@ -25,15 +25,26 @@ contentType: concepts ## About forks -Forks are like independent copies of repositories. Unlike branches, forks give you more freedom to experiment without affecting the original project. Unlike cloned or duplicated repositories, changes from forks can be merged back into the upstream repository with pull requests, similar to a branch. +Forks are repositories that start as copies of another repository, called the upstream repository. They let you make changes in your own space without affecting the original project. If the upstream repository accepts your changes, you can propose them with a pull request. + +Forks are useful when you want to: + +* Contribute to a project where you do not have write access +* Experiment with changes without affecting the upstream repository +* Explore a new direction that might become independent later +* Keep discussion, issues, and pull requests separate from the upstream project When you view a forked repository on {% data variables.product.github %}, the upstream repository is indicated below the name of the fork. ![Screenshot of a repository's page on GitHub. Below the name of the repository, "mona/docs", the text "forked from github/docs" is outlined in orange.](/assets/images/help/pull_requests/fork-path.png) +For instructions on creating a fork, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo). + ## What makes forks distinct from branches -Each fork is a complete repository with its own: +A branch is part of one repository. A fork is a separate repository with its own settings and collaboration space. + +Each fork can have its own: * Branches * Members and discussions @@ -41,22 +52,19 @@ Each fork is a complete repository with its own: * Actions and projects * Tags, labels, and wikis +Because forks are separate repositories, they give contributors more independence than branches. Because they stay connected to the upstream repository, changes can still flow back through pull requests. + ## When to use a fork -A fork may fit your task better than a branch. A fork might be better: +A fork is often the best choice when you need independence from the upstream repository. This is common in open source projects, where contributors may not have write access to the upstream repository. -* To experiment safely without affecting the original project -* To create separate space for discussions unrelated to a project's main goals -* When you might want to make your work an independent repository later +A branch may be simpler when you are collaborating in a shared repository and already have permission to push branches. For more information about branches, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches). ## Which repositories can be forked? {% data reusables.repositories.you-can-fork %} -* If you fork a private repository that belongs to a personal account, external collaborators also get access to the fork. -* If you fork a private {% ifversion ghec or ghes %}or internal {% endif %}repository that belongs to an organization, teams within the organization get access to the fork, but external collaborators do not. -* {% ifversion ghes %} You can add an external collaborator to a fork of a private repository that belongs to an organization if you are an owner of that organization or if your organization allows repository administrators to invite external collaborators.{% endif %}{% ifversion fpt or ghec %} You can add an external collaborator to a fork of a private repository owned by an organization if you are an organization owner, or if your organization allows repository administrators to invite external collaborators, and the external collaborator also has access to the upstream repository.{% endif %} -{% ifversion ghec or ghes %} * You can add an external collaborator to a fork of an internal repository that belongs to an organization if the external collaborator also has access to the upstream repository.{% endif %} +Repository, organization, and enterprise policies can limit whether repositories can be forked and where forks can be created. For private{% ifversion ghec or ghes %} and internal{% endif %} repositories, access to forks also depends on repository visibility, organization membership, and administrator settings. {% ifversion fpt or ghec %} @@ -64,87 +72,41 @@ If you're a member of an {% data variables.enterprise.prodname_emu_enterprise %} {% endif %} -Organizations can allow or prevent the forking of any private repositories owned by the organization{% ifversion ghec or ghes %}. Enterprises can also enforce policies to specify where members can create forks of private or internal repositories. Policies control the options available to the enterprise's organizations{% endif %}. For more information, see [AUTOTITLE](/organizations/managing-organization-settings/managing-the-forking-policy-for-your-organization){% ifversion fpt %}.{% else %} and [AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-forking-private-or-internal-repositories).{% endif %} - +For more information about policy settings, see [AUTOTITLE](/organizations/managing-organization-settings/managing-the-forking-policy-for-your-organization){% ifversion fpt %}.{% else %} and [AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-forking-private-or-internal-repositories).{% endif %} ## About visibility of forks -A fork is a new repository that shares code and visibility settings with the upstream repository. All forks of public repositories are public. You cannot change the visibility of a fork. -All repositories belong to a repository network. A repository network contains the upstream repository, the upstream repository's direct forks, and all forks of those forks. All forks in the repository network have the same visibility setting. For more information, see [AUTOTITLE](/repositories/viewing-activity-and-data-for-your-repository/understanding-connections-between-repositories). +A fork's visibility is tied to the upstream repository's repository network. Public repository forks are public, and private repository forks are private.{% ifversion ghec or ghes %} Forks of internal repositories are private.{% endif %} You cannot change the visibility of a fork by itself. -Deleting a repository or changing its visibility settings affects the repository's forks. For more information, see [What happens to forks when a repository is deleted or changes visibility](#what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility). +All repositories in a repository network share the same visibility setting. A repository network includes the upstream repository, its forks, and forks of those forks. For more information, see [AUTOTITLE](/repositories/viewing-activity-and-data-for-your-repository/understanding-connections-between-repositories). -If you delete a fork, any code contributions from that fork remain accessible to the repository network. +Deleting a repository or changing its visibility can affect the network. If you delete a fork, code contributions from that fork can remain accessible to the repository network. ## What happens to forks when a repository is deleted or changes visibility {% data reusables.repositories.deleted_forks_from_private_repositories_warning %} -### Deleting a private repository - -When you delete a private repository, all of its private forks are also deleted. - -### Deleting a public repository +Visibility changes can separate forks into new repository networks so that existing fork owners can keep working without unexpected loss of access. -When you delete a public repository, the oldest active public fork is chosen to be the new upstream repository. All other repositories are forked from this new upstream, and subsequent pull requests go to this new upstream repository. +* When a private repository is deleted, its private forks are also deleted. +* When a public repository is deleted, an active public fork becomes the new upstream repository for the network. +* When a public repository is made private, its public forks stay public in a separate network. +* When a private repository is made public, private forks stay private but disconnect into separate private networks. +{% ifversion ghec or ghes %}* When an internal repository changes visibility, forks owned by organizations or personal accounts remain private.{% endif %} -### Changing a public repository to a private repository - -If a public repository is made private, its public forks are split off into a new network. As with deleting a public repository, one of the existing public forks is chosen to be the new upstream repository. All other repositories are forked from this new upstream, and subsequent pull requests go to this new upstream repository. - -In other words, a public repository's forks will remain public in their own separate repository network even after the upstream repository is made private. This allows the fork owners to continue to work and collaborate without interruption. If public forks were not moved into a separate network in this way, the owners of those forks would need to get the appropriate [access permissions](/get-started/learning-about-github/access-permissions-on-github) to pull changes from and submit pull requests to the (now private) upstream repository—even though they didn't need those permissions before. - -> [!WARNING] -> * Making a public repository private will permanently remove stars and watchers associated with users who will no longer have access to this repository. If you decide to make the repository public in the future, you cannot restore these stars and watchers, and this will affect its repository rankings. -> * Dependency graph and {% data variables.product.prodname_dependabot_alerts %} will remain enabled with permission to perform read-only analysis on this repository. Any custom {% data variables.product.prodname_dependabot %} alert rules will be disabled unless {% data variables.product.prodname_code_security %} is enabled for this repository. -> * {% data variables.product.prodname_code_scanning_caps %} will become unavailable unless {% data variables.product.prodname_code_security %} is enabled for this repository. -> * Current forks will remain public and will be detached from this repository. +Changing a public repository to private can also affect stars, watchers, dependency graph, {% data variables.product.prodname_dependabot_alerts %}, and {% data variables.product.prodname_code_scanning %} availability. Review repository visibility settings carefully before changing them. {% ifversion ghes %} -If a public repository has anonymous Git read access enabled and the repository is made private, all of the repository's forks will lose anonymous Git read access and return to the default disabled setting. If a forked repository is made public, repository administrators can re-enable anonymous Git read access. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/enabling-anonymous-git-read-access-for-a-repository). -{% endif %} - -#### Deleting the private repository - -If a public repository is made private and then deleted, its public forks will continue to exist in a separate network. - -### Changing a private repository to a public repository - -When a private repository is made public, all the commits in that repository become visible to everyone. This includes any commits previously pushed to private forks of that repository. - -Any previously created private forks will remain private but will become disconnected from the original repository that was made public. Each private fork will become a separate private repository and create its own independent network of repositories. Any new changes made to these networks will not be accessible from the original repository that was made public. - -#### Deleting the public repository - -If a private repository is made public and then deleted, its private forks will continue to exist as standalone private repositories in separate networks. - -{% ifversion ghes or ghec %} - -### Changing the visibility of an internal repository - -If the policy for your enterprise permits forking, any fork of an internal repository will be private. If you change the visibility of an internal repository, any fork owned by an organization or personal account will remain private. - -#### Deleting the internal repository - -If you change the visibility of an internal repository and then delete the repository, the forks will continue to exist in a separate network. - +If a public repository has anonymous Git read access enabled and the repository is made private, all of the repository's forks lose anonymous Git read access and return to the default disabled setting. If a forked repository is made public, repository administrators can re-enable anonymous Git read access. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/enabling-anonymous-git-read-access-for-a-repository). {% endif %} ## About permissions of forks {% data reusables.repositories.private_forks_inherit_permissions %} -Public forks do not inherit the permissions structure of the upstream repository. - -When you fork a public repository to your personal account, you can allow repository maintainers to push to your pull request branch. This includes giving them permission to make commits or delete the branch. - -This speeds up collaboration by letting maintainers: -* Make direct commits to your branch -* Run tests locally before merging - -You cannot give push permissions to a fork owned by an organization. +Public forks do not inherit the permissions structure of the upstream repository. Fork owners control access to their forks, but repository networks still share Git data. Commits pushed to any repository in a network can be accessible from other repositories in that network, including the upstream repository. -For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). +When you fork a public repository to your personal account, you can allow maintainers of the upstream repository to push to your pull request branch. This can help maintainers update your branch, run tests, or resolve small issues before merging. You cannot give push permissions to a fork owned by an organization. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). ### About push rulesets for forked repositories @@ -154,33 +116,28 @@ For more information, see [AUTOTITLE](/repositories/configuring-branches-and-mer ### Important security considerations -If you work with forks, or if you're the owner of a repository or organization that allows forking, it's important to be aware of the following security considerations. +Forks are powerful collaboration tools, but they can expose code and history in ways that are easy to overlook. * Forks have their own permissions separate from the upstream repository. -* The owners of a repository that has been forked have read permission to all forks in the repository's network. -* Organization owners of a repository that has been forked have admin permission to forks created in personal user namespaces, including the ability to delete the fork and its branches. -* Organization owners of a repository that has been forked have read permission to forks created in organizations, but do not have the ability to delete the fork or its branches. -* Forks created in another organization will not be deleted when individual access is removed from the upstream repository. -* Commits to any repository in a network can be accessed from any repository in the same network, including the upstream repository, even after a fork is deleted. +* Owners of an upstream repository can read all forks in the repository network. +* Organization owners may have administrative access to forks created in personal namespaces. +* Removing someone's access to the upstream repository does not always delete forks in other organizations. +* Commits can remain accessible in the repository network even after a fork is deleted. -### About forks within an organization +Before allowing forks for sensitive work, review the permissions and visibility model for your repository or organization. -Forks within the same organization copy the collaborators and team settings of their upstream repositories. If a repository is owned by an organization: +### About forks within an organization -* That organization controls the permissions of its forks. -* Any teams from the upstream permission structure that exist and are visible in the target organization or user namespace will have their permissions copied. -* Admin permissions remain with the upstream owner, except when a user forks into a different organization. -* If that repository is forked to a user namespace, the organization maintains admin permissions and any teams with access maintain access. +Forks within the same organization copy collaborator and team settings from the upstream repository. The organization controls permissions for these forks, and existing visible teams may keep access. {% ifversion ghec or ghes %} ### About forks within an enterprise -Internal repositories only support a single level of forking. You cannot fork a private fork of an internal repository. This is intentional to simplify access and management for internal repositories, which have enterprise-wide access. This differs from the behavior of public and private repositories, which allow nested forking. +Internal repositories support a single level of forking. You cannot fork a private fork of an internal repository. This keeps access and management simpler for repositories that are visible across an enterprise. {% endif %} ## Next steps For instructions on forking a repository, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo). - diff --git a/content/pull-requests/concepts/about-merge-conflicts.md b/content/pull-requests/concepts/about-merge-conflicts.md index 9725be98fdf1..1c9530918cdc 100644 --- a/content/pull-requests/concepts/about-merge-conflicts.md +++ b/content/pull-requests/concepts/about-merge-conflicts.md @@ -16,21 +16,22 @@ category: - Merge and close pull requests contentType: concepts --- + Git can often resolve differences between branches and merge them automatically. Usually, changes are on different lines or in different files, so Git can merge them without help. Sometimes, competing changes need your help. Merge conflicts often happen when people make different changes to the same line of the same file, or when one person edits a file and another person deletes the same file. -You must resolve all merge conflicts before you can merge a pull request on {% data variables.product.github %}. If your pull request has a merge conflict between the compare branch and base branch, you can view a list of the files with conflicting changes above the **Merge pull request** button. The **Merge pull request** button is deactivated until you've resolved all conflicts between the compare branch and base branch. +Merge conflicts block merging because Git cannot safely choose which version of the conflicting content to keep. You must resolve all merge conflicts before you can merge a pull request on {% data variables.product.github %}. If your pull request has a merge conflict between the compare branch and base branch, the **Merge pull request** button is deactivated until the conflicts are resolved. ## Resolving merge conflicts -To resolve a merge conflict, you must manually edit the conflicted file to select the changes that you want to keep in the final merge. There are a couple of different ways to resolve a merge conflict: +Resolving a merge conflict means choosing the final content that should appear after the branches are merged. The right tool depends on the type of conflict. -* If competing line changes cause your merge conflict, such as when people make different changes to the same line of the same file on different branches in your Git repository, you can resolve it on {% data variables.product.github %} using the conflict editor. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github). -* For all other types of merge conflicts, you must resolve the merge conflict in a local clone of the repository and push the change to your branch on {% data variables.product.github %}. You can use the command line or a tool like [{% data variables.product.prodname_desktop %}](https://desktop.github.com/) to push the change. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). +* Simple line conflicts can often be resolved on {% data variables.product.github %}. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github). +* More complex conflicts must be resolved in a local clone and pushed back to the pull request branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). {% ifversion copilot %} -* For any type of merge conflict, if you have access to {% data variables.copilot.copilot_cloud_agent %} and it is enabled for the repository, you can click **Fix with {% data variables.product.prodname_copilot_short %}** in the merge box to have {% data variables.product.prodname_copilot_short %} resolve the conflicts for you. {% data variables.product.prodname_copilot_short %} will analyze the conflicting changes, resolve the conflicts, and verify that the build, tests, and linter still pass. For more information, see [AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/make-changes-to-an-existing-pr#resolving-merge-conflicts). +* If you have access to {% data variables.copilot.copilot_cloud_agent %} and it is enabled for the repository, {% data variables.product.prodname_copilot_short %} can help resolve conflicts from the merge box. For more information, see [AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/make-changes-to-an-existing-pr#resolving-merge-conflicts). {% endif %} -If you have a merge conflict on the command line, you cannot push your local changes to {% data variables.product.github %} until you resolve the merge conflict locally on your computer. If you try to merge branches with a merge conflict on the command line, you'll get an error message. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). +On the command line, Git tells you when a merge cannot finish automatically. You cannot push the merged result until you resolve the conflict and commit the resolution. ```shell $ git merge BRANCH-NAME diff --git a/content/pull-requests/concepts/about-pull-request-merges.md b/content/pull-requests/concepts/about-pull-request-merges.md index 0e8950d5c02d..db8fbf56d41a 100644 --- a/content/pull-requests/concepts/about-pull-request-merges.md +++ b/content/pull-requests/concepts/about-pull-request-merges.md @@ -16,66 +16,50 @@ category: - Merge and close pull requests contentType: concepts --- + +Pull requests can be merged in different ways. The best strategy depends on how your team wants the repository history to look and how much detail you want to preserve from the pull request branch. + ## Merge your commits {% data reusables.pull_requests.default_merge_option %} +A merge commit preserves the full commit history from the pull request branch. This makes it easier to see every commit that led to the final change, including review fixes and intermediate work. It also creates an explicit merge point in the base branch history. + +Choose this strategy when your team values complete history or when the individual commits in a pull request are meaningful on their own. + ## Squash and merge your commits {% data reusables.pull_requests.squash_and_merge_summary %} -### Merge message for a squash merge - -When you squash and merge, {% data variables.product.prodname_dotcom %} generates a default commit message, which you can edit. Depending on how the repository is configured and the number of commits in the pull request, excluding merge commits, this message may include the pull request title, pull request description, or information about the commits. +Squashing turns all commits in the pull request into one commit on the base branch. This keeps the default branch history concise and can make it easier to scan later. The tradeoff is that intermediate commits from the pull request are not preserved as separate commits on the base branch. -| Number of commits | Summary | Description | -| ----------------- | ------- | ----------- | -| One commit | The title of the commit message for the single commit, followed by the pull request number | The body text of the commit message for the single commit | -| More than one commit | The pull request title, followed by the pull request number | A list of the commit messages for all of the squashed commits, in date order | +Choose this strategy when a pull request represents one logical change, especially if the branch includes many small fixup commits. -People with maintainer or admin access to a repository can configure their repository's default merge message for all squashed commits to use the pull request title, the pull request title and commit details, or the pull request title and description. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/configuring-commit-squashing-for-pull-requests). +### Merge message for a squash merge -### Squashing and merging a long-running branch +When you squash and merge, {% data variables.product.prodname_dotcom %} generates a default commit message that you can edit. The default message can include the pull request title, pull request description, or commit information, depending on repository settings and the number of commits in the pull request. -If you plan to continue work on the [head branch](/get-started/learning-about-github/github-glossary#head-branch) of a pull request after the pull request is merged, we recommend you don't squash and merge the pull request. +Maintainers and administrators can configure the default message for squashed commits. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/configuring-commit-squashing-for-pull-requests). -When you create a pull request, {% data variables.product.prodname_dotcom %} identifies the most recent commit that is on both the head branch and the [base branch](/get-started/learning-about-github/github-glossary#base-branch): the common ancestor commit. When you squash and merge the pull request, {% data variables.product.prodname_dotcom %} creates a commit on the base branch. This commit contains all of the changes you made on the head branch since the common ancestor commit. +### Squashing and merging a long-running branch -Because this commit is only on the base branch and not the head branch, the common ancestor of the two branches remains unchanged. If you continue to work on the head branch, then create a new pull request between the two branches, the pull request will include all of the commits since the common ancestor. This includes commits that you squashed and merged in the previous pull request. +Squash merging works best for short-lived branches. If you keep working on the same head branch after a squash merge, later pull requests can include commits that were already squashed into the base branch. This can make merge conflicts more likely and can force you to resolve the same conflicts more than once. -If there are no conflicts, you can safely merge these commits. However, this workflow makes merge conflicts more likely. If you continue to squash and merge pull requests for a long-running head branch, you will have to resolve the same conflicts repeatedly. +For long-running branches, consider using a merge commit or rebasing the branch before opening the next pull request. ## Rebase and merge your commits {% data reusables.pull_requests.rebase_and_merge_summary %} -You can't automatically rebase and merge when: -* The pull request has merge conflicts. -* Rebasing the commits from the base branch into the head branch runs into conflicts. -* Rebasing the commits is considered "unsafe," such as when a rebase is possible without merge conflicts but would produce a different result than a merge would. +Rebasing adds each commit from the pull request branch onto the base branch without creating a merge commit. This produces a linear history while preserving the individual commits from the pull request. -If you still want to rebase the commits but can't rebase and merge automatically, you must: -* Rebase the topic branch (or head branch) onto the base branch locally on the command line. -* [Resolve any merge conflicts on the command line](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). -* Force-push the rebased commits to the pull request's topic branch (or remote head branch). - -Anyone with write permissions in the repository can then [merge the changes](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request) using the rebase and merge button. +Choose this strategy when your team wants a linear history and the pull request commits are already organized clearly. If {% data variables.product.github %} cannot safely rebase the pull request automatically, you can rebase locally, resolve conflicts, and push the updated branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line) and [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request). ## Indirect merges -A pull request can be merged automatically if its head branch is directly or indirectly merged into the base branch externally. In other words, this happens if the head branch's tip commit becomes reachable from the tip of the target branch. For example: - -* Branch `main` is at commit **C**. -* Branch `feature` is branched off of `main` and is currently at commit **D**. This branch has a pull request targeting `main`. -* Branch `feature_2` is branched off of `feature` and is now at commit **E**. This branch also has a pull request targeting `main`. - -If pull request **E** --> `main` is merged first, pull request **D** --> `main` is marked as merged _automatically_ because all of the commits from `feature` are now reachable from `main`. Merging `feature_2` into `main` and pushing `main` to the server from the command line marks _both_ pull requests as merged. - -Indirect merges can occur only when the commits in the pull request's head branch are pushed directly to the repository's default branch, or when the commits in the pull request's head branch are present in another pull request and are merged into the repository's default branch using the **Create a merge commit** option. - -If a pull request containing commits present in another pull request's head branch is merged using the **Squash and merge** or **Rebase and merge** options, a new commit is created on the base branch and the other pull request will not be automatically merged. +A pull request can be marked as merged if its head branch commits become reachable from the base branch outside that pull request. This can happen when the same commits are merged through another pull request or pushed directly to the default branch. -Pull requests that are merged indirectly are marked as `merged` even if [branch protection rules](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#about-branch-protection-rules) have not been satisfied. +Indirect merges are uncommon, but they can affect automation and branch protection expectations. Pull requests merged indirectly are marked as `merged` even if branch protection rules on that pull request were not satisfied. ## Further reading diff --git a/content/pull-requests/concepts/about-pull-request-reviews.md b/content/pull-requests/concepts/about-pull-request-reviews.md index 9ed3ca8b37fe..466ff7f919cd 100644 --- a/content/pull-requests/concepts/about-pull-request-reviews.md +++ b/content/pull-requests/concepts/about-pull-request-reviews.md @@ -23,19 +23,15 @@ Pull request reviews are one of the main ways people collaborate on {% data vari ## Reviewing pull requests -Anyone with read access can review and comment on proposed changes. When submitting a review, choose one of three statuses: +Anyone with read access can review and comment on proposed changes. Reviews help authors improve their work and help maintainers decide whether a pull request is ready to merge. -* **Comment**: Share feedback without approving or requesting changes. -* **Approve**: Approve the changes for merging. -* **Request changes**: Identify issues that must be fixed before merging. - -You can comment on specific lines, suggest changes for authors to apply directly, and discuss implementation approaches. Reviews appear in the conversation timeline and merge box. To track addressed feedback, mark conversation threads as resolved. +A review can leave general feedback, approve the pull request, or request changes that should be addressed before merging. Reviewers can also comment on specific lines, suggest changes, and discuss implementation details. Review conversations appear in the pull request timeline so the team can track feedback and decisions. ## Requesting and requiring reviews -Repository owners and collaborators can request reviews from specific people or teams. If you define code owners in a CODEOWNERS file, they are automatically requested for review when a pull request modifies their code. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review). +Repository owners and collaborators can request reviews from specific people or teams when they need feedback from the right experts. If you define code owners in a CODEOWNERS file, {% data variables.product.github %} can automatically request review from owners when a pull request changes their code. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review). -To maintain code quality and prevent accidental merges, repository administrators can require approvals before pull requests are merged. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-pull-request-reviews-before-merging). +Repository administrators can require approvals before pull requests are merged. Required reviews help protect important branches and reduce accidental merges. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-pull-request-reviews-before-merging). ## Further reading diff --git a/content/pull-requests/concepts/about-pull-requests.md b/content/pull-requests/concepts/about-pull-requests.md index 325e13eda624..282bc03f57f8 100644 --- a/content/pull-requests/concepts/about-pull-requests.md +++ b/content/pull-requests/concepts/about-pull-requests.md @@ -29,15 +29,17 @@ Pull requests are proposals to merge code changes into a project. A pull request ## Working with pull requests -The **Conversation** tab of a pull request displays a description of the changes, a timeline of events, and comments and reviews from collaborators. This tab lets you track the discussion and progress of the proposed changes. +A pull request brings together the context reviewers need to understand a change. This context is organized into tabs: -The **Commits** tab shows all commits on the pull request branch in chronological order. This helps you understand the development history and see how the changes evolved over time. +* The **Conversation** tab shows the description, timeline, comments, and reviews. +* The **Commits** tab shows how the pull request branch changed over time. +* The **Checks** tab shows automated tests, builds, and other validations. +* The **Files changed** tab shows the diff that reviewers use to understand the proposed changes. +* The **Findings** tab shows automated code review results, such as code scanning alerts, for the proposed changes. -The **Checks** tab displays the status of any automated tests, builds, or other continuous integration workflows that run when you push commits. These checks help ensure your changes meet quality standards before merging. +Separately from the tabs, the **merge status** highlights blockers, missing approvals, and other requirements before merging. It appears in the pull request header and in the merge box. -The **Files changed** tab shows the differences between the proposed changes and the existing code, making it easy to see what will change when the pull request merges. - -You can view the **Merge status** of a pull request directly in the header from anywhere in the pull request page. Click the merge status to open the details, quickly identify blockers and missing approvals, and get your pull request ready to merge. +Together, these views help authors and reviewers discuss the change, track feedback, and decide when the pull request is ready to merge. ## Draft pull requests @@ -47,30 +49,15 @@ When you create a pull request, you can choose to make it a draft pull request. ## Pull request refs and merge branches -When you open a pull request, {% data variables.product.github %} creates up to two temporary, read-only Git references for it: - -| Ref | Description | -| --- | --- | -| `refs/pull/PULL_REQUEST_NUMBER/head` | Points to the latest commit on the pull request's head branch. | -| `refs/pull/PULL_REQUEST_NUMBER/merge` | A merge branch—a simulated merge commit that represents what the repository would look like if the pull request were merged right now. This ref is only available when the pull request has no merge conflicts. | - -The merge branch automatically updates when the head branch changes. To fetch it locally: - -```shell -git fetch origin refs/pull/PULL_REQUEST_NUMBER/merge -git checkout FETCH_HEAD -``` - -Replace `PULL_REQUEST_NUMBER` with the number of your pull request. +When you open a pull request, {% data variables.product.github %} creates temporary Git references that point to the pull request's head branch and, when possible, to a simulated merge result. These refs help {% data variables.product.github %} and integrations evaluate the pull request without changing the base branch. -For information about how {% data variables.product.prodname_actions %} uses the merge branch, see [AUTOTITLE](/actions/reference/workflows-and-actions/events-that-trigger-workflows#how-the-merge-branch-affects-your-workflow). +For most contributors, these refs stay in the background. They are most relevant when you are building automation, debugging CI behavior, or fetching pull request state locally. For information about how {% data variables.product.prodname_actions %} uses the merge branch, see [AUTOTITLE](/actions/reference/workflows-and-actions/events-that-trigger-workflows#how-the-merge-branch-affects-your-workflow). ## Differences between commits on compare and pull request pages -The compare and pull request pages use different methods to calculate the diff for changed files: +Compare pages and pull request pages can calculate changed files from different merge bases. As a result, the same branches can sometimes show different diffs in each place. -* Compare pages show the diff between the tip of the head ref and the current common ancestor (that is, the merge base) of the head and base ref. -* Pull request pages show the diff between the tip of the head ref and the common ancestor of the head and base ref at the time when the pull request was created. As a result, the merge base used for the comparison might be different. +This usually matters when the base branch has changed since the pull request was created. Pull request pages focus on what the pull request introduced, while compare pages reflect the current comparison between two refs. ## Collaborative development models diff --git a/content/pull-requests/concepts/about-status-checks.md b/content/pull-requests/concepts/about-status-checks.md index 946f282025b8..043c148883c7 100644 --- a/content/pull-requests/concepts/about-status-checks.md +++ b/content/pull-requests/concepts/about-status-checks.md @@ -16,15 +16,14 @@ category: - Merge and close pull requests contentType: concepts --- -Status checks are based on external processes, such as continuous integration builds, that run for each push you make to a repository. You can see the _pending_, _passing_, or _failing_ state of status checks next to individual commits in your pull request. -![Screenshot of a list of commits and statuses.](/assets/images/help/pull_requests/commit-list-statuses.png) +Status checks show whether commits meet the conditions set for a repository. They are usually created by external systems, such as continuous integration builds, tests, code scanning, or deployment checks. -Anyone with write permissions to a repository can set the state for any status check in the repository. +Status checks help reviewers and maintainers understand whether a pull request is ready to merge. A check can show that work is still running, that changes passed validation, or that something needs attention. -You can see the overall state of the last commit to a branch on your repository's branches page or in your repository's list of pull requests. +![Screenshot of a list of commits and statuses.](/assets/images/help/pull_requests/commit-list-statuses.png) -If status checks are required for a repository, they must pass before you can merge your branch into the protected branch. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging). +If status checks are required for a protected branch, they must pass before the pull request can be merged. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging). {% data reusables.actions.workflows.skipped-job-status-checks-passing %} @@ -32,10 +31,8 @@ If status checks are required for a repository, they must pass before you can me There are two types of status checks on {% data variables.product.github %}: -* Checks -* Commit statuses - -_Checks_ differ from _commit statuses_ because they provide line annotations and more detailed messaging. Checks are only available for use with {% data variables.product.prodname_github_apps %}. +* **Checks** provide detailed output, annotations, and messages. They are created by {% data variables.product.prodname_github_apps %}, including {% data variables.product.prodname_actions %}. +* **Commit statuses** provide a simpler status for a commit. They are often used by external services and integrations. > [!NOTE] > {% data variables.product.prodname_actions %} generates checks, not commit statuses, when workflows are run. @@ -44,71 +41,36 @@ Organization owners and users with push access to a repository can create checks ## Checks -Pull requests have a **Checks** tab where you can view detailed build output from checks and rerun failed checks. +Checks can include build logs, test results, annotations, and links to more detail. In a pull request, the **Checks** tab helps you understand which validations ran and why a check passed or failed. > [!NOTE] > The **Checks** tab is populated for pull requests only if you set up _checks_, not _commit statuses_, for the repository. -When a specific line in a commit causes a check to fail, you will see details about the failure, warning, or notice next to the relevant code. These details appear in the **Files** tab of the pull request. - -You can navigate between the checks summaries for different commits in a pull request using the commit drop-down menu under the **Checks** tab. +When a check points to a specific line, details can also appear in the **Files** tab of the pull request. This helps reviewers connect automated feedback to the code being changed. ![Screenshot of the "Checks" tab of a pull request. The "Checks" tab and the dropdown menu to select a commit are both outlined in dark orange.](/assets/images/help/pull_requests/checks-summary-for-various-commits.png) ## Skipping and requesting checks for individual commits -When a repository is set to automatically request checks for pushes, you can choose to skip checks for an individual commit you push. When a repository is _not_ set to automatically request checks for pushes, you can request checks for an individual commit you push. For more information about these settings, see [AUTOTITLE](/rest/checks/suites#update-repository-preferences-for-check-suites). - -You can also skip workflow runs triggered by the `push` and `pull_request` events by including a command in your commit message. For more information, see [AUTOTITLE](/actions/managing-workflow-runs/skipping-workflow-runs) +Some repositories allow checks to be skipped or requested for individual commits. This can be useful when a check is not relevant to a specific change, or when checks are not requested automatically. -Alternatively, to skip or request _all_ checks for your commit, add one of the following trailer lines to the end of your commit message: +For {% data variables.product.prodname_actions %} workflows, you can skip workflow runs triggered by the `push` and `pull_request` events by including a skip instruction in your commit message. For more information, see [AUTOTITLE](/actions/managing-workflow-runs/skipping-workflow-runs). -* To _skip checks_ for a commit, type your commit message and a short, meaningful description of your changes. After your commit description, before the closing quotation, add two empty lines followed by `skip-checks: true`: - - ```shell - $ git commit -m "Update README - > - > - skip-checks: true" - ``` - -* To _request_ checks for a commit, type your commit message and a short, meaningful description of your changes. After your commit description, before the closing quotation, add two empty lines followed by `request-checks: true`: - - ```shell - $ git commit -m "Refactor usability tests - > - > - request-checks: true" - ``` +For check suite preferences and commit trailers such as `skip-checks: true` or `request-checks: true`, see [AUTOTITLE](/rest/checks/suites#update-repository-preferences-for-check-suites). {% data reusables.commits.about-commit-cleanup %} ## Check statuses and conclusions -Checks can have many different statuses. Statuses describe the state of a check from when it is created to when it is completed. Some statuses cannot be set manually and are reserved for {% data variables.product.prodname_actions %}. When a check has a status of `completed`, it has a conclusion. The conclusion describes the result of the check. The following tables list all possible check statuses and conclusions. - -| Status | Description | {% data variables.product.prodname_actions %} only? | -| --- | --- | --- | -| `completed` | The check run completed and has a conclusion (see below). | No | -| `expected` | The check run is waiting for a status to be reported. | Yes | -| `failure` | The check run failed. | No | -| `in_progress` | The check run is in progress. | No | -| `pending` | The check run is at the front of the queue but the [group-based concurrency](/actions/writing-workflows/choosing-what-your-workflow-does/control-the-concurrency-of-workflows-and-jobs) limit has been reached. | Yes | -| `queued` | The check run has been queued. | No | -| `requested` | The check run has been created but has not been queued. | Yes | -| `startup_failure` | The check suite failed during startup. This status is not applicable to check runs. | Yes | -| `waiting` | The check run is waiting for a [deployment protection rule](/actions/managing-workflow-runs-and-deployments/managing-deployments/managing-environments-for-deployment#deployment-protection-rules) to be satisfied. | Yes | - -| Conclusion | Description | +Checks move through statuses as they run, then receive a conclusion when they finish. + +| State | What it means | | --- | --- | -| `action_required` | The check run provided required actions when it completed. For more information, see [AUTOTITLE](/rest/guides/using-the-rest-api-to-interact-with-checks#check-runs-and-requested-actions). | -| `cancelled` | The check run was cancelled before it completed. | -| `failure` | The check run failed. | -| `neutral` | The check run completed with a neutral result. This is treated as a success for dependent checks in {% data variables.product.prodname_actions %}. | -| `skipped` | The check run was skipped. This is treated as a success for dependent checks in {% data variables.product.prodname_actions %}. | -| `stale` | The check run was marked stale by {% data variables.product.github %} because it took too long. | -| `success` | The check run completed successfully. | -| `timed_out` | The check run timed out. | +| Waiting or queued | The check has not started yet, or is waiting for a required condition such as capacity or deployment approval. | +| In progress | The check is running. | +| Completed | The check finished and has a conclusion, such as success, failure, cancelled, skipped, or timed out. | + +A successful conclusion usually means the check does not block merging. A failure, timeout, or action-required conclusion usually means someone must review the details before the pull request can merge. ## Retention of checks diff --git a/content/pull-requests/concepts/helping-others-review-your-changes.md b/content/pull-requests/concepts/helping-others-review-your-changes.md index 6e352fc39ac5..01f801dc9403 100644 --- a/content/pull-requests/concepts/helping-others-review-your-changes.md +++ b/content/pull-requests/concepts/helping-others-review-your-changes.md @@ -14,44 +14,39 @@ category: contentType: concepts --- -When you create a pull request, you’re asking your team to review your changes and provide feedback. This guide shares best practices for creating pull requests that are easy to review and keep your team informed, so that you can improve collaboration and the quality of reviews. +When you create a pull request, you’re asking your team to review your changes and provide feedback. Pull requests that are focused, clear, and easy to follow help reviewers give better feedback and make confident decisions. ## Making your changes easy to review -Clear context in your pull requests helps reviewers quickly see what you’ve changed and why it matters. This makes the review process faster and smoother, with less back-and-forth. It also helps your team give better feedback and make confident decisions. For information on creating a pull request, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request). +Clear context helps reviewers quickly understand what changed and why it matters. It reduces back-and-forth, makes review faster, and helps your team focus on the most important parts of the change. For information on creating a pull request, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request). ### Write small pull requests -Aim to create small, focused pull requests that serve a single purpose. Smaller pull requests are easier and faster to review and merge. They also leave less room to introduce bugs and provide a clearer history of changes. +Small, focused pull requests are easier to review and safer to merge. They help reviewers understand the purpose of the change, spot issues more quickly, and follow the history of the project later. -### Provide context and guidance - -Write clear titles and descriptions for your pull requests so that reviewers can quickly understand what the pull request does. In the pull request body, include: +When a change grows large, consider splitting it into smaller pull requests that each serve one purpose. -* The purpose of the pull request -* An overview of what changed -* Links to any additional context such as tracking issues or previous conversations +### Provide context and guidance -To help reviewers, share the type of feedback you need. For example, do you need a quick look or a deeper critique?{% ifversion copilot %} You can also use {% data variables.product.prodname_copilot %} to generate a summary of your pull request. See [Use {% data variables.product.prodname_copilot %} to generate pull request summaries](#use-github-copilot-to-generate-pull-request-summaries), later in this article.{% endif %} +A clear title and description help reviewers understand the problem, the approach, and the result. Good context often explains why the change is needed, what changed, and where reviewers should pay special attention. -If your pull request consists of changes to multiple files, provide guidance to reviewers about the order in which to review the files. Recommend where to start and how to proceed with the review. +Guidance is especially helpful when a pull request touches many files or requires a specific review order. For example, you can point reviewers to the most important files first or explain what type of feedback would be most useful.{% ifversion copilot %} You can also use {% data variables.product.prodname_copilot %} to generate a summary of your pull request, as described later in this article.{% endif %} ### Review your own pull request first -Review, build, and test your own pull request before submitting it. This helps you catch errors or typos that you may have missed, before others start reviewing. +Reviewing your own pull request before asking others to review it helps you catch mistakes early. It also shows reviewers that the pull request is ready for their attention. + +A self-review can include reading the diff, checking for accidental changes, and making sure relevant builds or tests have run. ### Review for security -Several tools can help you review your pull request for potential security issues before others review it. Reviewing for security helps catch and resolve security issues early. It also lets you highlight unresolved risks for others to review and advise on. For example, you can: +Security review helps catch risk before a pull request is merged. This is especially important when a pull request changes dependencies, authentication, permissions, workflows, or code that handles sensitive data. -* Check the dependency diff to see if your pull request is introducing vulnerable dependencies. See [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request). -* Check the {% data variables.product.prodname_advisory_database %} to find additional context and information on vulnerable dependencies. -* Investigate and resolve any failing security checks or workflows, such as the dependency review action or the {% data variables.product.prodname_code_scanning %} results check. See [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#about-the-dependency-review-action) and [AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests#about-code-scanning-as-a-pull-request-check).{% ifversion code-scanning-autofix %} -* If your repository has set up {% data variables.product.prodname_code_scanning %} as a pull request check, use {% data variables.copilot.copilot_autofix %} to suggest fixes for security vulnerabilities in your code. See [AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests#working-with-copilot-autofix-suggestions-for-alerts-on-a-pull-request).{% endif %} +{% data variables.product.github %} can surface security information in pull requests, such as dependency changes, dependency review results, and {% data variables.product.prodname_code_scanning %} checks. Use these signals to resolve issues early or to highlight risks that need reviewer attention. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request), [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#about-the-dependency-review-action), and [AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests#about-code-scanning-as-a-pull-request-check).{% ifversion code-scanning-autofix %} If your repository has set up {% data variables.product.prodname_code_scanning %} as a pull request check, {% data variables.copilot.copilot_autofix %} can suggest fixes for security vulnerabilities. For more information, see [AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests#working-with-copilot-autofix-suggestions-for-alerts-on-a-pull-request).{% endif %} ## Keeping your team informed -Pull requests can do more than document code changes—they’re also a powerful way to keep your team and manager informed about the status of your work. By making your progress visible in your pull requests, you can reduce the need for separate updates and keep everyone aligned. +Pull requests can do more than document code changes—they’re also a way to keep your team and manager informed about the status of your work. Visible progress helps reduce separate status updates and keeps everyone aligned. {% ifversion copilot %} @@ -59,25 +54,9 @@ Pull requests can do more than document code changes—they’re also a powerful > [!NOTE] {% data reusables.copilot.copilot-requires-subscription %} -You can use {% data variables.product.prodname_copilot_short %} to generate a summary of a pull request on {% data variables.product.github %}. You can use the summary to help reviewers understand your changes. - -1. On {% data variables.product.github %}, create a pull request or navigate to an existing pull request. - - > [!NOTE] {% data variables.product.prodname_copilot_short %} does not consider any existing content in the pull request description, so it is best to start with a blank description. - -1. Navigate to the text field where you want to add the pull request summary. - - * If you're creating a new pull request, use the "Add a description" field. - * If you're adding a description to an existing pull request, edit the opening comment. - * If you're adding a summary as a comment, navigate to the "Add a comment" section at the bottom of the pull request page. - -1. In the header of the text field, select {% octicon "copilot" aria-label="Copilot actions" %}, then click **Summary**. - - ![Screenshot of the form for creating a pull request. A Copilot icon is highlighted, and a box appears with the "Summary" command.](/assets/images/help/copilot/copilot-description-suggestion.png) +{% data variables.product.prodname_copilot_short %} can generate a pull request summary on {% data variables.product.github %}. A generated summary can help reviewers understand the main changes, but you should review it carefully and add context that only you know. -1. Wait for {% data variables.product.prodname_copilot_short %} to produce the summary, then review the results carefully. -1. Add any additional context that will help people viewing your pull request. -1. When you're satisfied with the description, click **Create pull request** on a new pull request, or **Update comment** if you're editing an existing description. +Summaries are most useful when they explain the purpose of the change, call out important files, and highlight anything reviewers should examine closely. For instructions, see [AUTOTITLE](/copilot/using-github-copilot/creating-a-pull-request-summary-with-github-copilot). > [!TIP] You can also use {% data variables.copilot.copilot_chat_short %} to turn your work into a discussion or blog post. See [AUTOTITLE](/copilot/copilot-chat-cookbook/documenting-code/writing-discussions-or-blog-posts). @@ -85,11 +64,10 @@ You can use {% data variables.product.prodname_copilot_short %} to generate a su ### Link to related issues or projects -Connect your pull request to relevant issues or project boards to show how your work fits into the larger project. +Connecting a pull request to issues or projects shows how the work fits into the larger project. Links help reviewers understand priority, track progress, and find related discussions. -* Add keywords like `Closes ISSUE-LINK` in your description to automatically link and close the issue when the pull request is merged. -* Use {% data variables.product.prodname_projects_v2 %} to track your work and link to the project from your pull request, so people can track progress in one place. See [AUTOTITLE](/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects). +Use issue-closing keywords when a pull request should close an issue after merging. You can also link to {% data variables.product.prodname_projects_v2 %} so people can track work in one place. For more information, see [AUTOTITLE](/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) and [AUTOTITLE](/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects). ### Highlight the status with labels -Add a status label to your pull request to show whether it’s ready for review, blocked, or in progress. This helps reviewers understand the state of your work at a glance. For more information, see [AUTOTITLE](/issues/using-labels-and-milestones-to-track-work/managing-labels). +Status labels help reviewers understand whether a pull request is ready for review, blocked, or still in progress. Clear labels make it easier for people to prioritize reviews and avoid reviewing work before it is ready. For more information, see [AUTOTITLE](/issues/using-labels-and-milestones-to-track-work/managing-labels). diff --git a/content/pull-requests/concepts/managing-and-standardizing-pull-requests.md b/content/pull-requests/concepts/managing-and-standardizing-pull-requests.md index a0c02154a4af..a11c9f455f37 100644 --- a/content/pull-requests/concepts/managing-and-standardizing-pull-requests.md +++ b/content/pull-requests/concepts/managing-and-standardizing-pull-requests.md @@ -13,42 +13,40 @@ redirect_from: contentType: concepts --- -If you are a repository maintainer, you can manage and standardize the pull requests that contributors create in your repository. These steps can help you ensure that pull requests are reviewed by the right people and meet your repository's standards. +If you maintain a repository, you can use {% data variables.product.github %} features to make pull requests more consistent and easier to review. Standardization helps contributors know what information to provide, helps reviewers focus on the right changes, and helps protect important branches from accidental or risky merges. ## Using pull request templates -Pull request templates let you customize and standardize the information you want contributors to include when they create a pull request in your repository. When you add a pull request template to your repository, project contributors will automatically see the template's contents in the pull request body. For more information, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository). +Pull request templates help contributors provide the context your project needs for review. A template can prompt authors to explain the purpose of the change, link related issues, include testing notes, or complete a checklist before requesting review. -You can use pull request templates to standardize the review process for your repository. For example, you can add a task list to the template with tasks you want authors to complete before merging their pull requests. For more information, see [AUTOTITLE](/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists). - -You can request that contributors include an issue reference in their pull request body, so that merging the pull request will automatically close the issue. For more information, see [AUTOTITLE](/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue). +Templates are useful when many contributors open pull requests or when your project has review expectations that should be visible every time. For more information, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository), [AUTOTITLE](/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists), and [AUTOTITLE](/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue). ## Defining code owners -You may want to make sure that specific individuals always review changes to certain code or files in your repository. For example, you may want to ensure that a member of the security team always reviews changes to your `SECURITY.md` file or `dependabot.yml` file. +Code owners identify the people or teams responsible for specific files or directories. When a pull request changes owned code, {% data variables.product.github %} can automatically request a review from the right owners. -You can define code owners as the individuals or teams responsible for code or files in a repository. Code owners will automatically be requested for review when someone opens a pull request that modifies the files that they own. You can define code owners for specific types of files or directories, as well as for different branches in a repository. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners). +Code owners help route reviews to people with the right context. They are especially useful for sensitive areas such as security files, deployment configuration, or shared libraries. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners). ## Using protected branches -You can use protected branches to prevent pull requests from being merged into important branches, such as `main`, until certain conditions are met. For example, you can require an approving review or require all status checks to pass. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). +Protected branches help keep important branches, such as `main`, stable. They can require conditions such as passing status checks, signed commits, or approving reviews before a pull request can merge. + +Use protected branches when a branch represents production code, a release line, or another important source of truth. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). ## Using rulesets -Alongside protected branches, rulesets let you enforce policies across your repository, such as requiring status checks or workflows to pass before a pull request can be merged. +Rulesets let you enforce repository policies across branches and tags. They can require status checks, workflows, pull request reviews, or other conditions before changes are accepted. -Rulesets are especially useful for maintaining repository security when combined with other automated security checks. For example: -* You can use rulesets to enforce the dependency review action, a workflow that blocks pull requests that introduce vulnerable dependencies into your codebase. See [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/enforcing-dependency-review-across-an-organization). -* If your repository is configured with {% data variables.product.prodname_code_scanning %}, you can use rulesets to set {% data variables.product.prodname_code_scanning %} merge protection, which prevents pull requests from being merged if there is a {% data variables.product.prodname_code_scanning %} alert of a certain severity, or if a {% data variables.product.prodname_code_scanning %} analysis is still in progress. See [AUTOTITLE](/code-security/code-scanning/managing-your-code-scanning-configuration/set-code-scanning-merge-protection). +Rulesets are useful when you want consistent rules across multiple branches or when you want to combine review requirements with automated security checks, such as dependency review or {% data variables.product.prodname_code_scanning %} merge protection. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets), [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/enforcing-dependency-review-across-an-organization), and [AUTOTITLE](/code-security/code-scanning/managing-your-code-scanning-configuration/set-code-scanning-merge-protection). ## Using push rulesets {% data reusables.repositories.push-rulesets-overview %} -For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets#push-rulesets). +Push rulesets help block risky content before it enters the repository. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets#push-rulesets). ## Using automated tools to review code styling -Use automated tools, such as linters, in your repository's pull requests to maintain consistent styling and make code more understandable. Automated tools can catch smaller problems like typos or styling, which leaves more time for reviewers to focus on the substance of a pull request. +Automated tools, such as linters and formatters, help keep code style consistent across pull requests. They can catch small issues automatically so reviewers can focus on design, correctness, and maintainability. -For example, you can use {% data variables.product.prodname_actions %} to set up code linters that can run on pull requests as part of your continuous integration (CI) workflow. For more information, see [AUTOTITLE](/actions/automating-builds-and-tests/about-continuous-integration). +You can run these tools as part of a continuous integration workflow with {% data variables.product.prodname_actions %}. For more information, see [AUTOTITLE](/actions/automating-builds-and-tests/about-continuous-integration). diff --git a/content/pull-requests/concepts/working-with-pre-receive-hooks.md b/content/pull-requests/concepts/working-with-pre-receive-hooks.md index 9dd35a24bf4a..5dc663c83bdb 100644 --- a/content/pull-requests/concepts/working-with-pre-receive-hooks.md +++ b/content/pull-requests/concepts/working-with-pre-receive-hooks.md @@ -14,7 +14,10 @@ category: - Merge and close pull requests contentType: concepts --- -Pre-receive hooks run tests on code pushed to a repository to make sure contributions meet repository or organization policy. If the commit contents pass the tests, the push is accepted into the repository. If the commit contents do not pass the tests, the push is not accepted. + +Pre-receive hooks are scripts that run on {% data variables.product.prodname_ghe_server %} before Git accepts pushed commits. They enforce repository, organization, or enterprise policy at the point where code enters a repository. + +A pre-receive hook can check whether a push follows required rules. For example, a hook might block pushes that include secrets, use nonstandard commit messages, or change protected files. If the push passes the checks, Git accepts it. If the push fails, Git rejects it and shows an error message. If your push isn't accepted, you'll see an error message for the failed pre-receive hook. @@ -32,4 +35,6 @@ To https://54.204.174.51/hodor/nope.git error: failed to push some refs to 'https://54.204.174.51/hodor/nope.git' ``` -Your {% data variables.product.prodname_ghe_server %} site administrator can create and remove pre-receive hooks for your organization or repository, and may allow organization or repository administrators to enable or disable pre-receive hooks. For more information, see [AUTOTITLE](/admin/policies/enforcing-policy-with-pre-receive-hooks). +Pre-receive hooks matter because they apply rules consistently before changes reach the repository. This can reduce manual review burden and prevent policy violations from being stored in Git history. + +Your {% data variables.product.prodname_ghe_server %} site administrator creates and removes pre-receive hooks. They may also allow organization or repository administrators to enable or disable hooks for specific scopes. For more information, see [AUTOTITLE](/admin/policies/enforcing-policy-with-pre-receive-hooks). diff --git a/content/pull-requests/how-tos/commit-changes/changing-a-commit-message.md b/content/pull-requests/how-tos/commit-changes/changing-a-commit-message.md index 09d516372dcc..105c27c84f78 100644 --- a/content/pull-requests/how-tos/commit-changes/changing-a-commit-message.md +++ b/content/pull-requests/how-tos/commit-changes/changing-a-commit-message.md @@ -15,106 +15,68 @@ category: - Commit changes contentType: how-tos --- -## Rewriting the most recent commit message -You can change the most recent commit message with the `git commit --amend` command. +## Rewriting the most recent commit message -In Git, the text of the commit message is part of the commit. Changing the commit message changes the commit ID—the SHA1 checksum that names the commit. You create a new commit that replaces the old one. +Changing a commit message creates a new commit ID. If the commit has already been pushed, you must force push the rewritten history. ## Commit has not been pushed online -If the commit only exists in your local repository and has not been pushed to {% data variables.location.product_location %}, you can amend the commit message with `git commit --amend`. +If the commit only exists in your local repository, amend the commit message locally. 1. On the command line, navigate to the repository that contains the commit you want to amend. 1. Type `git commit --amend` and press **Enter**. 1. In your text editor, edit the commit message, and save the commit. - * You can add a co-author by adding a trailer to the commit. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors). + * To add a co-author, add a trailer to the commit. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors). {% ifversion fpt or ghec %} - * You can create commits on behalf of your organization by adding a trailer to the commit. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors#creating-a-commit-on-behalf-of-an-organization). + * To create commits on behalf of your organization, add a trailer to the commit. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors#creating-a-commit-on-behalf-of-an-organization). {% endif %} - -The new commit and message will appear on {% data variables.location.product_location %} after you push. - -> [!TIP] -> You can change the default text editor for Git by changing the `core.editor` setting. For more information, see [Basic Client Configuration](https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration#_basic_client_configuration) in the Git manual. +1. Push the commit to {% data variables.location.product_location %}. ## Amending older or multiple commit messages -If you have already pushed the commit to {% data variables.location.product_location %}, you must force push a commit with an amended message. +If you have already pushed the commit, use caution before rewriting history. Force pushing can disrupt collaborators who have based work on the old commits. -> [!WARNING] -> We strongly discourage force pushing, since this changes the history of your repository. If you force push, people who have already cloned your repository will have to manually fix their local history. For more information, see [Recovering from upstream rebase](https://git-scm.com/docs/git-rebase#_recovering_from_upstream_rebase) in the Git manual. - -**Changing the message of the most recently pushed commit** +### Changing the message of the most recently pushed commit -1. Follow the [steps above](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message#commit-has-not-been-pushed-online) to amend the commit message. -1. Use the `push --force-with-lease` command to force push over the old commit. +1. Follow the steps in [Commit has not been pushed online](#commit-has-not-been-pushed-online) to amend the commit message. +1. Force push over the old commit. ```shell git push --force-with-lease origin EXAMPLE-BRANCH ``` -**Changing the message of older or multiple commit messages** - -If you need to amend the message for multiple commits or an older commit, you can use interactive rebase, then force push to change the commit history. +### Changing the message of older or multiple commit messages -1. On the command line, navigate to the repository that contains the commit you want to amend. -1. Use the `git rebase -i HEAD~n` command to display a list of the last `n` commits in your default text editor. - - ```shell - # Displays a list of the last 3 commits on the current branch - $ git rebase -i HEAD~3 - ``` +Use interactive rebase to change older or multiple commit messages. - The list will look similar to the following: +1. On the command line, navigate to the repository that contains the commits you want to amend. +1. Start an interactive rebase for the last `n` commits. ```shell - pick e499d89 Delete CNAME - pick 0c39034 Better README - pick f7fde4a Change the commit message but push the same commit. - - # Rebase 9fdb3bd..f7fde4a onto 9fdb3bd - # - # Commands: - # p, pick = use commit - # r, reword = use commit, but edit the commit message - # e, edit = use commit, but stop for amending - # s, squash = use commit, but meld into previous commit - # f, fixup = like "squash", but discard this commit's log message - # x, exec = run command (the rest of the line) using shell - # - # These lines can be re-ordered; they are executed from top to bottom. - # - # If you remove a line here THAT COMMIT WILL BE LOST. - # - # However, if you remove everything, the rebase will be aborted. - # - # Note that empty commits are commented out + git rebase -i HEAD~n ``` -1. Replace `pick` with `reword` before each commit message you want to change. +1. In the commit list, replace `pick` with `reword` before each commit message you want to change. ```shell pick e499d89 Delete CNAME reword 0c39034 Better README - reword f7fde4a Change the commit message but push the same commit. + reword f7fde4a Change the commit message ``` 1. Save and close the commit list file. -1. In each resulting commit file, type the new commit message. Save and close the file. -1. When you're ready to push your changes to GitHub, use `push --force` to force push over the old commit. +1. In each commit message file that opens, enter the new message, then save and close the file. +1. Force push the rewritten history. ```shell - git push --force origin EXAMPLE-BRANCH + git push --force-with-lease origin EXAMPLE-BRANCH ``` For more information about interactive rebase, see [Interactive mode](https://git-scm.com/docs/git-rebase#_interactive_mode) in the Git manual. -> [!NOTE] -> As before, amending the commit message will result in a new commit with a new ID. However, in this case, every commit that follows the amended commit will also get a new ID because each commit also contains the ID of its parent. - > [!WARNING] -> If you have included sensitive information in a commit message, force pushing a commit with an amended commit may not remove the original commit from {% data variables.product.github %}. The old commit will not be a part of a subsequent clone; however, it may still be cached on {% data variables.product.github %} and accessible via the commit ID. You must contact {% data variables.contact.contact_support %} with the old commit ID to have it purged from the remote repository. +> If a commit message included sensitive information, force pushing an amended commit might not remove the original commit from {% data variables.product.github %}. Contact {% data variables.contact.contact_support %} with the old commit ID to have it purged from the remote repository. ## Further reading diff --git a/content/pull-requests/how-tos/commit-changes/comparing-commits.md b/content/pull-requests/how-tos/commit-changes/comparing-commits.md index b616d6ed1758..4ddd160f278d 100644 --- a/content/pull-requests/how-tos/commit-changes/comparing-commits.md +++ b/content/pull-requests/how-tos/commit-changes/comparing-commits.md @@ -19,79 +19,63 @@ category: - Commit changes contentType: how-tos --- -To compare different versions of your repository, append `/compare` to your repository's path. -The following example uses the compare page for [a fork of the Linguist repository](https://github.com/octocat/linguist), which is at [https://github.com/octocat/linguist/compare/master...octocat:master](https://github.com/octocat/linguist/compare/master...octocat:master). - -Every repository's Compare view contains two dropdown menus: `base` and `compare`. - -`base` is the starting point of your comparison, and `compare` is the endpoint. During a comparison, you can change your `base` and `compare` points by clicking **Edit**. +To compare different versions of your repository, append `/compare` to your repository's path. The compare page uses `base` as the starting point and `compare` as the endpoint. ## Comparing branches -The most common use of Compare is to compare branches, such as when you're starting a new pull request. You'll always be taken to the branch comparison view when starting [a new pull request](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request). +Use the Compare view to compare branches or start a pull request. -To compare branches, select a branch name from the `compare` dropdown menu at the top of the page. +1. Navigate to `https://{% data variables.product.product_url %}/OWNER/REPOSITORY/compare`. +1. Use the `base` dropdown menu to select the branch you want to compare against. +1. Use the `compare` dropdown menu to select the branch that contains the changes. +1. Review the commits and changed files in the comparison. -Here's an example of a [comparison between two branches](https://github.com/octocat/linguist/compare/master...octocat:an-example-comparison-for-docs). +For more information about pull request branch comparisons, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests). ## Comparing tags -Comparing release tags shows changes to your repository since the last release. -For more information, see [AUTOTITLE](/repositories/releasing-projects-on-github/comparing-releases). - -To compare tags, select a tag name from the `compare` dropdown menu at the top of the page. +Compare release tags to review changes between releases. For more information, see [AUTOTITLE](/repositories/releasing-projects-on-github/comparing-releases). -Here's an example of a [comparison between two tags](https://github.com/octocat/linguist/compare/v2.2.0...octocat:v2.3.3). +1. Navigate to `https://{% data variables.product.product_url %}/OWNER/REPOSITORY/compare`. +1. Select the older tag from the `base` dropdown menu. +1. Select the newer tag from the `compare` dropdown menu. +1. Review the commits and changed files in the comparison. > [!NOTE] -> If a branch and a tag have the same name, the branch will be used when comparing commits. You can compare the tag specifically by adding `tags/` to the tag name. +> If a branch and a tag have the same name, the branch is used. To compare the tag, add `tags/` before the tag name. ## Comparing commits -You can also compare two arbitrary commits in your repository or its forks on {% data variables.product.prodname_dotcom %} in a two-dot diff comparison. +You can compare two commits or Git Object IDs (OIDs) directly by editing the compare URL. -To quickly compare two commits or Git Object IDs (OIDs) directly with each other in a two-dot diff comparison on {% data variables.product.prodname_dotcom %}, edit the URL of your repository's "Comparing changes" page. +1. Navigate to the repository's compare page. +1. In the URL, enter the older commit as the base and the newer commit as the compare point. {% data reusables.repositories.two-dot-diff-comparison-example-urls %} -To learn more about other comparison options, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests#three-dot-and-two-dot-git-diff-comparisons). +For more information about two-dot and three-dot comparisons, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests#three-dot-and-two-dot-git-diff-comparisons). ## Comparing across forks -You can compare your base repository and any forked repository. This view appears when a user opens a pull request to a project. +Use owner-qualified branch names to compare branches across forks. -To compare branches on different repositories, preface the branch names with user names. For example, specify `octocat:main` for `base` and `octo-org:main` for `compare` to compare the `main` branches of repositories owned by `octocat` and `octo-org`. +1. Navigate to the base repository's compare page. +1. Click **compare across forks** if the option is shown. +1. Select the base repository and branch. +1. Select the head fork and compare branch. -You can also preface the branch name with a user name and a repository name. For example, specifying `octocat:awesome-app:main` uses the `main` branch in the `octocat/awesome-app` repository. This can be useful in large organizations, where an upstream repository and a fork might both be owned by the organization. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks). - -Here's an example of a [comparison between two repositories](https://github.com/github-linguist/linguist/compare/master...octocat:master). +You can also edit the URL directly. For example, use `octocat:main` as `base` and `octo-org:main` as `compare` to compare the `main` branches of repositories owned by `octocat` and `octo-org`. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks). ## Comparisons across commits -You can compare a single commit in Git to the commit's predecessors using two types of notation. - -| Notation | Meaning | Example | Comparison | -| :-: | :- | :- | :- | -| `^` | One commit prior. Repeat the `^` character to indicate one more commit further back in the history. | `96d29b7^^^^^`

Represents the commit five commits prior to `96d29b7`. | [View comparison](https://github.com/octocat/linguist/compare/octocat:96d29b7%5E%5E%5E%5E%5E...octocat:96d29b7) | -| `~N` | N commit(s) prior. | `96d29b7~5`

Represents the commit five commits prior to `96d29b7`. | [View comparison](https://github.com/octocat/linguist/compare/octocat:96d29b7%7E5...octocat:96d29b7) | +To compare a commit with earlier commits, use Git's `^` or `~N` notation in the compare URL. For example, `96d29b7~5...96d29b7` compares `96d29b7` with the commit five commits before it. ## Differences between commit views -You might observe differences in commit history depending on the chosen viewing method. On {% data variables.product.github %}, you can see the commit history of a repository in these places: - -* The repository's [commits page](https://github.com/rust-lang/rust/commits/main), which you can open by clicking the clock icon with the number of commits at the top of the main repository view. -* The [commit history for a specific file](https://github.com/rust-lang/rust/commits/main/README.md), which you can open by clicking a file and then clicking **History**. - -These two commit views may show _different_ information at times. The history for a single file may omit commits found on the repository's commit history. - -Git has several ways to show the history of a repository. When Git shows the history of a single file, it simplifies history by omitting commits that did not change the file. Instead of looking at every commit to decide whether it touched the file, Git will omit a whole branch if that branch, when merged, did not impact the final contents of the file. Any commits on that branch that touched the file will not be shown. - -For a file's commit history, {% data variables.product.github %} explicitly follows this simple strategy. It makes the history simpler by removing commits that didn't contribute to the final result. For example, if a side branch made a change and then reverted it, that commit would not show up in the branch history. This makes reviewing branches more efficient, since you only see the commits that affect the file. - -This truncated view might not always contain the information you need. To see the entire history, use the repository's commits page on {% data variables.product.github %}. +The repository commit history and a single file's commit history can show different results. A file's history shows commits that affected that file, while the repository history shows the broader branch history. If a file's history does not include the commit you need, use the repository's commits page instead. -For more information on how Git considers commit history, see [the "History Simplification"](https://git-scm.com/docs/git-log#_history_simplification) section of the `git log` help article. +For more information about how Git simplifies history, see [the "History Simplification"](https://git-scm.com/docs/git-log#_history_simplification) section of the `git log` documentation. ## Further reading diff --git a/content/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors.md b/content/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors.md index 6c39390db58b..898f3cdb1a70 100644 --- a/content/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors.md +++ b/content/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors.md @@ -23,22 +23,15 @@ contentType: how-tos ## Creating a commit with multiple authors -You can attribute a commit to more than one author by adding one or more `Co-authored-by` trailers to the commit's message. Co-authored commits are visible on {% data variables.product.github %}{% ifversion ghes %} and can be included in the profile contributions graph and the repository's statistics{% endif %}. +Add one or more `Co-authored-by` trailers to a commit message to attribute a commit to multiple authors. ### Required co-author information -Before you add a co-author to a commit, you must know the right email address to use for each co-author. For the co-author's commit to count as a contribution, use the email address associated with their account on {% data variables.location.product_location %}. +Before adding a co-author, get the email address they want used in the trailer. For the commit to count as a contribution, use an email address associated with their account on {% data variables.location.product_location %}. {% ifversion fpt or ghec %} -If a person chooses to keep their email address private, you should use their {% data variables.product.github %}-provided `no-reply` email to protect their privacy. Otherwise, the co-author's email will be public in the commit message. To keep your email private, you can choose to use a {% data variables.product.github %}-provided `no-reply` email for Git operations and ask other co-authors to list your `no-reply` email in commit trailers. - -For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address). - -> [!TIP] -> You can help a co-author find their preferred email address by sharing this information: -> * To find your {% data variables.product.github %}-provided `no-reply` email, navigate to your email settings page under "Keep my email address private." -> * To find the email you used to configure Git on your computer, run `git config user.email` on the command line. +If a co-author keeps their email address private, use their {% data variables.product.github %}-provided `no-reply` email. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address). {% endif %} @@ -58,12 +51,7 @@ You can use {% data variables.product.prodname_desktop %} to create a commit wit > ``` - > [!TIP] - > If you're using a text editor on the command line to type your commit message, ensure there is a blank line (two consecutive newlines) between the end of your commit description and the `Co-authored-by:` commit trailer. - -1. On the next line of the commit message, type `Co-authored-by: name ` with specific information for each co-author. After the co-author information, add a closing quotation mark. - - If you're adding multiple co-authors, give each co-author their own line and `Co-authored-by:` commit trailer. Do not add blank lines between each co-author line. +1. Add one `Co-authored-by: name ` line for each co-author, then add the closing quotation mark. ```shell $ git commit -m "Refactor usability tests. @@ -72,40 +60,29 @@ You can use {% data variables.product.prodname_desktop %} to create a commit wit > Co-authored-by: ANOTHER-NAME " ``` -The new commit and message will appear on {% data variables.location.product_location %} after you push. For more information, see [AUTOTITLE](/get-started/using-git/pushing-commits-to-a-remote-repository). +The new commit and message appear on {% data variables.location.product_location %} after you push. For more information, see [AUTOTITLE](/get-started/using-git/pushing-commits-to-a-remote-repository). ### Creating co-authored commits on {% data variables.product.github %} -After you make changes in a file using the web editor on {% data variables.product.github %}, you can create a co-authored commit by adding a `Co-authored-by:` trailer to the commit's message. +After you make changes in a file using the web editor on {% data variables.product.github %}, add co-author trailers before you commit. {% data reusables.pull_requests.collect-co-author-commit-git-config-info %} 1. Click **Commit changes...** 1. In the "Commit message" field, type a short, meaningful commit message that describes the changes you made. -1. In the text box below your commit message, add `Co-authored-by: name ` with specific information for each co-author. If you're adding multiple co-authors, give each co-author their own line and `Co-authored-by:` commit trailer. +1. In the text box below your commit message, add one `Co-authored-by: name ` line for each co-author. 1. Click **Commit changes** or **Propose changes**. -The new commit and message will appear on {% data variables.location.product_location %}. +The new commit and message appear on {% data variables.location.product_location %}. {% ifversion fpt or ghec %} ## Creating a commit on behalf of an organization -You can create commits on behalf of an organization by adding a trailer to the commit's message. Commits attributed to an organization include an `on-behalf-of` badge on {% data variables.product.github %}. - -To create commits on behalf of an organization: - -* You must be a member of the organization indicated in the trailer. -* You must sign the commit. -* Your commit email and the organization email must be in a domain verified by the organization. -* Your commit message must end with the commit trailer `on-behalf-of: @org `. - * `org` is the organization's login. - * `name@organization.com` is in the organization's domain. - -Organizations can use the `name@organization.com` email as a public point of contact for open source efforts. +Add an `on-behalf-of:` trailer to a signed commit to attribute it to an organization. To use the trailer, you must be a member of the organization, and both your commit email and the organization email must be in a domain verified by the organization. ### Creating commits with an `on-behalf-of` badge on the command line -1. Type your commit message and a short, meaningful description of your changes. After your commit description, instead of a closing quotation, add two empty lines. +1. Type your commit message and a short, meaningful description of your changes. After your commit description, add two empty lines instead of a closing quotation mark. ```shell $ git commit -m "Refactor usability tests. @@ -113,10 +90,7 @@ Organizations can use the `name@organization.com` email as a public point of con > ``` - > [!TIP] - > If you're using a text editor on the command line to type your commit message, ensure there are two newlines between the end of your commit description and the `on-behalf-of:` commit trailer. - -1. On the next line of the commit message, type `on-behalf-of: @org `, then a closing quotation mark. +1. Add `on-behalf-of: @org `, then add the closing quotation mark. ```shell $ git commit -m "Refactor usability tests. @@ -125,18 +99,18 @@ Organizations can use the `name@organization.com` email as a public point of con on-behalf-of: @ORG NAME@ORGANIZATION.COM" ``` -The new commit, message, and badge will appear on {% data variables.product.prodname_dotcom %} the next time you push. For more information, see [AUTOTITLE](/get-started/using-git/pushing-commits-to-a-remote-repository). +The new commit, message, and badge appear on {% data variables.product.prodname_dotcom %} after you push. For more information, see [AUTOTITLE](/get-started/using-git/pushing-commits-to-a-remote-repository). ### Creating commits with an `on-behalf-of` badge on {% data variables.product.github %} -After you make changes in a file using the web editor on {% data variables.product.github %}, you can create a commit on behalf of your organization by adding an `on-behalf-of:` trailer to the commit's message. +After you make changes in a file using the web editor on {% data variables.product.github %}, add the organization trailer before you commit. 1. Click **Commit changes...** 1. In the "Commit message" field, type a short, meaningful commit message that describes the changes you made. 1. In the text box below your commit message, add `on-behalf-of: @org `. 1. Click **Commit changes** or **Propose changes**. -The new commit, message, and badge will appear on {% data variables.product.prodname_dotcom %}. +The new commit, message, and badge appear on {% data variables.product.prodname_dotcom %}. {% endif %} diff --git a/content/pull-requests/how-tos/commit-changes/troubleshooting-commits.md b/content/pull-requests/how-tos/commit-changes/troubleshooting-commits.md index fb7df911e21b..2ff0861884ea 100644 --- a/content/pull-requests/how-tos/commit-changes/troubleshooting-commits.md +++ b/content/pull-requests/how-tos/commit-changes/troubleshooting-commits.md @@ -27,128 +27,86 @@ contentType: how-tos ## Commits are linked to the wrong user -{% data variables.product.github %} uses the email address in the commit header to link the commit to a {% data variables.product.github %} user. If your commits are linked to another user or not linked to any user, you may need to change your local Git configuration settings, add an email address to your account email settings, or do both. +{% data variables.product.github %} links a commit to a user by matching the email address in the commit header to an email address on a {% data variables.product.github %} account. If your commits are linked to the wrong user or no user, update your Git email settings and add the email address to your account. > [!NOTE] -> If your commits are linked to another user, that does not mean the user can access your repository. A user can only access a repository you own if you add them as a collaborator or add them to a team that has access to the repository. +> If your commits are linked to another user, that does not give them access to your repository. ### Commits are linked to another user -If your commits are linked to another user, that means the email address in your local Git configuration settings is connected to that user's {% data variables.product.github %} account. In this case, you can change the email in your local Git configuration settings and add the new email address to your account to link future commits. +1. Change the email address in your local Git configuration by following [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address#setting-your-commit-email-address-in-git). If you work on multiple machines, change this setting on each one. +1. Add the email address to your account by following [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account). -1. To change the email address in your local Git configuration, follow the steps in [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address#setting-your-commit-email-address-in-git). If you work on multiple machines, you will need to change this setting on each one. -1. Add the email address from step 2 to your account settings by following the steps in [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account). - -Commits you make from this point forward will be linked to your account. +Future commits that use the email address will be linked to your account. ### Commits are not linked to any user -If your commits are not linked to any user, the commit author's name will not be rendered as a link to a user profile. To check the email address used for those commits and connect commits to your account, follow these steps. +To find out why a commit is not linked, inspect the commit on {% data variables.product.github %}. {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.navigate-to-commit-page %} {% data reusables.repositories.navigate-to-commit %} -1. To read a message about why the commit is not linked, hover over the blue {% octicon "question" aria-label="Question mark" %} to the right of the username. - - * **Unrecognized author (with email address)** If you see this message with an email address, the address you used to author the commit is not connected to your {% data variables.product.github %} account. To link your commits, [add the email address to your GitHub email settings](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account). If the email address has a Gravatar associated with it, the Gravatar will be displayed next to the commit, rather than the default gray Octocat. - * **Unrecognized author (no email address)** If you see this message without an email address, you used a generic email address that can't be connected to your {% data variables.product.github %} account. You will need to [set your commit email address in Git](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address), then [add the new address to your GitHub email settings](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account) to link your future commits. Old commits will not be linked. - * **Invalid email** The email address in your local Git configuration settings is either blank or not formatted as an email address. You will need to [set your commit email address in Git](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address), then [add the new address to your GitHub email settings](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account) to link your future commits. Old commits will not be linked. +1. Hover over the blue {% octicon "question" aria-label="Question mark" %} to the right of the username. +1. Use the message to decide what to update: + * **Unrecognized author (with email address):** Add the shown email address to your {% data variables.product.github %} account. + * **Unrecognized author (no email address):** Set your commit email address in Git, then add that address to your {% data variables.product.github %} account. + * **Invalid email:** Set a valid commit email address in Git, then add that address to your {% data variables.product.github %} account. -> [!WARNING] -> If your local Git configuration contained a generic email address, or an email address that was already attached to another user's account, then your previous commits will not be linked to your account. While Git does allow you to change the email address used for previous commits, we strongly discourage this, especially in a shared repository. +Old commits might not be linked after you update your email settings. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address). ## A commit exists on GitHub but not in your local clone -Sometimes a commit will be viewable on {% data variables.product.github %}, but will not exist in your local clone of the repository. - -When you use `git show` to view a specific commit on the command line, you may get a fatal error. - -For example, you may receive a `bad object` error locally: - -```shell -$ git show 1095ff3d0153115e75b7bca2c09e5136845b5592 -> fatal: bad object 1095ff3d0153115e75b7bca2c09e5136845b5592 -``` - -However, when you view the commit on {% data variables.location.product_location %}, you can see it without any problems: - -`github.com/ACCOUNT/REPOSITORY/commit/1095ff3d0153115e75b7bca2c09e5136845b5592` - -The following explanations are possible: - -* The local repository is out of date. -* The branch that contains the commit was deleted, so the commit is no longer referenced. -* Someone force pushed over the commit. +If `git show COMMIT-SHA` returns an error locally but the commit is visible on {% data variables.product.github %}, your local clone may be out of date or the commit may no longer be referenced by a branch. ### The local repository is out of date -Your local repository may not have the commit yet. To get information from your remote repository to your local clone, use `git fetch`: +Fetch information from the remote repository. ```shell git fetch REMOTE ``` -This safely copies information from the remote repository to your local clone without changing the files you have checked out. - -You can use `git fetch upstream` to get information from a repository you've forked. You can use `git fetch origin` to get information from a repository you've only cloned. - -> [!TIP] -> For more information, read about [managing remotes and fetching data](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) in the [Pro Git](https://git-scm.com/book) book. +Use `git fetch upstream` for a fork's upstream repository, or `git fetch origin` for the repository you cloned. ### The branch that contained the commit was deleted -If a collaborator on the repository deleted the branch containing the commit or force pushed over the branch, the missing commit may have been orphaned. This means the commit cannot be reached from any reference, so it will not be fetched into your local clone. - -If any collaborator has a local clone of the repository with the missing commit, they can push it back to {% data variables.product.github %}. They need to make sure a local branch references the commit. Then, they can push it as a new branch to {% data variables.product.github %}. - -Let's say that the person still has a local branch, called `B`, that contains the commit. This branch might track the branch that was force pushed or deleted, and the person might not have updated it yet. To preserve the commit, they can push that local branch to a new branch, called `recover-B`, on {% data variables.product.github %}. For this example, let's assume they have a remote named `upstream` with push access to `github.com/ACCOUNT/REPOSITORY`. - -The other person runs: +If the branch was deleted or force pushed, ask a collaborator who still has the commit locally to push it to a new branch. ```shell -$ git branch recover-B B -# Create a new local branch referencing the commit -$ git push upstream B:recover-B -# Push local B to new upstream branch, creating new reference to commit +git branch recover-B B +git push upstream B:recover-B ``` -Now, _you_ can run: +Then, fetch the recovered branch. ```shell -$ git fetch upstream recover-B -# Fetch commit into your local repository. +git fetch upstream recover-B ``` ### Avoid force pushes -Avoid force pushing to a repository unless absolutely necessary. This is especially true if more than one person can push to the repository. If someone force pushes to a repository, the force push may overwrite commits that other people based their work on. Force pushing changes the repository history and can corrupt pull requests. +Avoid force pushing unless necessary, especially when more than one person can push to the repository. Force pushing rewrites repository history and can disrupt collaborators or corrupt pull requests. ## A commit is blocked by push protection -To keep your repository secure, push protection prevents you from accidentally committing secrets to the repository. +Push protection blocks commits, uploads, or API requests that contain supported secrets. ### Understanding why push protection has blocked your commit -Leaked secrets can pose serious security risks to your repository and your supply chain. Push protection prevents you from accidentally adding secrets to your codebase, where malicious actors could exploit them. - -If the repository you're contributing to on {% data variables.product.github %} is secured by push protection, you'll encounter a push protection block whenever you: - -* **Push commits** containing recognized secrets **from the command line** to the remote repository. -* **Commit changes** or upload files containing recognized secrets to a repository in the **{% data variables.product.github %} UI**. -* **Make certain requests** containing recognized secrets in **the REST API**. +If push protection blocks your work, {% data variables.product.github %} detected a supported secret in your commit or request. Remove the secret before trying again. ### Resolving a push protection block -To resolve the block, you should remove the secret from the commit or request. If you believe the secret is safe to push, you may be able to bypass the block. For more information about how to remove the secret or, if necessary, bypass the block, see: - -* [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-command-line) -* [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-in-the-github-ui) -* [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-rest-api) +1. Review the push protection message to identify the secret and where it appears. +1. Remove the secret from the commit, file upload, or API request. +1. Try the push, commit, upload, or request again. +1. If you believe the secret is safe to push, follow the bypass steps for your workflow: + * [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-command-line) + * [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-in-the-github-ui) + * [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-rest-api) ## Further reading * [AUTOTITLE](/search-github/searching-on-github/searching-commits) * [AUTOTITLE](/code-security/secret-scanning/introduction/about-push-protection) * [AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns) -* ["Working with Remotes" from the _Pro Git_ book](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) -* ["Data Recovery" from the _Pro Git_ book](https://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery) diff --git a/content/pull-requests/how-tos/create-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md b/content/pull-requests/how-tos/create-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md index 94112a4993a6..0328b70ba454 100644 --- a/content/pull-requests/how-tos/create-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md +++ b/content/pull-requests/how-tos/create-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md @@ -16,79 +16,42 @@ category: - Create pull requests contentType: how-tos --- -You can make commits only on pull request branches that: -* Are opened in a repository that you have push access to and were created from a fork of that repository -* Are on a user-owned fork -* Have permission from the pull request creator -* Don't have [branch restrictions](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#restrict-who-can-push-to-matching-branches) that prevent you from committing -Only the user who created the pull request can give you permission to push commits to the user-owned fork. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). +To commit to a pull request branch created from a fork, you need push access to the base repository, permission from the pull request creator, and a user-owned fork without branch restrictions that prevent your push. Only the pull request creator can allow edits to their fork. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). -> [!NOTE] -> You can also make commits to a pull request branch from a fork of your repository through {% data variables.location.product_location %}. To do this, create your own copy (or fork) of the fork of your repository. Then, commit changes to the same head branch where the original pull request changes were created. For some general guidelines, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork). - -1. On {% data variables.product.github %}, navigate to the main page of the fork (or copy of your repository) where the pull request branch was created. +1. On {% data variables.product.github %}, navigate to the fork where the pull request branch was created. {% data reusables.repositories.copy-clone-url %} {% data reusables.command_line.open_the_multi_os_terminal %} - - > [!TIP] - > If you prefer to clone the fork using {% data variables.product.prodname_desktop %}, then see [AUTOTITLE](/repositories/creating-and-managing-repositories/cloning-a-repository#cloning-a-repository-to-github-desktop). - -1. Change the current working directory to the location where you want to download the cloned directory. +1. Change the current working directory to the location where you want to clone the fork. ```shell cd open-source-projects ``` -1. Type `git clone`, then paste the URL you copied in Step 3. +1. Clone the fork, then navigate into the cloned repository. ```shell git clone https://{% data variables.product.product_url %}/USERNAME/FORK-OF-THE-REPOSITORY + cd FORK-OF-THE-REPOSITORY ``` -1. Press **Enter**. Git creates your local clone. - - ```shell - $ git clone https://{% data variables.product.product_url %}/USERNAME/FORK-OF-THE-REPOSITORY - > Cloning into `FORK-OF-THE-REPOSITORY`... - > remote: Counting objects: 10, done. - > remote: Compressing objects: 100% (8/8), done. - > remove: Total 10 (delta 1), reused 10 (delta 1) - > Unpacking objects: 100% (10/10), done. - ``` - - > [!TIP] - > The error message "fatal: destination path 'REPOSITORY-NAME' already exists and is not an empty directory" means that your current working directory already contains a repository with the same name. To resolve the error, you must clone the fork in a different directory. - -1. Navigate into your new cloned repository. +1. Check out the pull request's compare branch. To find the compare branch, open the pull request and check the branch shown at the top of the page. ```shell - cd FORK-OF-THE-REPOSITORY + git checkout TEST-BRANCH ``` -1. Switch to the compare branch of the pull request where the original changes were made. To find the compare branch, navigate to the original pull request and check the top of the pull request. - - In this example, the compare branch is `test-branch`: +1. Make your changes, then stage and commit them. ```shell - git checkout TEST-BRANCH + git add . + git commit -m "YOUR-COMMIT-MESSAGE" ``` - > [!TIP] - > For more information about pull request branches, including examples, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request#changing-the-branch-range-and-destination-repository). - -1. Make any needed changes to this branch. You can push new commits to it, run local tests, or merge other branches into the branch. -1. After you commit your changes to the head branch of the pull request, push your changes directly to the original pull request. In this example, the head branch is `test-branch`: +1. Push your commit to the pull request branch. ```shell - $ git push origin test-branch - > Counting objects: 32, done. - > Delta compression using up to 8 threads. - > Compressing objects: 100% (26/26), done. - > Writing objects: 100% (29/29), 74.94 KiB | 0 bytes/s, done. - > Total 29 (delta 8), reused 0 (delta 0) - > To https://{% data variables.product.product_url %}/USERNAME/FORK-OF-THE-REPOSITORY.git - > 12da2e9..250e946 TEST-BRANCH -> TEST-BRANCH + git push origin TEST-BRANCH ``` Your new commits appear on the original pull request on {% data variables.location.product_location %}. diff --git a/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request-from-a-fork.md b/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request-from-a-fork.md index f4f5b4a12c7f..e36e76c44e5a 100644 --- a/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request-from-a-fork.md +++ b/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request-from-a-fork.md @@ -17,16 +17,10 @@ category: - Create pull requests contentType: how-tos --- -If your pull request compares your topic branch with a branch in the upstream repository as the base branch, your topic branch is also called the "compare branch" of the pull request. -Before creating a pull request from a fork, you need to fork the upstream repository and push your changes to a branch in your fork. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo). +Before creating a pull request from a fork, fork the upstream repository and push your changes to a branch in your fork. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo). -For example: -* Your topic branch (also known as “feature branch”) is the branch where you make changes in your forked repository, for example, `my-topic-branch`. -* The base branch is the branch in the upstream (central) repository where you want to merge your changes, for example, `main`. -* The pull request compares the changes proposed by the topic branch (`my-topic-branch`) with the base branch (`main`), so `my-topic-branch` is the “compare branch”. - -For more information about pull request branches, including examples, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request#changing-the-branch-range-and-destination-repository). +In a pull request from a fork, the base branch is where you want to merge your changes, and the compare branch is the branch in your fork that contains your changes. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request#changing-the-branch-range-and-destination-repository). {% data reusables.pull_requests.perms-to-open-pull-request %} diff --git a/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request.md b/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request.md index 006c69676e93..b3e127206935 100644 --- a/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request.md +++ b/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request.md @@ -26,21 +26,14 @@ When you create your pull request, you can specify which branch you want to merg ## Changing the branch range and destination repository -By default, pull requests are based on the parent repository's default branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches#about-the-default-branch). - -If the default parent repository isn't correct, you can change both the parent repository and the branch with the dropdown lists. You can also swap your head and base branches with the dropdown lists to compare reference points. The references must be branch names in your GitHub repository. +By default, pull requests target the parent repository's default branch. Use the branch and repository dropdown menus to choose the base branch where changes should be applied and the head branch that contains your changes. ![Screenshot of a pull request. The dropdown to edit the compare branch is expanded.](/assets/images/help/pull_requests/pull-request-review-edit-branch.png) -When thinking about branches, remember that the _base branch_ is **where** changes should be applied. The _head branch_ contains **what** you would like to be applied. - -When you change the base repository, you also change notifications for the pull request. Everyone who can push to the base repository receives an email notification and sees the new pull request in their dashboard the next time they sign in. - -When you change any information in the branch range, the Commit and Files changed preview areas update to show your new range. +When you change the branch range, the Commit and Files changed preview areas update to show the new comparison. If you change the base repository, people who can push to that repository receive notifications for the pull request. > [!TIP] -> * Using the compare view, you can set up comparisons across any timeframe. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits). -> * Project maintainers can add a pull request template for a repository. Templates include prompts for information in the body of a pull request. For more information, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/about-issue-and-pull-request-templates). +> For more comparison options, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits). ## Creating the pull request diff --git a/content/pull-requests/how-tos/create-pull-requests/creating-and-deleting-branches-within-your-repository.md b/content/pull-requests/how-tos/create-pull-requests/creating-and-deleting-branches-within-your-repository.md index e7e31bfa55e1..bc80f5ba862e 100644 --- a/content/pull-requests/how-tos/create-pull-requests/creating-and-deleting-branches-within-your-repository.md +++ b/content/pull-requests/how-tos/create-pull-requests/creating-and-deleting-branches-within-your-repository.md @@ -19,7 +19,7 @@ contentType: how-tos ## Creating a branch -You can create branches in several ways on {% data variables.product.github %}. +Create a branch when you want a separate place to work on changes before opening a pull request. > [!NOTE] > You can only create a branch in a repository to which you have push access. @@ -32,9 +32,7 @@ You can create branches in several ways on {% data variables.product.github %}. ![Screenshot of the "Branches" page for a repository. A green button, labeled "New branch", is highlighted with an orange outline.](/assets/images/help/branches/new-branch-button.png) 1. Under "Branch name", type a name for the branch. -1. Under "Branch source", choose a source for your branch. - * If your repository is a fork, select the repository dropdown menu and click your fork or the upstream repository. - * Select the branch dropdown menu and click a branch. +1. Under "Branch source", choose the repository and branch to base your new branch on. 1. Click **Create branch**. ### Creating a branch using the branch dropdown @@ -55,12 +53,14 @@ You can create a branch to work on an issue directly from the issue page. For mo ## Deleting a branch +Delete branches that you no longer need, such as branches for merged or closed work. + {% data reusables.pull_requests.automatically-delete-branches %} > [!NOTE] -> If the branch you want to delete is the repository's default branch, you must choose a new default branch before deleting the branch. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/changing-the-default-branch). +> If the branch you want to delete is the repository's default branch, choose a new default branch first. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/changing-the-default-branch). -If the branch you want to delete is associated with an open pull request, you must merge or close the pull request before deleting the branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request) or [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/closing-a-pull-request). +If the branch is associated with an open pull request, merge or close the pull request before deleting the branch. {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.navigate-to-branches %} diff --git a/content/pull-requests/how-tos/create-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md b/content/pull-requests/how-tos/create-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md index c053f470d8cb..f82409fc7b9b 100644 --- a/content/pull-requests/how-tos/create-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md +++ b/content/pull-requests/how-tos/create-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md @@ -16,22 +16,14 @@ contentType: how-tos ## About keeping your pull request in sync -Before you merge your pull request, other changes may merge into the base branch. This can make your pull request's head branch out of sync. Updating your pull request with the latest changes from the base branch can help catch problems before merging. - -You can update a pull request's head branch from the command line or the pull request page. The **Update branch** button is displayed when all of these are true: - -* There are no merge conflicts between the pull request branch and the base branch. -* The pull request branch is not up to date with the base branch. -* The base branch requires branches to be up to date before merging or the setting to always suggest updating branches is enabled. +Before merging, update your pull request branch with changes from the base branch to catch conflicts or test failures early. You can update the branch from the pull request page when there are no merge conflicts and the branch is behind the base branch. > [!NOTE] -> You may not be able to use the `Update branch` button if the HEAD branch of your pull request is a protected branch. - -For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches), [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets), and [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-suggestions-to-update-pull-request-branches). +> You may not be able to use the `Update branch` button if the HEAD branch of your pull request is a protected branch. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). -If changes to the base branch cause merge conflicts in your pull request branch, you can't update the branch until all conflicts are resolved. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts). +If changes to the base branch cause merge conflicts in your pull request branch, resolve the conflicts before updating the branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts). -From the pull request page, you can update your pull request's branch using a traditional merge or by rebasing. A traditional merge creates a merge commit that merges the base branch into the head branch of the pull request. Rebasing applies the changes from _your_ branch onto the latest version of the base branch. The result is a branch with a linear history, because no merge commit is created. +From the pull request page, you can update by merging the base branch into your head branch or by rebasing your changes onto the latest base branch. Rebasing creates a linear history without a merge commit. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests#three-dot-and-two-dot-git-diff-comparisons). ## Updating your pull request branch @@ -50,4 +42,3 @@ From the pull request page, you can update your pull request's branch using a tr * [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) * [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork) diff --git a/content/pull-requests/how-tos/create-pull-requests/requesting-a-pull-request-review.md b/content/pull-requests/how-tos/create-pull-requests/requesting-a-pull-request-review.md index c3b9c8a212ce..b02ab35e0ec6 100644 --- a/content/pull-requests/how-tos/create-pull-requests/requesting-a-pull-request-review.md +++ b/content/pull-requests/how-tos/create-pull-requests/requesting-a-pull-request-review.md @@ -18,16 +18,7 @@ category: contentType: how-tos --- -Repositories belong to a personal account (a single individual owner) or an organization account (a shared account with many collaborators or maintainers). For more information, see [AUTOTITLE](/get-started/learning-about-github/types-of-github-accounts). - -Owners and collaborators on a repository owned by a personal account can assign pull request reviews. Organization members with triage permissions can also assign a reviewer for a pull request. - -To assign a reviewer to a pull request, you need write access to the repository. For more information about repository access, see [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization). If you have write access, you can assign anyone who has read access to the repository as a reviewer. - -Organization members with write access can also assign a pull request review to any person or team with read access to a repository. The requested reviewer or team receives a notification that you asked them to review the pull request. If you request a review from a team and code review assignment is enabled, specific members are requested and the team is removed as a reviewer. For more information, see [AUTOTITLE](/organizations/organizing-members-into-teams/managing-code-review-settings-for-your-team). - -> [!NOTE] -> Pull request authors can't request reviews unless they are either a repository owner or collaborator with write access to the repository. +To request a review, you need write access to the repository. You can request a review from a person or team with read access to the repository, and they receive a notification. Pull request authors can request reviews only if they are repository owners or collaborators with write access. {% ifversion copilot %} @@ -35,9 +26,7 @@ Organization members with write access can also assign a pull request review to {% endif %} -You can request a review from either a suggested person or a specific person. Suggested reviewers are based on [git blame data](/repositories/working-with-files/using-files/viewing-a-file). If you request a review, other people with read access to the repository can still review your pull request. - -After someone reviews your pull request and you make the necessary changes, you can request another review from the same reviewer. If the requested reviewer does not submit a review, and the pull request meets the repository's [mergeability requirements](/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests), you can still merge the pull request. +Suggested reviewers are based on [git blame data](/repositories/working-with-files/using-files/viewing-a-file). After someone reviews your pull request and you make changes, you can request another review from the same reviewer. {% data reusables.repositories.sidebar-pr %} 1. In the list of pull requests, click the pull request that you want a specific person or team to review. diff --git a/content/pull-requests/how-tos/merge-and-close-pull-requests/automatically-merging-a-pull-request.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/automatically-merging-a-pull-request.md index 14d614383a6b..d5fb0e504fe9 100644 --- a/content/pull-requests/how-tos/merge-and-close-pull-requests/automatically-merging-a-pull-request.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/automatically-merging-a-pull-request.md @@ -18,13 +18,9 @@ contentType: how-tos --- ## About auto-merge -When you enable auto-merge for a pull request, the pull request merges automatically when all required reviews are met and all required status checks have passed. Auto-merge helps you avoid waiting for requirements to be met, so you can move on to other tasks. +Auto-merge merges a pull request automatically after all required reviews and status checks pass. Before you use auto-merge, it must be enabled for the repository. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository). -Before you can use auto-merge with a pull request, auto-merge must be enabled for the repository. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository). - -After you enable auto-merge for a pull request, auto-merge will be disabled if someone who does not have write permissions to the repository pushes new changes to the head branch or switches the base branch of the pull request. For example, if a maintainer enables auto-merge for a pull request from a fork, auto-merge will be disabled after a contributor pushes new changes to the pull request. - -You can provide feedback about auto-merge through a [{% data variables.product.prodname_github_community %} discussion](https://github.com/orgs/community/discussions/categories/pull-requests). +Auto-merge is disabled if someone without write permissions pushes new changes to the head branch or switches the base branch. ## Enabling auto-merge diff --git a/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request-with-a-merge-queue.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request-with-a-merge-queue.md index 962b66131872..bd78bbfdf9d4 100644 --- a/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request-with-a-merge-queue.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request-with-a-merge-queue.md @@ -19,8 +19,7 @@ contentType: how-tos ## About merge queues -{% data reusables.pull_requests.merge-queue-overview %} -{% data reusables.pull_requests.merge-queue-references %} +A merge queue helps merge pull requests into a busy protected branch after required checks pass. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-a-merge-queue). ## Adding a pull request to a merge queue @@ -41,7 +40,7 @@ contentType: how-tos ![Screenshot of the merge queue options for a pull request.](/assets/images/help/pull_requests/merge-queue-options.png) > [!NOTE] - > You can click **Merge when ready** whenever you're ready to merge your proposed changes. {% data variables.product.github %} will automatically add the pull request to the merge queue once required approval and status check conditions are met. + > You can click **Merge when ready** before all requirements pass. {% data variables.product.github %} adds the pull request to the queue when requirements are met. 1. Confirm you want to add the pull request to the merge queue by clicking **Confirm merge when ready**. @@ -100,6 +99,6 @@ You can view the merge queue for a base branch in various places on {% data vari ## Understanding why your pull request was removed from the merge queue -{% data reusables.pull_requests.merge-queue-reject %} +A pull request can be removed from the merge queue if it no longer meets merge requirements or if a queue check fails. {% data reusables.pull_requests.merge-queue-removal-reasons %} diff --git a/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request.md index 0a4beb4511b3..5720dfc2d93f 100644 --- a/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request.md @@ -17,29 +17,28 @@ contentType: how-tos --- ## About pull request merges -In a pull request, you propose that changes you've made on a head branch should be merged into a base branch. By default, any pull request can be merged at any time, unless the head branch is in conflict with the base branch. +Merge a pull request when the proposed changes are ready and any repository requirements are satisfied. You can't merge a draft pull request. -However, there may be restrictions on when you can merge a pull request into a specific branch. For example, you may only be able to merge a pull request into the default branch if required status checks are passing. Repository administrators can add these constraints to branches using branch protection rules. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). +Repository rules or branch protection may require reviews, status checks, or an up-to-date branch before merging. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). {% data reusables.repositories.rulesets-alternative %} {% data reusables.pull_requests.you-can-auto-merge %} -If the pull request has merge conflicts, or if you want to test the changes before merging, you can [check out the pull request locally](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally) and merge it using the command line. +If the base branch requires a merge queue, the available merge options differ from those described here. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request-with-a-merge-queue). -You can't merge a draft pull request. For more information about draft pull requests, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests#draft-pull-requests). +If the pull request has merge conflicts, or if you want to test changes first, [check out the pull request locally](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally). -The repository may be configured so that the head branch for a pull request is automatically deleted when you merge a pull request. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-the-automatic-deletion-of-branches). +The repository may automatically delete the head branch after merging. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-the-automatic-deletion-of-branches). > [!NOTE] > {% data reusables.pull_requests.retargeted-on-branch-deletion %} -> For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches#working-with-branches). -Pull requests are merged using [the `--no-ff` option](https://git-scm.com/docs/git-merge#_fast_forward_merge), except for [pull requests with squashed or rebased commits](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges), which are merged using the fast-forward option. +Pull requests use [the `--no-ff` option](https://git-scm.com/docs/git-merge#_fast_forward_merge), except squashed or rebased pull requests, which use fast-forward merging. {% data reusables.pull_requests.close-issues-using-keywords %} -If you decide you don't want the changes in a topic branch to be merged to the upstream branch, you can [close the pull request](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/closing-a-pull-request) without merging. +If you don't want to merge the changes, you can [close the pull request](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/closing-a-pull-request). ## Merging a pull request @@ -47,9 +46,9 @@ If you decide you don't want the changes in a topic branch to be merged to the u {% data reusables.repositories.sidebar-pr %} 1. In the "Pull Requests" list, click the pull request you want to merge. -1. Scroll down to the bottom of the pull request. Depending on the merge options enabled for your repository, you can: +1. Scroll down to the bottom of the pull request. Depending on the merge options enabled for your repository, choose a merge method: - * [Merge all of the commits into the base branch](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges) by clicking **Merge pull request**. If the **Merge pull request** option is not shown, click the merge dropdown menu and select **Create a merge commit**. + * [Merge all commits into the base branch](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges) by clicking **Merge pull request**. If the option is not shown, click the merge dropdown menu and select **Create a merge commit**. ![Screenshot of the merge options for a pull request. The arrow to expand the dropdown is outlined in dark orange.](/assets/images/help/pull_requests/merge-pull-request-options.png) diff --git a/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github.md index eb45df9ac697..c3700ca16d36 100644 --- a/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github.md @@ -17,22 +17,20 @@ category: - Merge and close pull requests contentType: how-tos --- -On {% data variables.product.github %}, you can only resolve merge conflicts caused by competing line changes, such as when people make different changes to the same line of the same file on different branches in your Git repository. For all other types of merge conflicts, you must resolve the conflict locally on the command line. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). +You can resolve simple competing line change conflicts on {% data variables.product.github %}. For other conflicts, use the command line. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). {% ifversion copilot %} -If you have access to {% data variables.copilot.copilot_cloud_agent %} and it is enabled for the repository, you can click **Fix with {% data variables.product.prodname_copilot_short %}** in the merge box to have {% data variables.product.prodname_copilot_short %} resolve the merge conflicts automatically. {% data variables.product.prodname_copilot_short %} will analyze the conflicting changes, resolve the conflicts, and verify that the build, tests, and linter still pass. For more information, see [AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/make-changes-to-an-existing-pr#resolving-merge-conflicts). +If {% data variables.copilot.copilot_cloud_agent %} is enabled for the repository, you can click **Fix with {% data variables.product.prodname_copilot_short %}** in the merge box to have {% data variables.product.prodname_copilot_short %} resolve conflicts automatically. For more information, see [AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/make-changes-to-an-existing-pr#resolving-merge-conflicts). {% endif %} {% ifversion ghes %} -If a site administrator disables the merge conflict editor for pull requests between repositories, you cannot use the conflict editor on {% data variables.product.prodname_ghe_server %} and must resolve merge conflicts on the command line. For example, if the merge conflict editor is disabled, you cannot use it on a pull request between a fork and upstream repository. +If a site administrator disables the merge conflict editor for pull requests between repositories, resolve merge conflicts on the command line. {% endif %} > [!WARNING] -> When you resolve a merge conflict on {% data variables.product.github %}, the entire [base branch](/get-started/learning-about-github/github-glossary#base-branch) of your pull request is merged into the [head branch](/get-started/learning-about-github/github-glossary#head-branch). Make sure you really want to commit to this branch. -> -> If the head branch is the default branch of your repository, you'll be given the option of creating a new branch to serve as the head branch for your pull request. If the head branch is protected, you won't be able to merge your conflict resolution into it, so you'll be prompted to create a new head branch. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). +> Resolving conflicts on {% data variables.product.github %} merges the entire [base branch](/get-started/learning-about-github/github-glossary#base-branch) into the [head branch](/get-started/learning-about-github/github-glossary#head-branch). If the head branch is the default or protected branch, you may be prompted to create a new head branch. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). {% data reusables.repositories.sidebar-pr %} 1. In the "Pull Requests" list, click the pull request with a merge conflict that you want to resolve. @@ -41,7 +39,7 @@ If a site administrator disables the merge conflict editor for pull requests bet ![Screenshot of a warning that a pull request has a merge conflict. The "Resolve merge conflicts" button is outlined in dark orange.](/assets/images/help/pull_requests/resolve-merge-conflicts-button.png) > [!NOTE] - > If the **Resolve conflicts** button is deactivated, your pull request's merge conflict is too complex to resolve on {% data variables.product.github %}{% ifversion ghes %} or the site administrator has disabled the conflict editor for pull requests between repositories{% endif %}. You must resolve the merge conflict using an alternative Git client or Git on the command line. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). + > If **Resolve conflicts** is deactivated, resolve the conflict using another Git client or the command line. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). {% data reusables.pull_requests.decide-how-to-resolve-competing-line-change-merge-conflict %} 1. If your file has more than one merge conflict, scroll down to the next set of conflict markers and repeat steps four and five to resolve the conflict. @@ -54,15 +52,9 @@ If a site administrator disables the merge conflict editor for pull requests bet ![Screenshot of the editor to resolve a merge conflict in a pull request. The "Commit merge" button is outlined in dark orange.](/assets/images/help/pull_requests/merge-conflict-commit-changes.png) -1. If prompted, review the branch that you are committing to. +1. If prompted, review the branch that you are committing to. You can update the head branch or, if available, create a new branch for the pull request. If the head branch is protected, you must create a new branch. - If the head branch is the default branch of the repository, you can choose either to update this branch with the changes you made to resolve the conflict or to create a new branch and use it as the head branch of the pull request. - - If you choose to create a new branch, enter a name for the branch. - - If the head branch of your pull request is protected, you must create a new branch. You won't get the option to update the protected branch. - - Click **Create branch and update my pull request** or **I understand, continue updating BRANCH**. The button text corresponds to the action you are performing. + Click **Create branch and update my pull request** or **I understand, continue updating BRANCH**. 1. To merge your pull request, click **Merge pull request**. For more information about other pull request merge options, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request). ## Further reading diff --git a/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line.md index e550c21bde8e..9fdf1ec05a59 100644 --- a/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line.md @@ -24,9 +24,7 @@ Merge conflicts happen when competing changes are made to the same line of a fil ## Competing line change merge conflicts -To resolve a merge conflict caused by competing line changes, you must choose which changes to incorporate from the different branches in a new commit. - -For example, if you and another person both edited the file `styleguide.md` on the same lines in different branches of the same Git repository, you'll get a merge conflict error when you try to merge these branches. You must resolve this merge conflict in a new commit before you can merge these branches. +When competing changes affect the same lines, choose which changes to keep, then commit the resolution. {% data reusables.command_line.open_the_multi_os_terminal %} 1. Navigate into the local Git repository that has the merge conflict. @@ -52,9 +50,7 @@ For example, if you and another person both edited the file `styleguide.md` on t ``` 1. Open your preferred text editor, such as [{% data variables.product.prodname_vscode %}](https://code.visualstudio.com/), and navigate to the file that has merge conflicts. -1. To see the beginning of the merge conflict in your file, search the file for the conflict marker `<<<<<<<`. When you open the file in your text editor, you'll see the changes from the HEAD or base branch after the line `<<<<<<< HEAD`. - - Next, you'll see `=======`, which divides your changes from the changes in the other branch, followed by `>>>>>>> BRANCH-NAME`. In this example, one person wrote "open an issue" in the base or HEAD branch and another person wrote "ask your question in IRC" in the compare branch or `branch-a`. +1. Search the file for the conflict marker `<<<<<<<`. The changes from the HEAD or base branch appear after `<<<<<<< HEAD`, followed by `=======`, then the changes from the other branch and `>>>>>>> BRANCH-NAME`. ```text If you have questions, please @@ -65,7 +61,7 @@ For example, if you and another person both edited the file `styleguide.md` on t >>>>>>> branch-a ``` -{% data reusables.pull_requests.decide-how-to-resolve-competing-line-change-merge-conflict %} In this example, both changes are incorporated into the final merge: +{% data reusables.pull_requests.decide-how-to-resolve-competing-line-change-merge-conflict %} For example, you can keep both changes: ```shell If you have questions, please open an issue or ask in our IRC channel if it's more urgent. @@ -87,9 +83,7 @@ You can now merge the branches on the command line or [push your changes to your ## Removed file merge conflicts -To resolve a merge conflict caused by competing changes to a file, where a person deletes a file in one branch and another person edits the same file, you must choose whether to delete or keep the removed file in a new commit. - -For example, if you edited a file, such as `README.md`, and another person removed the same file in another branch in the same Git repository, you'll get a merge conflict error when you try to merge these branches. You must resolve this merge conflict with a new commit before you can merge these branches. +When one branch deletes a file and another branch edits the same file, choose whether to keep or delete the file, then commit the resolution. {% data reusables.command_line.open_the_multi_os_terminal %} 1. Navigate into the local Git repository that has the merge conflict. @@ -118,9 +112,7 @@ For example, if you edited a file, such as `README.md`, and another person remov ``` 1. Open your preferred text editor, such as [{% data variables.product.prodname_vscode %}](https://code.visualstudio.com/), and navigate to the file that has merge conflicts. -1. Decide if you want to keep the removed file. You may want to view the latest changes made to the removed file in your text editor. - - To add the removed file back to your repository: +1. Decide whether to keep the removed file. To add it back to your repository: ```shell git add README.md diff --git a/content/pull-requests/how-tos/merge-and-close-pull-requests/reverting-a-pull-request.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/reverting-a-pull-request.md index abe9a9985a12..47fdd2598072 100644 --- a/content/pull-requests/how-tos/merge-and-close-pull-requests/reverting-a-pull-request.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/reverting-a-pull-request.md @@ -17,17 +17,12 @@ contentType: how-tos --- ## About reverting a pull request -Reverting a pull request on {% data variables.product.github %} creates a new pull request that contains a revert of the merge commit from the original merged pull request. To revert pull requests, you must have [write permissions](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization) in the repository. +Reverting a merged pull request creates a new pull request that reverts the original merge commit. You must have [write permissions](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization) in the repository. ## Reverting a pull request > [!NOTE] -> You might need to revert the individual commits in your pull request if either of the following is true. -> -> * Reverting the pull request causes merge conflicts -> * The original pull request was not merged on {% data variables.product.github %}. For example, someone could have merged the pull request using a fast-forward merge on the command line. -> -> For more information about using Git to manually revert individual commits, see [Git revert](https://git-scm.com/docs/git-revert.html) in the Git documentation. +> You may need to revert individual commits if reverting the pull request causes merge conflicts or if the original pull request was not merged on {% data variables.product.github %}. For more information, see [Git revert](https://git-scm.com/docs/git-revert.html) in the Git documentation. {% data reusables.repositories.sidebar-pr %} 1. In the "Pull Requests" list, click the pull request you want to revert. diff --git a/content/pull-requests/how-tos/merge-and-close-pull-requests/troubleshooting-required-status-checks.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/troubleshooting-required-status-checks.md index f271d656a90f..353594f9938f 100644 --- a/content/pull-requests/how-tos/merge-and-close-pull-requests/troubleshooting-required-status-checks.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/troubleshooting-required-status-checks.md @@ -16,21 +16,13 @@ category: - Merge and close pull requests contentType: how-tos --- -For an overview of how status checks work, including the difference between checks and commit statuses, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks). +Use these checks when a required status check blocks merging or pushing to a protected branch. For an overview, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks). -If you have a check and a status with the same name, and you select that name as a required status check, both the check and the status are required. For more information, see [AUTOTITLE](/rest/checks). +* A required status check must have completed successfully in the chosen repository during the past seven days. +* If a check and a commit status have the same name, both must pass when that name is required. For more information, see [AUTOTITLE](/rest/checks). +* If branch protection requires your branch to be up-to-date, merge or rebase the base branch into your branch. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging) and [AUTOTITLE](/get-started/using-git/about-git-rebase). -> [!NOTE] -> To be required, status checks must have completed successfully within the chosen repository during the past seven days. - -After you enable required status checks, your branch may need to be up-to-date with the base branch before merging. This ensures that your branch has been tested with the latest code from the base branch. - -If your branch is out of date, you'll need to merge the base branch into your branch. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging). - -> [!NOTE] -> You can also bring your branch up to date with the base branch using Git rebase. For more information, see [AUTOTITLE](/get-started/using-git/about-git-rebase). - -You won't be able to push local changes to a protected branch until all required status checks pass. Instead, you'll receive an error message similar to the following. +If required status checks have not passed, pushing to a protected branch returns an error similar to this. ```shell remote: error: GH006: Protected branch update failed for refs/heads/main. @@ -42,28 +34,35 @@ remote: error: Required status check "ci-build" is failing ## Required check needs to succeed against the latest commit SHA -For a pull request to be merged, all required checks must pass against the latest commit SHA. This ensures that the most recent changes are validated and meet the required standards before merging. Checks triggered by a previous commit SHA are not used as required checks. Successful check statuses are: `success`, `skipped`, and `neutral`. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks). +Check the following if a required check is still blocking a pull request. + +* Required checks must pass on the latest commit SHA. Checks from earlier commits don't satisfy the requirement. +* Successful check statuses are `success`, `skipped`, and `neutral`. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks). ## Conflicts between head commit and test merge commit -Sometimes, the results of the status checks for the test merge commit and head commit conflict. If the test merge commit has a status, the test merge commit must pass. Otherwise, the status of the head commit must pass before you can merge the branch. +Use the pull request status checks box to identify which commit must pass. + +| Status check source | What must pass | What you may see | +| --- | --- | --- | +| Test merge commit has a status | The test merge commit | `Showing checks for the merge commit` | +| Test merge commit has no status | The head commit | Checks for the latest head commit | -If there is a conflict between the test merge commit and head commit, the checks for the test merge commit are shown in the pull request status checks box. This is indicated in the pull request status box by a line starting with `Showing checks for the merge commit`. For more information about test merge commits, see [AUTOTITLE](/rest/pulls/pulls#get-a-pull-request). +For more information about test merge commits, see [AUTOTITLE](/rest/pulls/pulls#get-a-pull-request). ## Handling skipped but required checks -> [!WARNING] -> If a workflow is skipped due to [path filtering](/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore), [branch filtering](/actions/using-workflows/workflow-syntax-for-github-actions#onpull_requestpull_request_targetbranchesbranches-ignore), or a [commit message](/actions/managing-workflow-runs/skipping-workflow-runs), checks associated with that workflow will remain in a "Pending" state. A pull request that requires those checks to be successful will be blocked from merging. -> -> {% data reusables.pull_requests.path-filtering-required-workflows %} -> -> If, however, a job within a workflow is skipped due to a conditional, it will report its status as "Success". For more information, see [AUTOTITLE](/actions/using-jobs/using-conditions-to-control-job-execution). -> -> When a job fails, any jobs that depend on the failed job are skipped and do not report a failure. A pull request that requires the check may not be blocked. To use a required check on a job that depends on other jobs, use the `always()` conditional expression in addition to `needs`, see [AUTOTITLE](/actions/using-jobs/using-jobs-in-a-workflow#defining-prerequisite-jobs). +| Cause | Result | How to fix or check | +| --- | --- | --- | +| A workflow is skipped by [path filtering](/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore), [branch filtering](/actions/using-workflows/workflow-syntax-for-github-actions#onpull_requestpull_request_targetbranchesbranches-ignore), or a [commit message](/actions/managing-workflow-runs/skipping-workflow-runs) | Associated checks stay in a "Pending" state and block merging | Avoid requiring workflows that can be skipped. | +| A job is skipped by a conditional | The job reports "Success" | See [AUTOTITLE](/actions/using-jobs/using-conditions-to-control-job-execution). | +| A job depends on a failed job | The dependent job is skipped and may not block merging | Use `always()` with `needs` for required checks that depend on other jobs. See [AUTOTITLE](/actions/using-jobs/using-jobs-in-a-workflow#defining-prerequisite-jobs). | + +{% data reusables.pull_requests.path-filtering-required-workflows %} ### Example -The following example shows a workflow that requires a "Successful" completion status for the `build` job. The workflow will be skipped if the pull request does not change any files in the `scripts` directory. +This workflow requires a successful `build` job, but runs only when a pull request changes files in `scripts`. ```yaml name: ci @@ -89,18 +88,16 @@ jobs: - run: npm test ``` -Because of [path filtering](/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore), a pull request that only changes a file in the root of the repository will not trigger this workflow and is blocked from merging. On the pull request, you would see "Waiting for status to be reported." - -{% data reusables.pull_requests.path-filtering-required-workflows %} +A pull request that only changes a file in the repository root will not trigger this workflow. If `build` is required, the pull request is blocked with "Waiting for status to be reported." ### Status checks with {% data variables.product.prodname_actions %} and a Merge queue -You **must** use the `merge_group` event to trigger your {% data variables.product.prodname_actions %} workflow when a pull request is added to a merge queue. +If a merge queue requires a {% data variables.product.prodname_actions %} check, trigger the workflow with the `merge_group` event. > [!NOTE] > {% data reusables.actions.merge-group-event-with-required-checks %} -A workflow that reports a check required by the target branch's protections would look like this: +Example trigger configuration: ```yaml on: diff --git a/content/pull-requests/how-tos/review-pull-requests/commenting-on-a-pull-request.md b/content/pull-requests/how-tos/review-pull-requests/commenting-on-a-pull-request.md index 616cf6f43615..9ac177ef5446 100644 --- a/content/pull-requests/how-tos/review-pull-requests/commenting-on-a-pull-request.md +++ b/content/pull-requests/how-tos/review-pull-requests/commenting-on-a-pull-request.md @@ -52,7 +52,7 @@ To reply to an existing line or file comment, navigate to the comment on either * If you want to add **multiple comments**, click **Start a review**, then continue adding comments. - When you're finished, click **Finish your review** at the top right of the page, leave a summary of your review, and click **Submit review**. + When you're finished, click **Finish your review**, leave a summary of your review, and click **Submit review**. Anyone watching the pull request or repository will receive a notification of your comments. Batching your comments avoids sending multiple notifications. {% ifversion copilot %}If you are commenting on a pull request created by {% data variables.product.prodname_copilot_short %}, batching your comments prevents {% data variables.product.prodname_copilot_short %} from starting to work on individual comments before you have completed your review. See [AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/start-copilot-sessions).{% endif %} @@ -68,7 +68,7 @@ If the suggestion in a comment is out of your pull request's scope, you can open #### Discovering and navigating conversations -You can discover and navigate to all the conversations in your pull request with the **Conversations** menu at the top of the **Files changed** tab. +You can discover and navigate to all the conversations in your pull request with the **Conversations** menu on the **Files changed** tab. In this view, you can see which conversations are unresolved, resolved, and outdated. This makes it easy to discover and resolve conversations. diff --git a/content/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request.md b/content/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request.md index 871f46760e88..89f1764b2980 100644 --- a/content/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request.md +++ b/content/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request.md @@ -91,7 +91,7 @@ To change the format of the diff view in this tab, click {% octicon "gear" aria- {% data reusables.repositories.start-file-comment %} 1. When you're done, click **Start a review**. If you have already started a review, you can click **Add review comment**. -Before you submit your review, your line comments are _pending_ and only visible to you. You can edit pending comments anytime before you submit your review. To cancel a pending review, including all of its pending comments, click **Review changes** above the changed code, then click **Abandon review**. +Before you submit your review, your line comments are _pending_ and only visible to you. You can edit pending comments anytime before you submit your review. To cancel a pending review, including all of its pending comments, click **Review changes**, then click **Abandon review**. ![Screenshot of the comment field for a review. The "Abandon review" button is outlined in dark orange.](/assets/images/help/pull_requests/abandon-review-button.png) {% endwebui %} diff --git a/content/pull-requests/reference/using-query-parameters-to-create-a-pull-request.md b/content/pull-requests/reference/using-query-parameters-to-create-a-pull-request.md index 6095e9e044ba..913e12022391 100644 --- a/content/pull-requests/reference/using-query-parameters-to-create-a-pull-request.md +++ b/content/pull-requests/reference/using-query-parameters-to-create-a-pull-request.md @@ -13,22 +13,19 @@ category: contentType: reference --- -You can use query parameters to open pull requests. Query parameters are optional parts of a URL that you can customize to share a specific web page view, such as search filter results or a pull request template on {% data variables.product.prodname_dotcom %}. +You can add query parameters to a compare URL to open a pull request with pre-populated fields. For pull request templates, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository). -To create your own query parameters, you must match the key and value pair. For more information on creating pull request templates, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository). +| Parameter | Purpose | Example | +| --- | --- | --- | +| `quick_pull` | Opens the "Open a pull request" page for the compared branches. | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1` | +| `title` | Adds a pull request title. Use `+` for spaces. | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&labels=bug&title=Bug+fix` | +| `body` | Adds text to the pull request body. Use `+` for spaces. | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&title=Bug+fix&body=Describe+the+fix.` | +| `labels` | Adds one or more labels. Separate multiple labels with commas. | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&labels=help+wanted,bug` | +| `milestone` | Adds a milestone. Use `+` for spaces. | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&milestone=testing+milestones` | +| `assignees` | Assigns the pull request to one or more users. Separate multiple users with commas. | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&assignees=octocat` | +| `projects` | Adds the pull request to a project. | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&title=Bug+fix&projects=octo-org/1` | +| `template` | Adds a pull request template from a `PULL_REQUEST_TEMPLATE` subdirectory in the root, `docs/`, or `.github/` directory. | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&template=issue_template.md` | -You must have the required permissions for an action to use the equivalent query parameter. For example, you must have permission to add a label to a pull request to use the `labels` query parameter. For more information, see [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization). - -If you create an invalid URL using query parameters, or if you don’t have the required permissions, the URL returns a `404 Not Found` error page. If you create a URL that exceeds the server limit, the URL returns a `414 URI Too Long` error page. - -Query parameter | Example ---- | --- -`quick_pull` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1` creates a pull request that compares the base branch `main` and head branch `my-branch`. The `quick_pull=1` query brings you directly to the "Open a pull request" page. -`title` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&labels=bug&title=Bug+fix` creates a pull request with the label "bug" and title "Bug fix." -`body` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&title=Bug+fix&body=Describe+the+fix.` creates a pull request with the title "Bug fix" and the comment "Describe the fix" in the pull request body. -`labels` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&labels=help+wanted,bug` creates a pull request with the labels "help wanted" and "bug". -`milestone` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&milestone=testing+milestones` creates a pull request with the milestone "testing milestones." -`assignees` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&assignees=octocat` creates a pull request and assigns it to @octocat. -`projects` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&title=Bug+fix&projects=octo-org/1` creates a pull request with the title "Bug fix" and adds it to the organization's project 1. -`template` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&template=issue_template.md` creates a pull request with a template in the pull request body. The `template` query parameter works with templates stored in a `PULL_REQUEST_TEMPLATE` subdirectory in the root, `docs/`, or `.github/` directory in a repository. For more information, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests). +You must have permission to complete the equivalent action to use its query parameter. For example, you must have permission to add labels to use `labels`. For more information, see [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization). +Invalid query parameters or insufficient permissions return a `404 Not Found` error. URLs that exceed the server limit return a `414 URI Too Long` error. From 0d909e5ea75d4ab35a7979e931efa8f2114f6714 Mon Sep 17 00:00:00 2001 From: Jenni C <97056108+dihydroJenoxide@users.noreply.github.com> Date: Tue, 21 Jul 2026 02:49:18 +0000 Subject: [PATCH 07/17] Refactor pull request concepts around developer jobs-to-be-done (#62071) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Vanessa Co-authored-by: Siara <108543037+SiaraMist@users.noreply.github.com> Copilot-Session: fc48eebe-a846-4e0d-a78a-359e3db86192 --- content/index.md | 12 +- .../concepts/about-pull-request-reviews.md | 40 ---- .../concepts/about-status-checks.md | 77 -------- .../pull-requests/concepts/deploying-code.md | 66 +++++++ .../pull-requests/concepts/giving-reviews.md | 48 +++++ .../helping-others-review-your-changes.md | 34 ++-- content/pull-requests/concepts/index.md | 16 +- .../concepts/resolving-reviews.md | 59 ++++++ .../concepts/writing-code-for-a-project.md | 70 +++++++ .../pull-requests/get-started/about-forks.md | 44 +++++ .../get-started/about-pull-requests.md | 58 ++++++ content/pull-requests/get-started/index.md | 16 ++ .../get-started/pull-request-quickstart.md | 185 ++++++++++++++++++ .../reviewing-pull-requests-quickstart.md | 53 +++++ .../changing-a-commit-message.md | 9 +- ...pull-request-branch-created-from-a-fork.md | 11 +- .../commit-changes/comparing-commits.md | 15 +- ...creating-a-commit-with-multiple-authors.md | 29 ++- .../how-tos/commit-changes/index.md | 8 +- ...naging-branches-within-your-repository.md} | 19 +- .../commit-changes/troubleshooting-commits.md | 20 +- ...nging-the-base-branch-of-a-pull-request.md | 10 +- .../changing-the-stage-of-a-pull-request.md | 8 +- .../creating-a-pull-request-from-a-fork.md | 10 +- .../creating-a-pull-request.md | 46 ++--- .../how-tos/create-pull-requests/index.md | 10 +- ...ll-request-in-sync-with-the-base-branch.md | 12 +- .../requesting-a-pull-request-review.md | 19 +- content/pull-requests/how-tos/index.md | 12 +- .../automatically-merging-a-pull-request.md | 6 +- .../closing-a-pull-request.md | 5 +- .../merge-and-close-pull-requests/index.md | 10 +- ...rging-a-pull-request-with-a-merge-queue.md | 8 +- .../merging-a-pull-request.md | 31 +-- .../resolving-a-merge-conflict-on-github.md | 18 +- ...a-merge-conflict-using-the-command-line.md | 18 +- .../reverting-a-pull-request.md | 7 +- .../troubleshooting-required-status-checks.md | 22 +-- ...ng-a-pull-request-with-required-reviews.md | 17 +- .../checking-out-pull-requests-locally.md | 18 +- .../commenting-on-a-pull-request.md | 15 +- .../dismissing-a-pull-request-review.md | 6 +- .../filtering-files-in-a-pull-request.md | 55 ------ ...methods-and-functions-in-a-pull-request.md | 45 ----- ...rporating-feedback-in-your-pull-request.md | 18 +- .../how-tos/review-pull-requests/index.md | 10 +- ...ng-dependency-changes-in-a-pull-request.md | 10 +- ...wing-proposed-changes-in-a-pull-request.md | 44 +++-- .../viewing-a-pull-request-review.md | 8 +- ...pull-request-branch-created-from-a-fork.md | 8 +- ...figuring-a-remote-repository-for-a-fork.md | 4 +- .../work-with-forks/detaching-a-fork.md | 13 +- .../how-tos/work-with-forks/fork-a-repo.md | 27 +-- .../how-tos/work-with-forks/index.md | 6 +- .../how-tos/work-with-forks/syncing-a-fork.md | 11 +- content/pull-requests/index.md | 11 +- .../branches.md} | 57 ++---- .../about-commits.md => reference/commits.md} | 18 +- .../about-forks.md => reference/forks.md} | 74 +++---- content/pull-requests/reference/index.md | 12 +- ...anaging-and-standardizing-pull-requests.md | 17 +- .../merge-conflicts.md} | 23 ++- .../pull-request-merges.md} | 21 +- .../reference/pull-request-reviews.md | 54 +++++ .../pull-requests.md} | 20 +- .../pull-requests/reference/status-checks.md | 117 +++++++++++ ...ery-parameters-to-create-a-pull-request.md | 4 +- .../working-with-pre-receive-hooks.md | 7 +- data/reusables/gated-features/more-info.md | 2 +- .../automatically-delete-branches.md | 2 +- .../repositories/asking-for-review.md | 2 +- data/reusables/repositories/sidebar-pr.md | 2 - src/frame/tests/page.ts | 4 +- src/redirects/tests/redirects.ts | 2 +- 74 files changed, 1212 insertions(+), 693 deletions(-) delete mode 100644 content/pull-requests/concepts/about-pull-request-reviews.md delete mode 100644 content/pull-requests/concepts/about-status-checks.md create mode 100644 content/pull-requests/concepts/deploying-code.md create mode 100644 content/pull-requests/concepts/giving-reviews.md create mode 100644 content/pull-requests/concepts/resolving-reviews.md create mode 100644 content/pull-requests/concepts/writing-code-for-a-project.md create mode 100644 content/pull-requests/get-started/about-forks.md create mode 100644 content/pull-requests/get-started/about-pull-requests.md create mode 100644 content/pull-requests/get-started/index.md create mode 100644 content/pull-requests/get-started/pull-request-quickstart.md create mode 100644 content/pull-requests/get-started/reviewing-pull-requests-quickstart.md rename content/pull-requests/how-tos/{create-pull-requests => commit-changes}/committing-changes-to-a-pull-request-branch-created-from-a-fork.md (80%) rename content/pull-requests/how-tos/{create-pull-requests/creating-and-deleting-branches-within-your-repository.md => commit-changes/managing-branches-within-your-repository.md} (79%) delete mode 100644 content/pull-requests/how-tos/review-pull-requests/filtering-files-in-a-pull-request.md delete mode 100644 content/pull-requests/how-tos/review-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md rename content/pull-requests/{concepts/about-branches.md => reference/branches.md} (56%) rename content/pull-requests/{concepts/about-commits.md => reference/commits.md} (68%) rename content/pull-requests/{concepts/about-forks.md => reference/forks.md} (57%) rename content/pull-requests/{concepts => reference}/managing-and-standardizing-pull-requests.md (60%) rename content/pull-requests/{concepts/about-merge-conflicts.md => reference/merge-conflicts.md} (57%) rename content/pull-requests/{concepts/about-pull-request-merges.md => reference/pull-request-merges.md} (72%) create mode 100644 content/pull-requests/reference/pull-request-reviews.md rename content/pull-requests/{concepts/about-pull-requests.md => reference/pull-requests.md} (86%) create mode 100644 content/pull-requests/reference/status-checks.md rename content/pull-requests/{concepts => reference}/working-with-pre-receive-hooks.md (86%) diff --git a/content/index.md b/content/index.md index ddfaa931ba04..c0d2da00db54 100644 --- a/content/index.md +++ b/content/index.md @@ -7,7 +7,7 @@ featuredLinks: - /repositories/creating-and-managing-repositories - /get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax popular: - - /pull-requests/concepts/about-pull-requests + - /pull-requests/reference/pull-requests - /authentication - /copilot/how-tos/get-code-suggestions/get-ide-code-suggestions - /get-started/git-basics/managing-remote-repositories @@ -84,7 +84,6 @@ children: - desktop - early-access - support - - contributing - github-models - nonprofit @@ -179,21 +178,22 @@ externalProducts: electron: id: electron name: Electron - href: 'https://electronjs.org/docs/latest' + href: https://electronjs.org/docs/latest external: true codeql: id: codeql name: CodeQL query writing - href: 'https://codeql.github.com/docs' + href: https://codeql.github.com/docs external: true npm: id: npm name: npm - href: 'https://docs.npmjs.com/' + href: https://docs.npmjs.com/ external: true gh-wa: id: gh-wa name: GitHub Well-Architected - href: 'https://wellarchitected.github.com/' + href: https://wellarchitected.github.com/ external: true --- + diff --git a/content/pull-requests/concepts/about-pull-request-reviews.md b/content/pull-requests/concepts/about-pull-request-reviews.md deleted file mode 100644 index 466ff7f919cd..000000000000 --- a/content/pull-requests/concepts/about-pull-request-reviews.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: About pull request reviews -intro: Collaborate on pull requests to improve code quality. -redirect_from: - - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews - - /articles/about-pull-request-reviews - - /github/collaborating-with-issues-and-pull-requests/about-pull-request-reviews - - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews - - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews -versions: - fpt: '*' - ghes: '*' - ghec: '*' -shortTitle: About PR reviews -category: - - Review pull requests -contentType: concepts ---- - -Pull request reviews are one of the main ways people collaborate on {% data variables.product.github %}. Reviewers can comment on changes, suggest improvements, and approve or request changes before code is merged. This process helps teams maintain code quality and share knowledge. - -{% raw %}View pull requests awaiting your review{% endraw %} - -## Reviewing pull requests - -Anyone with read access can review and comment on proposed changes. Reviews help authors improve their work and help maintainers decide whether a pull request is ready to merge. - -A review can leave general feedback, approve the pull request, or request changes that should be addressed before merging. Reviewers can also comment on specific lines, suggest changes, and discuss implementation details. Review conversations appear in the pull request timeline so the team can track feedback and decisions. - -## Requesting and requiring reviews - -Repository owners and collaborators can request reviews from specific people or teams when they need feedback from the right experts. If you define code owners in a CODEOWNERS file, {% data variables.product.github %} can automatically request review from owners when a pull request changes their code. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review). - -Repository administrators can require approvals before pull requests are merged. Required reviews help protect important branches and reduce accidental merges. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-pull-request-reviews-before-merging). - -## Further reading - -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review) -* Learn more in the [Review pull requests](https://github.com/skills/review-pull-requests?ref_product=github&ref_type=engagement&ref_style=text) {% data variables.product.prodname_learning %} course diff --git a/content/pull-requests/concepts/about-status-checks.md b/content/pull-requests/concepts/about-status-checks.md deleted file mode 100644 index 043c148883c7..000000000000 --- a/content/pull-requests/concepts/about-status-checks.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: About status checks -intro: Status checks let you know if your commits meet the conditions set for the repository you're contributing to. -redirect_from: - - /github/collaborating-with-issues-and-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks - - /articles/about-statuses - - /articles/about-status-checks - - /github/collaborating-with-issues-and-pull-requests/about-status-checks - - /github/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks - - /pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks -versions: - fpt: '*' - ghes: '*' - ghec: '*' -category: - - Merge and close pull requests -contentType: concepts ---- - -Status checks show whether commits meet the conditions set for a repository. They are usually created by external systems, such as continuous integration builds, tests, code scanning, or deployment checks. - -Status checks help reviewers and maintainers understand whether a pull request is ready to merge. A check can show that work is still running, that changes passed validation, or that something needs attention. - -![Screenshot of a list of commits and statuses.](/assets/images/help/pull_requests/commit-list-statuses.png) - -If status checks are required for a protected branch, they must pass before the pull request can be merged. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging). - -{% data reusables.actions.workflows.skipped-job-status-checks-passing %} - -## Types of status checks on {% data variables.product.github %} - -There are two types of status checks on {% data variables.product.github %}: - -* **Checks** provide detailed output, annotations, and messages. They are created by {% data variables.product.prodname_github_apps %}, including {% data variables.product.prodname_actions %}. -* **Commit statuses** provide a simpler status for a commit. They are often used by external services and integrations. - -> [!NOTE] -> {% data variables.product.prodname_actions %} generates checks, not commit statuses, when workflows are run. - -Organization owners and users with push access to a repository can create checks and commit statuses with {% data variables.product.github %}'s API. For more information, see [AUTOTITLE](/rest/checks) and [AUTOTITLE](/rest/commits/statuses). - -## Checks - -Checks can include build logs, test results, annotations, and links to more detail. In a pull request, the **Checks** tab helps you understand which validations ran and why a check passed or failed. - -> [!NOTE] -> The **Checks** tab is populated for pull requests only if you set up _checks_, not _commit statuses_, for the repository. - -When a check points to a specific line, details can also appear in the **Files** tab of the pull request. This helps reviewers connect automated feedback to the code being changed. - -![Screenshot of the "Checks" tab of a pull request. The "Checks" tab and the dropdown menu to select a commit are both outlined in dark orange.](/assets/images/help/pull_requests/checks-summary-for-various-commits.png) - -## Skipping and requesting checks for individual commits - -Some repositories allow checks to be skipped or requested for individual commits. This can be useful when a check is not relevant to a specific change, or when checks are not requested automatically. - -For {% data variables.product.prodname_actions %} workflows, you can skip workflow runs triggered by the `push` and `pull_request` events by including a skip instruction in your commit message. For more information, see [AUTOTITLE](/actions/managing-workflow-runs/skipping-workflow-runs). - -For check suite preferences and commit trailers such as `skip-checks: true` or `request-checks: true`, see [AUTOTITLE](/rest/checks/suites#update-repository-preferences-for-check-suites). - -{% data reusables.commits.about-commit-cleanup %} - -## Check statuses and conclusions - -Checks move through statuses as they run, then receive a conclusion when they finish. - -| State | What it means | -| --- | --- | -| Waiting or queued | The check has not started yet, or is waiting for a required condition such as capacity or deployment approval. | -| In progress | The check is running. | -| Completed | The check finished and has a conclusion, such as success, failure, cancelled, skipped, or timed out. | - -A successful conclusion usually means the check does not block merging. A failure, timeout, or action-required conclusion usually means someone must review the details before the pull request can merge. - -## Retention of checks - -{% data reusables.pull_requests.retention-checks-data %} diff --git a/content/pull-requests/concepts/deploying-code.md b/content/pull-requests/concepts/deploying-code.md new file mode 100644 index 000000000000..432b7e0864c7 --- /dev/null +++ b/content/pull-requests/concepts/deploying-code.md @@ -0,0 +1,66 @@ +--- +title: Deploying code +shortTitle: Deploy code +intro: 'Validate pre-deployment checks, choose merge strategies, and manage branches effectively when deploying code.' +versions: + fpt: '*' + ghes: '*' + ghec: '*' +contentType: concepts +--- + +The final step for a pull request is to get finished work into the deployment branch. This usually means merging your changes into the release or main branch. Before that happens, you will need to confirm that the change meets the project's requirements. + +## Validating pre-deployment checks + +Before you merge, you will confirm that the change is safe to deploy. **Status checks** show whether commits meet the conditions set for the repository, such as continuous integration builds, tests, code scanning, or deployment checks. They help you and reviewers understand whether a pull request is ready to merge. + +Repositories often require certain conditions before a pull request can merge, including: + +* Required status checks that must pass, such as application health and readiness checks run by your deployment pipeline. +* Required reviews or code owner approvals. +* Merge conflicts must be resolved. + +Protected branches enforce these requirements so deployment branches stay stable. + +Not all checks are the same. Rich checks created by products like {% data variables.product.prodname_actions %} can report detailed logs and annotations, while simpler commit statuses can be posted by a variety of connected systems. Understanding these helps you interpret why a pull request is or isn't ready. + +## Merging code into the release or main branch + +When the requirements are met, you merge the pull request to bring its commits into the base branch. You can also automate merging so a pull request merges as soon as its requirements are met. Pull requests offer different merge strategies depending on how you want the repository history to look: + +* **Merge commit** preserves every commit from the pull request branch and adds an explicit merge point. +* **Squash and merge** combines all commits into a single commit for a concise history. +* **Rebase and merge** adds each commit onto the base branch for a linear history without a merge commit. + +The best strategy depends on how much detail your team wants to preserve. + +## Enforcing requirements at scale + +As merging gets busier, teams add controls to keep merges safe and predictable: + +* **Rulesets and branch protections** can require an up-to-date branch, signed commits, linear history, or specific status checks before merging. +* A **merge queue** lets a high-traffic protected branch accept many pull requests without breaking. It tests each one against the latest version of the base branch and merges them in order once checks pass. When a branch uses a merge queue, the available merge options differ from a standard merge. + +> [!NOTE] +> {% data reusables.gated-features.merge-queue %} + +## Connecting merges to deployment + +Merging is often the trigger that ships code. {% data variables.product.prodname_actions %} can run deployment workflows when a pull request merges into a release or main branch. **Deployment environments** add another layer of pre-deployment safety: you can require specific reviewers, wait timers, or branch restrictions before a deployment proceeds, and these are surfaced alongside your other checks. + +## Recovering after a merge + +Even with checks in place, some merges need to be undone. You can revert a merged pull request to create a new pull request that reverses the changes. Be aware, a pull request can be marked as merged *indirectly* on rare occasions, if its commits reach the base branch through another path. This can bypass the protections on that specific pull request. See [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests/reverting-a-pull-request) and [AUTOTITLE](/pull-requests/reference/pull-request-merges#indirect-merges). + +## Closing pull requests that won't be merged + +Not every pull request should merge. If a change is no longer needed or is superseded by other work, you can close the pull request without merging it. Closing keeps the discussion and history for reference while signaling that the change will not move forward. + +After a pull request is merged or closed, its head branch is often no longer needed. Deleting unused branches keeps the repository easier to navigate. + +## Further reading + +* [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request) +* [AUTOTITLE](/pull-requests/reference/status-checks) +* [AUTOTITLE](/actions/how-tos/deploy/configure-and-manage-deployments/manage-environments) diff --git a/content/pull-requests/concepts/giving-reviews.md b/content/pull-requests/concepts/giving-reviews.md new file mode 100644 index 000000000000..355c7ec349aa --- /dev/null +++ b/content/pull-requests/concepts/giving-reviews.md @@ -0,0 +1,48 @@ +--- +title: Giving reviews +shortTitle: Give reviews +intro: 'Provide feedback on pull requests by commenting on changes, suggesting edits, and approving or requesting updates before merging code.' +versions: + fpt: '*' + ghes: '*' + ghec: '*' +contentType: concepts +--- + +Reviewing pull requests is one of the main ways people collaborate on {% data variables.product.github %}. When you review a peer's work, you help catch issues early, share knowledge, and decide whether a change is ready to merge. + +## Commenting on changes + +Anyone with read access can review and comment on proposed changes. As a reviewer, you can: + +* Leave general feedback on the overall pull request. +* Comment on specific lines to ask questions or explain concerns. +* Suggest exact changes that the author can apply with a single click. + +Review conversations appear in the pull request timeline so the whole team can follow the discussion and track decisions. + +## Requesting changes and approving + +When you finish a review, you submit it with a decision that tells the author what to do next: + +* **Comment** leaves general feedback without explicitly approving or requesting changes. +* **Approve** signals that the changes are ready to merge. +* **Request changes** flags feedback that the author should address before the pull request merges. + +## Reviewing changes with more depth + +Thorough reviews go beyond reading the diff top to bottom. {% data variables.product.github %} gives you tools to review large or complex changes with precision: + +* **Review one file at a time**, mark each file as **Viewed** to collapse it, and use the progress bar to track how much of the pull request you've covered. +* **Assess security and dependencies.** Dependency review shows how a pull request changes dependencies and whether it introduces known vulnerabilities, and code scanning surfaces alerts on the proposed changes. +{% ifversion fpt or ghec %} +* **Automate reviews with {% data variables.product.prodname_copilot_short %}.** {% data variables.product.prodname_copilot_short %} can perform automated code reviews on a pull request, comment on specific lines, and suggest changes, helping you catch common issues before a human reviewer looks at the code. +{% endif %} + +## Further reading + +* [AUTOTITLE](/pull-requests/get-started/reviewing-pull-requests-quickstart) +* [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/reviewing-dependency-changes-in-a-pull-request) +{% ifversion fpt or ghec %} +* [AUTOTITLE](/copilot/concepts/agents/code-review). +{% endif %} diff --git a/content/pull-requests/concepts/helping-others-review-your-changes.md b/content/pull-requests/concepts/helping-others-review-your-changes.md index 01f801dc9403..88a476323aaf 100644 --- a/content/pull-requests/concepts/helping-others-review-your-changes.md +++ b/content/pull-requests/concepts/helping-others-review-your-changes.md @@ -1,6 +1,6 @@ --- title: Helping others review your changes -intro: You can use pull requests to provide clear context for your changes and keep your team informed, improving collaboration and the quality of reviews. +intro: Create clear, focused pull requests that improve collaboration, streamline reviews, and keep your team informed about your changes. redirect_from: - /pull-requests/collaborating-with-pull-requests/getting-started/best-practices-for-pull-requests - /pull-requests/collaborating-with-pull-requests/getting-started/helping-others-review-your-changes @@ -14,11 +14,11 @@ category: contentType: concepts --- -When you create a pull request, you’re asking your team to review your changes and provide feedback. Pull requests that are focused, clear, and easy to follow help reviewers give better feedback and make confident decisions. +When you create a pull request, you’re asking others to review your changes and provide feedback. Pull requests that are focused, clear, and easy to follow help reviewers give better feedback and make confident suggestions. ## Making your changes easy to review -Clear context helps reviewers quickly understand what changed and why it matters. It reduces back-and-forth, makes review faster, and helps your team focus on the most important parts of the change. For information on creating a pull request, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request). +Clear context helps reviewers quickly understand what changed and why it matters. It reduces back-and-forth, makes review faster, and helps your team focus on the most important parts of the change. ### Write small pull requests @@ -30,7 +30,7 @@ When a change grows large, consider splitting it into smaller pull requests that A clear title and description help reviewers understand the problem, the approach, and the result. Good context often explains why the change is needed, what changed, and where reviewers should pay special attention. -Guidance is especially helpful when a pull request touches many files or requires a specific review order. For example, you can point reviewers to the most important files first or explain what type of feedback would be most useful.{% ifversion copilot %} You can also use {% data variables.product.prodname_copilot %} to generate a summary of your pull request, as described later in this article.{% endif %} +Guidance is especially helpful when a pull request touches many files or requires a specific review order. For example, you can point reviewers to the most important files first or explain what type of feedback would be most useful. You can also use {% data variables.product.prodname_copilot %} to generate a summary of your pull request. ### Review your own pull request first @@ -40,25 +40,26 @@ A self-review can include reading the diff, checking for accidental changes, and ### Review for security -Security review helps catch risk before a pull request is merged. This is especially important when a pull request changes dependencies, authentication, permissions, workflows, or code that handles sensitive data. +Security reviews help catch risk before a pull request is merged. This is especially important when a pull request changes dependencies, authentication, permissions, workflows, or code that handles sensitive data. -{% data variables.product.github %} can surface security information in pull requests, such as dependency changes, dependency review results, and {% data variables.product.prodname_code_scanning %} checks. Use these signals to resolve issues early or to highlight risks that need reviewer attention. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request), [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#about-the-dependency-review-action), and [AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests#about-code-scanning-as-a-pull-request-check).{% ifversion code-scanning-autofix %} If your repository has set up {% data variables.product.prodname_code_scanning %} as a pull request check, {% data variables.copilot.copilot_autofix %} can suggest fixes for security vulnerabilities. For more information, see [AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests#working-with-copilot-autofix-suggestions-for-alerts-on-a-pull-request).{% endif %} +{% data variables.product.github %} can surface security information in pull requests, such as dependency changes, dependency review results, and {% data variables.product.prodname_code_scanning %} checks. Use these signals to resolve issues early or to highlight risks that need reviewer attention. + +If your repository has {% data variables.product.prodname_code_scanning %} set up as a check, {% data variables.copilot.copilot_autofix %} can suggest fixes for security vulnerabilities. ## Keeping your team informed -Pull requests can do more than document code changes—they’re also a way to keep your team and manager informed about the status of your work. Visible progress helps reduce separate status updates and keeps everyone aligned. +Pull requests can do more than document code changes—they’re also a way to keep your team informed about the status of your work. Visible progress helps reduce separate status updates and keeps everyone aligned. -{% ifversion copilot %} +{% ifversion fpt or ghec %} ### Use {% data variables.product.prodname_copilot %} to generate pull request summaries -> [!NOTE] {% data reusables.copilot.copilot-requires-subscription %} +> [!NOTE] +> {% data variables.product.prodname_copilot_short %} features require a {% data variables.product.prodname_copilot_short %} plan. See [AUTOTITLE](/copilot/get-started/plans). {% data variables.product.prodname_copilot_short %} can generate a pull request summary on {% data variables.product.github %}. A generated summary can help reviewers understand the main changes, but you should review it carefully and add context that only you know. -Summaries are most useful when they explain the purpose of the change, call out important files, and highlight anything reviewers should examine closely. For instructions, see [AUTOTITLE](/copilot/using-github-copilot/creating-a-pull-request-summary-with-github-copilot). - -> [!TIP] You can also use {% data variables.copilot.copilot_chat_short %} to turn your work into a discussion or blog post. See [AUTOTITLE](/copilot/copilot-chat-cookbook/documenting-code/writing-discussions-or-blog-posts). +Summaries are most useful when they explain the purpose of the change, call out important files, and highlight anything reviewers should examine closely. {% endif %} @@ -66,8 +67,13 @@ Summaries are most useful when they explain the purpose of the change, call out Connecting a pull request to issues or projects shows how the work fits into the larger project. Links help reviewers understand priority, track progress, and find related discussions. -Use issue-closing keywords when a pull request should close an issue after merging. You can also link to {% data variables.product.prodname_projects_v2 %} so people can track work in one place. For more information, see [AUTOTITLE](/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) and [AUTOTITLE](/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects). +Use issue-closing keywords when a pull request should close an issue after merging. You can also link to {% data variables.product.prodname_projects_v2 %} so people can track work in one place. ### Highlight the status with labels -Status labels help reviewers understand whether a pull request is ready for review, blocked, or still in progress. Clear labels make it easier for people to prioritize reviews and avoid reviewing work before it is ready. For more information, see [AUTOTITLE](/issues/using-labels-and-milestones-to-track-work/managing-labels). +Status labels help reviewers understand whether a pull request is ready for review, blocked, or still in progress. Clear labels make it easier for people to prioritize reviews and avoid reviewing work before it is ready. + +## Further reading +* [AUTOTITLE](/pull-requests/concepts/resolving-reviews) +* [AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue) +* [AUTOTITLE](/issues/using-labels-and-milestones-to-track-work/managing-labels) diff --git a/content/pull-requests/concepts/index.md b/content/pull-requests/concepts/index.md index 702dff3adefa..8d8143cf0899 100644 --- a/content/pull-requests/concepts/index.md +++ b/content/pull-requests/concepts/index.md @@ -6,23 +6,17 @@ redirect_from: - /github/collaborating-with-issues-and-pull-requests/overview - /github/collaborating-with-pull-requests/getting-started shortTitle: Concepts -intro: Learn the core concepts behind pull requests, branches, forks, commits, reviews, and merges. +intro: 'Understand the foundational concepts of pull requests, including branches, forks, commits, reviews, and merges to streamline collaboration on {% data variables.product.github %}.' versions: fpt: '*' ghes: '*' ghec: '*' children: - - /about-forks - - /about-commits - - /about-status-checks - - /working-with-pre-receive-hooks - - /about-pull-request-merges - - /about-pull-request-reviews - - /managing-and-standardizing-pull-requests + - /writing-code-for-a-project - /helping-others-review-your-changes - - /about-branches - - /about-merge-conflicts - - /about-pull-requests + - /giving-reviews + - /resolving-reviews + - /deploying-code contentType: concepts --- diff --git a/content/pull-requests/concepts/resolving-reviews.md b/content/pull-requests/concepts/resolving-reviews.md new file mode 100644 index 000000000000..9c2c12b3c0aa --- /dev/null +++ b/content/pull-requests/concepts/resolving-reviews.md @@ -0,0 +1,59 @@ +--- +title: Resolving reviews +shortTitle: Resolve reviews +intro: 'Address review feedback by comparing changes, updating code, and resolving comments to prepare your pull request for merging.' +versions: + fpt: '*' + ghes: '*' + ghec: '*' +contentType: concepts +--- + +After you open a pull request, reviewers leave feedback that helps improve your code before it merges. Resolving that feedback means understanding each comment, making the changes it calls for, and ensuring you've addressed everything. + +## Understanding review feedback + +Reviewers can leave general feedback, comment on specific lines, and propose exact changes as suggestions. Reviews appear in the pull request timeline so you can follow the discussion and see which comments still need a response. Depending on repository settings, a reviewer can also approve your pull request or request changes that you should address before merging. + +Before you change anything, read each comment to understand its intent. A comment might point out a bug, ask a question, request a different approach, or suggest an edit you can accept directly. + +If you have access to {% data variables.product.prodname_copilot_short %}, it can help you interpret review comments and propose fixes, which is useful when a pull request has many comments to work through. + +## Implementing changes and fixing code + +When you address feedback, you can: + +* Apply a reviewer's suggested change directly, which commits the suggestion to your branch. +* Make broader edits locally and push new commits to the branch. + +Most feedback is resolved by updating your code and pushing new commits to the pull request branch. As you address feedback, mark conversations as resolved so both you and your reviewers can track what is done and what still needs attention. + +When required reviewers have approved and no requested changes remain, your pull request is ready to move toward merging. Because the pull request tracks the branch, each new commit updates the pull request and re-runs any automated checks. + +## Working through feedback efficiently + +On larger or more scrutinized pull requests, a few practices help you address feedback quickly: + +* **Batch accepting suggestions** by adding suggested changes to a batch so several accepted changes land in a single commit instead of one commit per suggestion. +* **Resolve any merge conflicts** proactively so that you can merge quickly once your pull request review is resolved. +* **Re-request reviews** after you make substantial changes, so reviewers know the pull request is ready for another look. +* **Understand required reviews.** When a branch requires approvals or code owner sign-off, a "request changes" review or a dismissed approval can block merging until it's resolved. +* **Track out-of-scope feedback** by opening an issue that links back to the comment, rather than expanding the pull request. + +## Tools to help you resolve reviews + +You don't have to work through feedback by hand alone: + +* **Check out the pull request locally** or open it in **{% data variables.product.prodname_github_codespaces %}** to reproduce problems and test fixes before you push. +* **Address security findings** raised during review. Code scanning alerts on your changes appear in the pull request so you can fix them before merging. +{% ifversion fpt or ghec %} +* **Use {% data variables.product.prodname_copilot_short %}** to interpret feedback, answer questions, propose fixes, and resolve merge conflicts with agents. +{% endif %} + +## Further reading + +* [AUTOTITLE](/pull-requests/concepts/deploying-code) +* [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/incorporating-feedback-in-your-pull-request) +{% ifversion fpt or ghec %} +* [AUTOTITLE](/copilot/concepts/agents/cloud-agent/about-cloud-agent) +{% endif %} diff --git a/content/pull-requests/concepts/writing-code-for-a-project.md b/content/pull-requests/concepts/writing-code-for-a-project.md new file mode 100644 index 000000000000..f520d701cc39 --- /dev/null +++ b/content/pull-requests/concepts/writing-code-for-a-project.md @@ -0,0 +1,70 @@ +--- +title: Writing code for a project +shortTitle: Write code +intro: 'Use branches, forks, commits, and pull requests to safely write, refine, and propose code changes for collaborative projects.' +versions: + fpt: '*' + ghes: '*' + ghec: '*' +contentType: concepts +--- + +When you contribute to a project, you need a safe place to write and refine code before it affects your main code base. Branches, forks, commits, and pull requests work together to give you that space, so you can experiment, check in work incrementally, and propose finished changes for review. + +## Isolating your work with branches and forks + +Most work starts by creating an isolated copy of the code that you can change freely. + +* Use a **branch** when you have write access to a repository. A branch lets you develop a feature, fix a bug, or experiment in a contained area of the repository without affecting other branches. You create a branch from an existing branch, usually the default branch. +* Use a **fork** when you do not have write access, or when you want full independence from the original project. A fork is a separate repository that shares code and visibility settings with the original "upstream" repository. It has its own branches, issues, and pull requests. With a fork, you can also open pull requests for the upstream repository. + +A branch is usually the simplest choice when you already collaborate in a shared repository. A fork is often the best choice for open source contributions, where you may not have write access to the upstream repository. + +## Checking in work with commits + +As you write code, you save small, meaningful groups of changes as **commits**. Each commit records a snapshot of your work along with a message describing what changed, which makes it easier to track history, review changes, and understand how the code evolved. + +Committing frequently on your branch or fork lets you: + +* Break a larger change into reviewable steps. +* Roll back to an earlier state if an experiment does not work out. +* Give reviewers a clear history of how you arrived at the final change. + +## Proposing changes with pull requests + +When your work is ready to share, you open a **pull request** to propose merging your changes into the base branch. A pull request brings together your commits, a description of the change, and the tools reviewers need to discuss and evaluate it before it merges. + +You can open a pull request while work is still in progress by creating a draft pull request, which shares your changes without formally requesting review. This is useful when you want early feedback or want to run automated checks against your code. + +## Keeping your code current and optimized + +While a pull request is open, the base branch can keep changing as other people merge their work. To keep your changes clean and reduce conflicts, you can: + +* Merge or rebase the base branch into your branch frequently so your diff stays focused on what your change introduces. {% data variables.product.github %} shows a three-dot diff by default, which compares your branch against the point where it diverged from the base. +* Rebase to tidy a messy commit history—reordering, combining, or rewording commits—before you ask for review. +* Resolve merge conflicts when Git cannot automatically combine competing changes. + +## Working within repository controls + +Experienced contributors work within the guardrails a repository defines. These controls shape where you can push, who must approve your work, and what must pass before it merges. + +* **Protected branches and rulesets** can block direct pushes to important branches, require linear history or signed commits, and require status checks or reviews before merging. +* **Code owners** are automatically requested for review when your change touches files they own, so plan for their approval on sensitive areas. +* **Push rulesets** can apply across a fork network, restricting file paths, sizes, or names in every fork. +* **Pre-receive hooks** let administrators on {% data variables.product.prodname_ghe_server %} enforce policy checks on the server before commits are accepted. + +## An integrated toolchain + +Pull requests connect your code to the automation and services that help you write code quickly and securely. + + +{% ifversion fpt or ghec %}* **{% data variables.product.prodname_copilot %}** can help you write, debug, and optimize code. {% endif %} +* **{% data variables.product.prodname_code_scanning_caps %}** and **{% data variables.product.prodname_dependabot %}** surface security issues and vulnerable dependencies as your changes move through a pull request, so you can apply secure coding practices early. +* **{% data variables.product.prodname_actions %}** can run continuous integration on every push to your pull request, building and testing your changes automatically. + +## Further reading + +* [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/creating-a-pull-request) +{% ifversion fpt or ghec %} +* [AUTOTITLE](/copilot/get-started/quickstart) +{% endif %} diff --git a/content/pull-requests/get-started/about-forks.md b/content/pull-requests/get-started/about-forks.md new file mode 100644 index 000000000000..4b5f234fc7a9 --- /dev/null +++ b/content/pull-requests/get-started/about-forks.md @@ -0,0 +1,44 @@ +--- +title: About forks +shortTitle: About forks +intro: 'Use forks to make changes in your own copy of a repository and propose them back to the original project.' +versions: + fpt: '*' + ghes: '*' + ghec: '*' +contentType: get-started +category: + - Work with forks +--- + +A fork is a copy of a repository that you own, connected to the original repository, called the upstream repository. A fork lets you make changes in your own space without affecting the upstream project, and propose those changes back with a pull request. + +## Why use a fork + +A fork gives you an independent place to work while staying connected to the original project. Forks are useful when you want to: + +* Contribute to a project where you don't have write access. +* Experiment with changes without affecting the upstream repository. +* Explore a new direction that might become independent later. +* Keep your own branches, issues, and pull requests separate from the upstream project. + +## Forks and branches + +Forks and branches both give you a place to work on changes, but they work differently: + +* A **branch** lives inside a single repository. Use a branch when you have write access and collaborate in a shared repository. +* A **fork** is a separate repository with its own settings, permissions, and collaboration space. Use a fork when you need independence from the upstream repository, or when you don't have write access. + +Because a fork is its own repository, it gives you more independence than a branch. Because it stays connected to the upstream repository, your changes can still flow back through pull requests. + +## How forks connect to the upstream repository + +A fork shares its history with the upstream repository, so the two can exchange changes through pull requests. A fork also has its own visibility and permissions, which are tied to the upstream repository and the repository network it belongs to. + +For most contributors, this connection stays in the background: you fork a repository, work in your copy, and open a pull request when you're ready to propose your changes. + +## Further reading + +* [AUTOTITLE](/pull-requests/how-tos/work-with-forks/fork-a-repo) +* [AUTOTITLE](/pull-requests/concepts/writing-code-for-a-project) +* [AUTOTITLE](/pull-requests/reference/forks) diff --git a/content/pull-requests/get-started/about-pull-requests.md b/content/pull-requests/get-started/about-pull-requests.md new file mode 100644 index 000000000000..5fd4c44b0c4a --- /dev/null +++ b/content/pull-requests/get-started/about-pull-requests.md @@ -0,0 +1,58 @@ +--- +title: About pull requests +shortTitle: About pull requests +intro: 'Use pull requests to propose, discuss, and merge changes on {% data variables.product.github %}.' +versions: + fpt: '*' + ghes: '*' + ghec: '*' +contentType: get-started +category: + - Create pull requests +--- + +A pull request proposes merging code changes from one branch into another. As a collaborative feature, pull requests give you a place to discuss and review work before it becomes part of a project. + +## Why use pull requests + +Pull requests turn a set of code changes into a conversation. Instead of merging work directly, you propose it so that collaborators can weigh in. This helps you and your team maintain high quality and secure code, in a few ways: + +* Catch bugs and problems early, before they reach the main branch. +* Discuss and improve changes together, with feedback tied to specific lines. +* Keep a clear, reviewable history of what changed and why. + +## What you can do with pull requests + +Pull requests make your changes easy to review and validate. With a pull request, you can: + +* Propose changes from a branch or a fork. +* Discuss and review the proposed changes, line by line. +* Run automated checks, such as tests, builds, and code scanning, against the changes. +* Respond to feedback and update the pull request as it evolves. +* Merge the changes once reviews and required checks are satisfied. + +## Key parts of a pull request + +A pull request gathers everything you and your reviewers need into one place: + +* **Conversation** shows the description, comments, reviews, and a timeline of activity. +* **Commits** shows how the branch changed over time. +* **Checks** shows the results of automated tests, builds, and other validations. +* **Files changed** shows the diff that reviewers comment on. +* The **merge box** summarizes whether you can merge your changes or not. It shows what may still need to happen, such as required reviews or checks, before a pull request can be merged. + +## How pull requests fit your workflow + +Whether you're proposing changes or reviewing someone else's, a pull request follows a few stages: + +* **Branch or fork** the repository to create an isolated place to work. +* **Commit** your changes as you go, building up a history of your work. +* **Open a pull request** to propose merging your changes into the base branch. +* **Review and discuss** the changes with collaborators, making updates as needed. +* **Merge** the pull request when it's ready. + +## Next steps + +* [AUTOTITLE](/pull-requests/get-started/pull-request-quickstart) +* [AUTOTITLE](/pull-requests/get-started/reviewing-pull-requests-quickstart) +* [AUTOTITLE](/pull-requests/concepts/writing-code-for-a-project) diff --git a/content/pull-requests/get-started/index.md b/content/pull-requests/get-started/index.md new file mode 100644 index 000000000000..151e8a025ec8 --- /dev/null +++ b/content/pull-requests/get-started/index.md @@ -0,0 +1,16 @@ +--- +title: Get started with pull requests +shortTitle: Get started +intro: Propose, review, and merge your first changes with pull requests. +versions: + fpt: '*' + ghes: '*' + ghec: '*' +children: + - /about-pull-requests + - /about-forks + - /pull-request-quickstart + - /reviewing-pull-requests-quickstart +contentType: get-started +--- + diff --git a/content/pull-requests/get-started/pull-request-quickstart.md b/content/pull-requests/get-started/pull-request-quickstart.md new file mode 100644 index 000000000000..150780e53172 --- /dev/null +++ b/content/pull-requests/get-started/pull-request-quickstart.md @@ -0,0 +1,185 @@ +--- +title: Quickstart for pull requests +shortTitle: Pull request quickstart +intro: 'Propose your first change and take it all the way from your first commit to a merged pull request.' +allowTitleToDifferFromFilename: true +versions: + fpt: '*' + ghes: '*' + ghec: '*' +contentType: get-started +category: + - Create pull requests +--- + +A pull request proposes changes on a branch separate from the main code base so others can review the changes before they are merged. This quickstart walks you through the simplest path to a pull request. You'll create a branch, make and commit changes, open a pull request, respond to feedback, and merge. + +You can follow along on the {% data variables.product.github %} website or with {% data variables.product.prodname_cli %} by selecting one of the tabs above. + +## Branch or fork the repository + +You'll start by creating an isolated place to work. + +{% webui %} + +1. On {% data variables.product.github %}, navigate to the main page of the repository you want to propose changes for. +1. Optionally, if you don't have write access, you'll need a fork. Click **Fork** in the top-right corner and follow the steps. Then, continue in your fork of the repository. +1. Click the branch selector menu at the top of the file list. It probably says **main**. Type a new branch name and click **Create branch _new-branch-name_ from main**. + +{% endwebui %} + +{% cli %} + +1. To use {% data variables.product.prodname_cli %}, you'll need to install it first. See [AUTOTITLE](/github-cli/github-cli/quickstart). + +1. Clone the repository. Or, fork the repository and clone it locally at the same time. + * If you have write access to the repository, clone the repository: + + ```shell + gh repo clone OWNER/REPO + ``` + + * If you don't have write access, you'll create a **fork** first and clone it all at once. + + ```shell + gh repo fork OWNER/REPO --clone + ``` + +1. Change to the cloned repository directory. + + ```shell + cd REPO + ``` + +1. Create and switch to a new branch. + + ```shell + git checkout -b YOUR-BRANCH-NAME + ``` + +{% endcli %} + +## Author or edit your code + +Make your changes on the branch. For your first pull request, keep the change focused and simple. Smaller pull requests are faster to review and easier to merge. + +Try one of the following to make your changes: + +* Edit files locally in your IDE or a text editor. +* Edit a file directly on {% data variables.product.github %} by browsing to it and clicking {% octicon "pencil" aria-label="Edit this file" %}. + +## Commit frequently + +Save your work in small, meaningful commits. Each commit records a snapshot and a message describing the change. + +{% cli %} + +```shell +git add . +git commit -m "Describe your change" +git push --set-upstream origin YOUR-BRANCH-NAME +``` + +{% endcli %} + +{% webui %} + +When you edit a file on {% data variables.product.github %} and are ready to commit, you'll enter a commit message and commit directly to your branch. + +1. Click **Commit changes...**. +1. In the **Commit message** box, enter a short description of the changes you made. +1. Select the branch you're working on. +1. Click **Propose changes**. + +Your change will be added and committed to the branch. + +{% endwebui %} + +## Open your pull request + +When your branch has the changes you want to propose, open a pull request against the base branch. + +{% webui %} + +1. On the main page of the repository, click **{% octicon "git-pull-request" aria-label="The pull request icon" %} Pull requests**, then click **New pull request**. +1. For the **base** branch, main is probably already selected and is typically the base branch you'll merge into. +1. For the **compare** branch, select the branch that contains your changes. +1. Click **Create pull request**. +1. Enter a title and a description that explains what you changed and why. +1. You can create a pull request that's ready to review or one that's in a draft state. + * If it's ready for review, click **Create pull request**. + * To share a work in progress, use the dropdown and select **Create draft pull request**. + +{% endwebui %} + +{% cli %} + +You can create a pull request that's ready to review or one that's in a draft state. +* If it's ready for review: + + ```shell + gh pr create + ``` + +* To share a work in progress + + ```shell + gh pr create --draft + ``` + +Then, follow the prompts to set the base branch, title, and description. + +{% endcli %} + + +If you make further commits to the same branch, they will be automatically added to your pull request. + +## Request a review + +To request a review via the **Reviewers** box, you need write access to the repository and you can request a review from a person or team with read access to the repository. If you request a review the person or team will receive a notification. In some cases, you'll see suggested reviewers that you can select from. + +If the **Reviewers** box is unavailable to you, you can: +* Check the readme for the repository for their guidance on pull request reviews and follow their instructions. +* If you know a person who can do the review for you, reach out to them and share the link to your pull request. + +## Address review feedback + +Reviewers may comment, suggest changes, or request changes before a pull request can be merged. + +* To accept a reviewer's suggestion, click **Commit suggestion** (or batch several and click **Commit suggestions**). +* To make broader changes, edit your code and push new commits to the same branch. The pull request updates automatically and will re-run any checks. +* Mark each conversation as **Resolved** once you've addressed it. + +## Merge and deploy + +Once required reviews and status checks pass, merge the pull request to bring your changes into the base branch. If you decide not to merge the changes, you can close the pull request instead. + +> [!TIP] +> Different repositories may have different requirements for merging. Review any relevant guidance and follow its instructions. + +{% webui %} + +1. At the bottom of the pull request, click **Merge pull request**. +1. Click **Confirm** to complete the merge. +1. (Optional) Delete the head branch to keep the repository tidy. + +{% endwebui %} + +{% cli %} + +```shell +gh pr merge +``` + +Follow the prompts to pick a merge method and optionally delete the branch. + +{% endcli %} + +## Next steps + +After your first pull request, try reviewing someone else's work. See [AUTOTITLE](/pull-requests/get-started/reviewing-pull-requests-quickstart). + +## Further reading + +* [AUTOTITLE](/pull-requests/concepts/writing-code-for-a-project) +* [AUTOTITLE](/pull-requests/reference/pull-requests) diff --git a/content/pull-requests/get-started/reviewing-pull-requests-quickstart.md b/content/pull-requests/get-started/reviewing-pull-requests-quickstart.md new file mode 100644 index 000000000000..ad2640c33f94 --- /dev/null +++ b/content/pull-requests/get-started/reviewing-pull-requests-quickstart.md @@ -0,0 +1,53 @@ +--- +title: Quickstart for reviewing pull requests +shortTitle: Review quickstart +intro: 'Review a pull request by leaving comments, making suggestions, and approving or requesting changes.' +allowTitleToDifferFromFilename: true +versions: + fpt: '*' + ghes: '*' + ghec: '*' +contentType: get-started +category: + - Review pull requests +--- + +Pull request reviews are how teams catch issues early and keep code quality high. This quickstart walks you through each of the main tools for a review: +* Comment on code +* Suggest specific edits +* Submit your review and approve or request changes + +## Comment on the changes + +Anyone with read access to a repository can review and comment on a pull request. + +1. On {% data variables.product.github %}, navigate to the pull request. +1. Read through the pull request summary and any relevant comments or issues to build context for reviewing. +1. Click the **Files changed** tab. +1. Hover over the line you want to comment on and click {% octicon "plus" aria-label="Add a comment" %}. To comment on multiple lines, click and drag to select them. +1. Type your comment, then click **Start a review** to save it as pending until you finish reviewing. Pending comments are visible only to you until you submit the review. + +## Make code suggestions + +When you know the exact change you'd like, suggest it so the author can apply it in one click. + +1. On the **Files changed** tab, start a comment on the line or lines you want to change. +1. In the comment toolbar, click {% octicon "diff" aria-label="Insert a suggestion" %} to insert a suggestion block, then edit the code inside it to show your proposed change. +1. Click **Start a review** or **Add review comment** to include the suggestion in your review. + +## Submit your review + +Finish by submitting your review with a decision that tells the author what to do next. + +1. Click **Review changes**. +1. Add a summary comment. +1. Select a decision, then click **Submit review**: + + * **Comment** leaves feedback without explicitly approving or requesting changes. + * **Approve** signals that the changes are ready to merge. + * **Request changes** flags feedback the author must address before merging. + +## Next steps + +* [AUTOTITLE](/pull-requests/concepts/giving-reviews) +* [AUTOTITLE](/pull-requests/reference/pull-request-reviews) \ No newline at end of file diff --git a/content/pull-requests/how-tos/commit-changes/changing-a-commit-message.md b/content/pull-requests/how-tos/commit-changes/changing-a-commit-message.md index 105c27c84f78..ba10b20fc976 100644 --- a/content/pull-requests/how-tos/commit-changes/changing-a-commit-message.md +++ b/content/pull-requests/how-tos/commit-changes/changing-a-commit-message.md @@ -6,7 +6,7 @@ redirect_from: - /github/committing-changes-to-your-project/changing-a-commit-message - /github/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message - /pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message -intro: If a commit message contains unclear, incorrect, or sensitive information, you can amend it locally and push a new commit with a new message to {% data variables.product.github %}. You can also change a commit message to add missing information. +intro: Amend unclear, incorrect, or sensitive commit messages locally and push updated commits to {% data variables.product.github %}, including steps for editing recent or older commits. versions: fpt: '*' ghes: '*' @@ -14,6 +14,7 @@ versions: category: - Commit changes contentType: how-tos +shortTitle: Change a commit message --- ## Rewriting the most recent commit message @@ -27,9 +28,9 @@ If the commit only exists in your local repository, amend the commit message loc 1. On the command line, navigate to the repository that contains the commit you want to amend. 1. Type `git commit --amend` and press **Enter**. 1. In your text editor, edit the commit message, and save the commit. - * To add a co-author, add a trailer to the commit. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors). + * To add a co-author, add a trailer to the commit. See [AUTOTITLE](/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors). {% ifversion fpt or ghec %} - * To create commits on behalf of your organization, add a trailer to the commit. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors#creating-a-commit-on-behalf-of-an-organization). + * To create commits on behalf of your organization, add a trailer to the commit. See [AUTOTITLE](/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors#creating-a-commit-on-behalf-of-an-organization). {% endif %} 1. Push the commit to {% data variables.location.product_location %}. @@ -73,7 +74,7 @@ Use interactive rebase to change older or multiple commit messages. git push --force-with-lease origin EXAMPLE-BRANCH ``` -For more information about interactive rebase, see [Interactive mode](https://git-scm.com/docs/git-rebase#_interactive_mode) in the Git manual. +See [Interactive mode](https://git-scm.com/docs/git-rebase#_interactive_mode) in the Git manual. > [!WARNING] > If a commit message included sensitive information, force pushing an amended commit might not remove the original commit from {% data variables.product.github %}. Contact {% data variables.contact.contact_support %} with the old commit ID to have it purged from the remote repository. diff --git a/content/pull-requests/how-tos/create-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md b/content/pull-requests/how-tos/commit-changes/committing-changes-to-a-pull-request-branch-created-from-a-fork.md similarity index 80% rename from content/pull-requests/how-tos/create-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md rename to content/pull-requests/how-tos/commit-changes/committing-changes-to-a-pull-request-branch-created-from-a-fork.md index 0328b70ba454..5d9df7c32bd9 100644 --- a/content/pull-requests/how-tos/create-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md +++ b/content/pull-requests/how-tos/commit-changes/committing-changes-to-a-pull-request-branch-created-from-a-fork.md @@ -1,7 +1,8 @@ --- title: Committing changes to a pull request branch created from a fork -intro: You can commit changes on a pull request branch that was created from a fork of your repository with permission from the pull request creator. +intro: Commit changes to a pull request branch created from a fork by obtaining the necessary permissions and using Git commands effectively. redirect_from: + - /pull-requests/how-tos/create-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork - /articles/committing-changes-to-a-pull-request-branch-created-from-a-fork - /github/collaborating-with-issues-and-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork @@ -13,15 +14,15 @@ versions: ghec: '*' shortTitle: Commit to PR branch from fork category: - - Create pull requests + - Commit changes contentType: how-tos --- -To commit to a pull request branch created from a fork, you need push access to the base repository, permission from the pull request creator, and a user-owned fork without branch restrictions that prevent your push. Only the pull request creator can allow edits to their fork. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). +To commit to a pull request branch created from a fork, you need push access to the base repository, permission from the pull request creator, and a user-owned fork without branch restrictions that prevent your push. Only the pull request creator can allow edits to their fork. See [AUTOTITLE](/pull-requests/how-tos/work-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). 1. On {% data variables.product.github %}, navigate to the fork where the pull request branch was created. {% data reusables.repositories.copy-clone-url %} -{% data reusables.command_line.open_the_multi_os_terminal %} +1. Open your terminal or Git Bash. 1. Change the current working directory to the location where you want to clone the fork. ```shell @@ -58,4 +59,4 @@ Your new commits appear on the original pull request on {% data variables.locati ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks) +* [AUTOTITLE](/pull-requests/reference/forks) diff --git a/content/pull-requests/how-tos/commit-changes/comparing-commits.md b/content/pull-requests/how-tos/commit-changes/comparing-commits.md index 4ddd160f278d..72199954f52e 100644 --- a/content/pull-requests/how-tos/commit-changes/comparing-commits.md +++ b/content/pull-requests/how-tos/commit-changes/comparing-commits.md @@ -1,6 +1,6 @@ --- title: Comparing commits -intro: You can compare the state of your repository across branches, tags, commits, forks, and dates. +intro: Compare branches, tags, commits, forks, and dates to analyze changes and track repository history effectively. redirect_from: - /articles/comparing-commits-across-time - /github/committing-changes-to-your-project/comparing-commits-across-time @@ -18,6 +18,7 @@ versions: category: - Commit changes contentType: how-tos +shortTitle: Compare commits --- To compare different versions of your repository, append `/compare` to your repository's path. The compare page uses `base` as the starting point and `compare` as the endpoint. @@ -31,11 +32,11 @@ Use the Compare view to compare branches or start a pull request. 1. Use the `compare` dropdown menu to select the branch that contains the changes. 1. Review the commits and changed files in the comparison. -For more information about pull request branch comparisons, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests). +See [AUTOTITLE](/pull-requests/reference/branches). ## Comparing tags -Compare release tags to review changes between releases. For more information, see [AUTOTITLE](/repositories/releasing-projects-on-github/comparing-releases). +Compare release tags to review changes between releases. See [AUTOTITLE](/repositories/releasing-projects-on-github/comparing-releases). 1. Navigate to `https://{% data variables.product.product_url %}/OWNER/REPOSITORY/compare`. 1. Select the older tag from the `base` dropdown menu. @@ -54,7 +55,7 @@ You can compare two commits or Git Object IDs (OIDs) directly by editing the com {% data reusables.repositories.two-dot-diff-comparison-example-urls %} -For more information about two-dot and three-dot comparisons, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests#three-dot-and-two-dot-git-diff-comparisons). +See [AUTOTITLE](/pull-requests/reference/branches#three-dot-and-two-dot-git-diff-comparisons). ## Comparing across forks @@ -65,7 +66,7 @@ Use owner-qualified branch names to compare branches across forks. 1. Select the base repository and branch. 1. Select the head fork and compare branch. -You can also edit the URL directly. For example, use `octocat:main` as `base` and `octo-org:main` as `compare` to compare the `main` branches of repositories owned by `octocat` and `octo-org`. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks). +You can also edit the URL directly. For example, use `octocat:main` as `base` and `octo-org:main` as `compare` to compare the `main` branches of repositories owned by `octocat` and `octo-org`. See [AUTOTITLE](/pull-requests/reference/forks). ## Comparisons across commits @@ -75,10 +76,10 @@ To compare a commit with earlier commits, use Git's `^` or `~N` notation in the The repository commit history and a single file's commit history can show different results. A file's history shows commits that affected that file, while the repository history shows the broader branch history. If a file's history does not include the commit you need, use the repository's commits page instead. -For more information about how Git simplifies history, see [the "History Simplification"](https://git-scm.com/docs/git-log#_history_simplification) section of the `git log` documentation. +See [the "History Simplification"](https://git-scm.com/docs/git-log#_history_simplification) section of the `git log` documentation. ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request) +* [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/changing-the-base-branch-of-a-pull-request) * [AUTOTITLE](/authentication/managing-commit-signature-verification/signing-commits) * [AUTOTITLE](/search-github/searching-on-github/searching-commits) diff --git a/content/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors.md b/content/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors.md index 898f3cdb1a70..24606b958033 100644 --- a/content/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors.md +++ b/content/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors.md @@ -1,7 +1,7 @@ --- title: Creating a commit with multiple authors or on behalf of an organization allowTitleToDifferFromFilename: true -intro: You can attribute a commit to more than one author, or to an organization, by adding trailers to the commit's message. +intro: Attribute commits to multiple authors or organizations using trailers in commit messages for better collaboration and transparency. redirect_from: - /articles/creating-a-commit-with-multiple-authors - /github/committing-changes-to-your-project/creating-a-commit-with-multiple-authors @@ -15,7 +15,7 @@ versions: fpt: '*' ghes: '*' ghec: '*' -shortTitle: Multiple authors or an org +shortTitle: Create a commit with multiple authors category: - Commit changes contentType: how-tos @@ -29,15 +29,11 @@ Add one or more `Co-authored-by` trailers to a commit message to attribute a com Before adding a co-author, get the email address they want used in the trailer. For the commit to count as a contribution, use an email address associated with their account on {% data variables.location.product_location %}. -{% ifversion fpt or ghec %} - -If a co-author keeps their email address private, use their {% data variables.product.github %}-provided `no-reply` email. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address). - -{% endif %} +If a co-author keeps their email address private, use their {% data variables.product.github %}-provided `no-reply` email. See [AUTOTITLE](/account-and-profile/how-tos/email-preferences/setting-your-commit-email-address). ### Creating co-authored commits using {% data variables.product.prodname_desktop %} -You can use {% data variables.product.prodname_desktop %} to create a commit with a co-author. For more information, see [AUTOTITLE](/desktop/making-changes-in-a-branch/committing-and-reviewing-changes-to-your-project-in-github-desktop#write-a-commit-message-and-push-your-changes) and [{% data variables.product.prodname_desktop %}](https://desktop.github.com). +You can use {% data variables.product.prodname_desktop %} to create a commit with a co-author. See [AUTOTITLE](/desktop/making-changes-in-a-branch/committing-and-reviewing-changes-to-your-project-in-github-desktop#write-a-commit-message-and-push-your-changes) and [{% data variables.product.prodname_desktop %}](https://desktop.github.com). ### Creating co-authored commits on the command line @@ -60,7 +56,7 @@ You can use {% data variables.product.prodname_desktop %} to create a commit wit > Co-authored-by: ANOTHER-NAME " ``` -The new commit and message appear on {% data variables.location.product_location %} after you push. For more information, see [AUTOTITLE](/get-started/using-git/pushing-commits-to-a-remote-repository). +The new commit and message appear on {% data variables.location.product_location %} after you push. See [AUTOTITLE](/get-started/using-git/pushing-commits-to-a-remote-repository). ### Creating co-authored commits on {% data variables.product.github %} @@ -74,10 +70,11 @@ After you make changes in a file using the web editor on {% data variables.produ The new commit and message appear on {% data variables.location.product_location %}. -{% ifversion fpt or ghec %} - ## Creating a commit on behalf of an organization +> [!NOTE] +> Creating a commit on behalf of an organization is not available on {% data variables.product.prodname_ghe_server %}. + Add an `on-behalf-of:` trailer to a signed commit to attribute it to an organization. To use the trailer, you must be a member of the organization, and both your commit email and the organization email must be in a domain verified by the organization. ### Creating commits with an `on-behalf-of` badge on the command line @@ -99,7 +96,7 @@ Add an `on-behalf-of:` trailer to a signed commit to attribute it to an organiza on-behalf-of: @ORG NAME@ORGANIZATION.COM" ``` -The new commit, message, and badge appear on {% data variables.product.prodname_dotcom %} after you push. For more information, see [AUTOTITLE](/get-started/using-git/pushing-commits-to-a-remote-repository). +The new commit, message, and badge appear on {% data variables.product.prodname_dotcom %} after you push. See [AUTOTITLE](/get-started/using-git/pushing-commits-to-a-remote-repository). ### Creating commits with an `on-behalf-of` badge on {% data variables.product.github %} @@ -112,12 +109,10 @@ After you make changes in a file using the web editor on {% data variables.produ The new commit, message, and badge appear on {% data variables.product.prodname_dotcom %}. -{% endif %} - ## Further reading -* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile) -* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile) +* [AUTOTITLE](/account-and-profile/how-tos/contribution-settings/viewing-contributions-on-your-profile) +* [AUTOTITLE](/account-and-profile/how-tos/contribution-settings/troubleshooting-missing-contributions) * [AUTOTITLE](/repositories/viewing-activity-and-data-for-your-repository/viewing-a-projects-contributors) -* [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message) +* [AUTOTITLE](/pull-requests/how-tos/commit-changes/changing-a-commit-message) * [AUTOTITLE](/desktop/making-changes-in-a-branch/committing-and-reviewing-changes-to-your-project-in-github-desktop#write-a-commit-message-and-push-your-changes) in the {% data variables.product.prodname_desktop %} documentation diff --git a/content/pull-requests/how-tos/commit-changes/index.md b/content/pull-requests/how-tos/commit-changes/index.md index b458f116a794..09f81591ed3c 100644 --- a/content/pull-requests/how-tos/commit-changes/index.md +++ b/content/pull-requests/how-tos/commit-changes/index.md @@ -13,16 +13,18 @@ redirect_from: - /articles/viewing-and-comparing-commits - /github/committing-changes-to-your-project/viewing-and-comparing-commits shortTitle: Commit changes -intro: Create, change, compare, and troubleshoot commits in your pull requests. +intro: Create, modify, compare, and troubleshoot branches and commits to streamline collaboration in your pull requests. versions: fpt: '*' ghes: '*' ghec: '*' children: - - /comparing-commits + - /managing-branches-within-your-repository + - /committing-changes-to-a-pull-request-branch-created-from-a-fork - /creating-a-commit-with-multiple-authors - - /troubleshooting-commits - /changing-a-commit-message + - /comparing-commits + - /troubleshooting-commits contentType: how-tos --- diff --git a/content/pull-requests/how-tos/create-pull-requests/creating-and-deleting-branches-within-your-repository.md b/content/pull-requests/how-tos/commit-changes/managing-branches-within-your-repository.md similarity index 79% rename from content/pull-requests/how-tos/create-pull-requests/creating-and-deleting-branches-within-your-repository.md rename to content/pull-requests/how-tos/commit-changes/managing-branches-within-your-repository.md index bc80f5ba862e..ba67ee24169f 100644 --- a/content/pull-requests/how-tos/create-pull-requests/creating-and-deleting-branches-within-your-repository.md +++ b/content/pull-requests/how-tos/commit-changes/managing-branches-within-your-repository.md @@ -1,17 +1,18 @@ --- -title: Creating and deleting branches within your repository -intro: You can create or delete branches directly on {% data variables.product.github %}. +title: Managing branches within your repository +intro: Create new branches for development and delete unused branches directly on {% data variables.product.github %}. redirect_from: - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository - /articles/deleting-branches-in-a-pull-request - /articles/creating-and-deleting-branches-within-your-repository - /github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository + - /pull-requests/how-tos/create-pull-requests/creating-and-deleting-branches-within-your-repository versions: fpt: '*' ghes: '*' ghec: '*' -shortTitle: Create & delete branches +shortTitle: Manage branches category: - Create pull requests contentType: how-tos @@ -19,10 +20,10 @@ contentType: how-tos ## Creating a branch -Create a branch when you want a separate place to work on changes before opening a pull request. +Create a branch for a separate place to work on changes before opening a pull request. > [!NOTE] -> You can only create a branch in a repository to which you have push access. +> You can only create a branch in a repository to which you have write access. ### Creating a branch via the branches overview @@ -49,7 +50,7 @@ Create a branch when you want a separate place to work on changes before opening ### Creating a branch for an issue -You can create a branch to work on an issue directly from the issue page. For more information, see [AUTOTITLE](/issues/tracking-your-work-with-issues/creating-a-branch-for-an-issue). +You can create a branch to work on an issue directly from the issue page. See [AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/creating-a-branch-for-an-issue). ## Deleting a branch @@ -58,7 +59,7 @@ Delete branches that you no longer need, such as branches for merged or closed w {% data reusables.pull_requests.automatically-delete-branches %} > [!NOTE] -> If the branch you want to delete is the repository's default branch, choose a new default branch first. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/changing-the-default-branch). +> If the branch you want to delete is the repository's default branch, choose a new default branch first. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/changing-the-default-branch). If the branch is associated with an open pull request, merge or close the pull request before deleting the branch. @@ -70,10 +71,10 @@ If the branch is associated with an open pull request, merge or close the pull r 1. If the branch is associated with at least one open pull request, deleting the branch closes the pull requests. Read the warning, then click **Delete**. {% data reusables.pull_requests.retargeted-on-branch-deletion %} -For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches#working-with-branches). +See [AUTOTITLE](/pull-requests/reference/branches). ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches) +* [AUTOTITLE](/pull-requests/reference/branches) * [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/viewing-branches-in-your-repository) * [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/deleting-and-restoring-branches-in-a-pull-request) diff --git a/content/pull-requests/how-tos/commit-changes/troubleshooting-commits.md b/content/pull-requests/how-tos/commit-changes/troubleshooting-commits.md index 2ff0861884ea..3b7432df44b4 100644 --- a/content/pull-requests/how-tos/commit-changes/troubleshooting-commits.md +++ b/content/pull-requests/how-tos/commit-changes/troubleshooting-commits.md @@ -1,7 +1,7 @@ --- title: Troubleshooting commits -shortTitle: Troubleshooting commits -intro: Resolve common problems with commits, such as commits linked to the wrong user, commits that are missing from your local clone, and commits blocked by push protection. +shortTitle: Troubleshoot commits +intro: Resolve common commit issues like incorrect user links, missing local commits, and push protection blocks. redirect_from: - /articles/troubleshooting-commits - /github/committing-changes-to-your-project/troubleshooting-commits @@ -34,8 +34,8 @@ contentType: how-tos ### Commits are linked to another user -1. Change the email address in your local Git configuration by following [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address#setting-your-commit-email-address-in-git). If you work on multiple machines, change this setting on each one. -1. Add the email address to your account by following [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account). +1. Change the email address in your local Git configuration by following [AUTOTITLE](/account-and-profile/how-tos/email-preferences/setting-your-commit-email-address#setting-your-commit-email-address-in-git). If you work on multiple machines, change this setting on each one. +1. Add the email address to your account by following [AUTOTITLE](/account-and-profile/how-tos/email-preferences/adding-an-email-address-to-your-github-account). Future commits that use the email address will be linked to your account. @@ -52,7 +52,7 @@ To find out why a commit is not linked, inspect the commit on {% data variables. * **Unrecognized author (no email address):** Set your commit email address in Git, then add that address to your {% data variables.product.github %} account. * **Invalid email:** Set a valid commit email address in Git, then add that address to your {% data variables.product.github %} account. -Old commits might not be linked after you update your email settings. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address). +Old commits might not be linked after you update your email settings. See [AUTOTITLE](/account-and-profile/how-tos/email-preferences/setting-your-commit-email-address). ## A commit exists on GitHub but not in your local clone @@ -101,12 +101,12 @@ If push protection blocks your work, {% data variables.product.github %} detecte 1. Remove the secret from the commit, file upload, or API request. 1. Try the push, commit, upload, or request again. 1. If you believe the secret is safe to push, follow the bypass steps for your workflow: - * [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-command-line) - * [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-in-the-github-ui) - * [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-rest-api) + * [AUTOTITLE](/code-security/how-tos/secure-your-secrets/work-with-leak-prevention/push-protection-on-the-command-line) + * [AUTOTITLE](/code-security/how-tos/secure-your-secrets/work-with-leak-prevention/push-protection-in-the-github-ui) + * [AUTOTITLE](/code-security/concepts/secret-security/push-protection-from-the-rest-api) ## Further reading * [AUTOTITLE](/search-github/searching-on-github/searching-commits) -* [AUTOTITLE](/code-security/secret-scanning/introduction/about-push-protection) -* [AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns) +* [AUTOTITLE](/code-security/concepts/secret-security/push-protection) +* [AUTOTITLE](/code-security/reference/secret-security/supported-secret-scanning-patterns) diff --git a/content/pull-requests/how-tos/create-pull-requests/changing-the-base-branch-of-a-pull-request.md b/content/pull-requests/how-tos/create-pull-requests/changing-the-base-branch-of-a-pull-request.md index 7998e5273c54..5de43db00454 100644 --- a/content/pull-requests/how-tos/create-pull-requests/changing-the-base-branch-of-a-pull-request.md +++ b/content/pull-requests/how-tos/create-pull-requests/changing-the-base-branch-of-a-pull-request.md @@ -1,6 +1,6 @@ --- title: Changing the base branch of a pull request -intro: After a pull request is opened, you can change the base branch to compare the changes in the pull request against a different branch. +intro: Modify the base branch of an open pull request to compare changes against a different branch and ensure accurate updates. redirect_from: - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request - /articles/changing-the-base-branch-of-a-pull-request @@ -24,7 +24,7 @@ contentType: how-tos 1. In the "Pull Requests" list, click the pull request you want to modify. 1. Next to the pull request title, click **Edit title** {% octicon "pencil" aria-label="Edit title" %}. -1. In the base branch drop-down menu, select the base branch you'd like to [compare changes against](/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits#comparing-branches). +1. In the base branch drop-down menu, select the base branch you'd like to [compare changes against](/pull-requests/how-tos/commit-changes/comparing-commits#comparing-branches). ![Screenshot of a pull request title. The dropdown to change the base branch is outlined in dark orange.](/assets/images/help/pull_requests/pull-request-edit-base-branch.png) @@ -35,6 +35,6 @@ contentType: how-tos ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request) +* [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/creating-a-pull-request) +* [AUTOTITLE](/pull-requests/reference/pull-requests) +* [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request) diff --git a/content/pull-requests/how-tos/create-pull-requests/changing-the-stage-of-a-pull-request.md b/content/pull-requests/how-tos/create-pull-requests/changing-the-stage-of-a-pull-request.md index c61456c79a5c..008ad41a2d60 100644 --- a/content/pull-requests/how-tos/create-pull-requests/changing-the-stage-of-a-pull-request.md +++ b/content/pull-requests/how-tos/create-pull-requests/changing-the-stage-of-a-pull-request.md @@ -1,6 +1,6 @@ --- title: Changing the stage of a pull request -intro: You can mark a draft pull request as ready for review or convert a pull request to a draft. +intro: Mark a draft pull request as ready for review or convert an open pull request back to a draft to manage your workflow effectively. permissions: People with write permissions to a repository and pull request authors can change the stage of a pull request. redirect_from: - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request @@ -12,7 +12,7 @@ versions: fpt: '*' ghes: '*' ghec: '*' -shortTitle: Change the state +shortTitle: Draft pull requests category: - Create pull requests contentType: how-tos @@ -22,7 +22,7 @@ contentType: how-tos {% data reusables.pull_requests.mark-ready-review %} > [!TIP] -> You can also mark a pull request as ready for review using the {% data variables.product.prodname_cli %}. For more information, see [`gh pr ready`](https://cli.github.com/manual/gh_pr_ready) in the {% data variables.product.prodname_cli %} documentation. +> You can also mark a pull request as ready for review using the {% data variables.product.prodname_cli %}. See [`gh pr ready`](https://cli.github.com/manual/gh_pr_ready) in the {% data variables.product.prodname_cli %} documentation. {% data reusables.repositories.sidebar-pr %} 1. In the "Pull requests" list, click the pull request you want to mark as ready for review. @@ -46,4 +46,4 @@ No one can merge the pull request until you mark the pull request as ready for r ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) +* [AUTOTITLE](/pull-requests/reference/pull-requests) diff --git a/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request-from-a-fork.md b/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request-from-a-fork.md index e36e76c44e5a..85aa77ee7a1c 100644 --- a/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request-from-a-fork.md +++ b/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request-from-a-fork.md @@ -1,6 +1,6 @@ --- title: Creating a pull request from a fork -intro: You can create a pull request to propose changes you've made to a fork of an upstream repository. +intro: Create a pull request from a fork to propose changes to an upstream repository and collaborate on code effectively. redirect_from: - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork - /articles/creating-a-pull-request-from-a-fork @@ -18,9 +18,9 @@ category: contentType: how-tos --- -Before creating a pull request from a fork, fork the upstream repository and push your changes to a branch in your fork. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo). +Before creating a pull request from a fork, fork the upstream repository and push your changes to a branch in your fork. See [AUTOTITLE](/pull-requests/how-tos/work-with-forks/fork-a-repo). -In a pull request from a fork, the base branch is where you want to merge your changes, and the compare branch is the branch in your fork that contains your changes. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request#changing-the-branch-range-and-destination-repository). +In a pull request from a fork, the base branch is where you want to merge your changes, and the compare branch is the branch in your fork that contains your changes. See [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/creating-a-pull-request#creating-the-pull-request). {% data reusables.pull_requests.perms-to-open-pull-request %} @@ -47,5 +47,5 @@ In a pull request from a fork, the base branch is where you want to merge your c ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork) +* [AUTOTITLE](/pull-requests/how-tos/work-with-forks) +* [AUTOTITLE](/pull-requests/how-tos/work-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork) diff --git a/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request.md b/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request.md index b3e127206935..1334abd3ef92 100644 --- a/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request.md +++ b/content/pull-requests/how-tos/create-pull-requests/creating-a-pull-request.md @@ -1,7 +1,7 @@ --- title: Creating a pull request -intro: Create a pull request to propose and collaborate on changes to a repository. These changes are proposed in a *branch*, which ensures that the default branch only contains finished and approved work. -permissions: Anyone with read access to a repository can create a pull request. {% data reusables.enterprise-accounts.emu-permission-propose %} +intro: Create a pull request to propose changes to the code in a repository. +permissions: 'Anyone with read access to a repository can create a pull request.
{% data reusables.enterprise-accounts.emu-permission-propose %}' redirect_from: - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request - /articles/creating-a-pull-request @@ -11,12 +11,13 @@ versions: fpt: '*' ghes: '*' ghec: '*' +shortTitle: Create a pull request category: - Create pull requests contentType: how-tos --- -If you want to create a new branch for your pull request but don't have write permissions to the repository, you can fork the repository first. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) and [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks). +If you want to create a new branch for your pull request but don't have write permissions to the repository, you can fork the repository first. See [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/creating-a-pull-request-from-a-fork) and [AUTOTITLE](/pull-requests/reference/forks). When you create your pull request, you can specify which branch you want to merge your changes into. Pull requests can only be opened between two different branches. @@ -24,17 +25,6 @@ When you create your pull request, you can specify which branch you want to merg {% data reusables.pull_requests.close-issues-using-keywords %} -## Changing the branch range and destination repository - -By default, pull requests target the parent repository's default branch. Use the branch and repository dropdown menus to choose the base branch where changes should be applied and the head branch that contains your changes. - -![Screenshot of a pull request. The dropdown to edit the compare branch is expanded.](/assets/images/help/pull_requests/pull-request-review-edit-branch.png) - -When you change the branch range, the Commit and Files changed preview areas update to show the new comparison. If you change the base repository, people who can push to that repository receive notifications for the pull request. - -> [!TIP] -> For more comparison options, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/viewing-and-comparing-commits/comparing-commits). - ## Creating the pull request {% webui %} @@ -51,7 +41,7 @@ When you change the branch range, the Commit and Files changed preview areas upd {% data reusables.repositories.asking-for-review %} -After your pull request has been reviewed, it can be [merged into the repository](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request). +After your pull request has been reviewed, it can be merged into the repository. See [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request). {% endwebui %} @@ -119,18 +109,6 @@ gh pr create --web 1. Click **Preview Pull Request**. {% data variables.product.prodname_desktop %} opens a preview dialog that shows the diff of the changes between your current branch and the base branch. - {% mac %} - - ![Screenshot of the "No local changes" view. A button, labeled "Preview Pull Request", is highlighted with an orange outline.](/assets/images/help/desktop/mac-preview-pull-request.png) - - {% endmac %} - - {% windows %} - - ![Screenshot of the "No local changes" view. A button, labeled "Preview Pull Request", is highlighted with an orange outline.](/assets/images/help/desktop/windows-preview-pull-request.png) - - {% endwindows %} - Alternatively, to go straight to {% data variables.product.prodname_dotcom %} to create your pull request, select the dropdown icon and click **Create Pull Request**. 1. Confirm that the branch in the **base:** dropdown menu is the branch where you want to merge your changes. @@ -157,7 +135,7 @@ gh pr create --web ![Screenshot of the "{% data variables.product.prodname_dotcom %} Pull Request" side bar with a form for creating a pull request, including "Title" and "Description" fields.](/assets/images/help/codespaces/codespaces-commit-pr.png) 1. Click **Create**. -For more information on creating pull requests in {% data variables.product.prodname_github_codespaces %}, see [AUTOTITLE](/codespaces/developing-in-codespaces/using-github-codespaces-for-pull-requests). +For more information on creating pull requests in {% data variables.product.prodname_github_codespaces %}, see [AUTOTITLE](/codespaces/developing-in-a-codespace/using-github-codespaces-for-pull-requests). {% endcodespaces %} @@ -174,7 +152,7 @@ You can also make changes to files on the {% data variables.product.github %} we 1. On {% data variables.product.github %}, navigate to a pull request in a repository. {% data reusables.repositories.changed-files %} 1. Scroll down to the file you want to make changes to. - * If the pull request has a lot of files, you can use the filter to locate the file. See [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request). + * If the pull request has a lot of files, you can use the filter to locate the file. 1. Above the file you want to change, click {% octicon "kebab-horizontal" aria-label="Show options" %}. ![Screenshot of the options above a file on the "File changed" tab. The "Show options" button is highlighted with an orange rectangle.](/assets/images/help/pull_requests/menu-on-pull-request-file.png) 1. In the menu, click **Edit file**. @@ -184,9 +162,9 @@ You can also make changes to files on the {% data variables.product.github %} we ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request) -* [AUTOTITLE](/issues/tracking-your-work-with-issues/creating-an-issue) -* [AUTOTITLE](/issues/tracking-your-work-with-issues/assigning-issues-and-pull-requests-to-other-github-users) +* [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/creating-a-pull-request-from-a-fork) +* [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch) +* [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/changing-the-base-branch-of-a-pull-request) +* [AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/creating-an-issue) +* [AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/assigning-issues-and-pull-requests-to-other-github-users) * [AUTOTITLE](/get-started/writing-on-github) diff --git a/content/pull-requests/how-tos/create-pull-requests/index.md b/content/pull-requests/how-tos/create-pull-requests/index.md index a0ea3dd35bc1..7846973d5271 100644 --- a/content/pull-requests/how-tos/create-pull-requests/index.md +++ b/content/pull-requests/how-tos/create-pull-requests/index.md @@ -6,19 +6,17 @@ redirect_from: - /articles/proposing-changes-to-your-work-with-pull-requests - /github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests shortTitle: Create pull requests -intro: Create pull requests and the branches behind them, keep them in sync, and request reviews. +intro: Create pull requests, manage branches, keep them in sync, and request reviews for collaborative development. versions: fpt: '*' ghes: '*' ghec: '*' children: - - /requesting-a-pull-request-review - - /changing-the-stage-of-a-pull-request - - /keeping-your-pull-request-in-sync-with-the-base-branch - - /creating-and-deleting-branches-within-your-repository - - /committing-changes-to-a-pull-request-branch-created-from-a-fork - /creating-a-pull-request - /creating-a-pull-request-from-a-fork + - /changing-the-stage-of-a-pull-request + - /requesting-a-pull-request-review + - /keeping-your-pull-request-in-sync-with-the-base-branch - /changing-the-base-branch-of-a-pull-request contentType: how-tos --- diff --git a/content/pull-requests/how-tos/create-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md b/content/pull-requests/how-tos/create-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md index f82409fc7b9b..e878a571c4eb 100644 --- a/content/pull-requests/how-tos/create-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md +++ b/content/pull-requests/how-tos/create-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch.md @@ -1,6 +1,6 @@ --- title: Keeping your pull request in sync with the base branch -intro: After you open a pull request, you can update the head branch, which contains your changes, with any changes that have been made in the base branch. +intro: Update your pull request branch with changes from the base branch to resolve conflicts and ensure compatibility before merging. permissions: People with write permissions to the repository to which the head branch of the pull request belongs can update the head branch with changes that have been made in the base branch. versions: fpt: '*' @@ -19,11 +19,11 @@ contentType: how-tos Before merging, update your pull request branch with changes from the base branch to catch conflicts or test failures early. You can update the branch from the pull request page when there are no merge conflicts and the branch is behind the base branch. > [!NOTE] -> You may not be able to use the `Update branch` button if the HEAD branch of your pull request is a protected branch. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). +> You may not be able to use the `Update branch` button if the HEAD branch of your pull request is a protected branch. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). -If changes to the base branch cause merge conflicts in your pull request branch, resolve the conflicts before updating the branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts). +If changes to the base branch cause merge conflicts in your pull request branch, resolve the conflicts before updating the branch. See [AUTOTITLE](/pull-requests/reference/merge-conflicts). -From the pull request page, you can update by merging the base branch into your head branch or by rebasing your changes onto the latest base branch. Rebasing creates a linear history without a merge commit. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests#three-dot-and-two-dot-git-diff-comparisons). +From the pull request page, you can update by merging the base branch into your head branch or by rebasing your changes onto the latest base branch. Rebasing creates a linear history without a merge commit. See [AUTOTITLE](/pull-requests/reference/branches#three-dot-and-two-dot-git-diff-comparisons). ## Updating your pull request branch @@ -40,5 +40,5 @@ From the pull request page, you can update by merging the base branch into your ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request) +* [AUTOTITLE](/pull-requests/reference/pull-requests) +* [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/changing-the-stage-of-a-pull-request) diff --git a/content/pull-requests/how-tos/create-pull-requests/requesting-a-pull-request-review.md b/content/pull-requests/how-tos/create-pull-requests/requesting-a-pull-request-review.md index b02ab35e0ec6..1abd31f3144c 100644 --- a/content/pull-requests/how-tos/create-pull-requests/requesting-a-pull-request-review.md +++ b/content/pull-requests/how-tos/create-pull-requests/requesting-a-pull-request-review.md @@ -1,6 +1,6 @@ --- title: Requesting a pull request review -intro: After you create a pull request, you can ask a specific person to review the changes you've proposed. If you're an organization member, you can also request a specific team to review your changes. +intro: Request reviews for your pull requests from individuals or teams to ensure thorough feedback and collaboration. product: '{% data reusables.gated-features.multiple-pr-reviewers %}' redirect_from: - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review @@ -18,15 +18,11 @@ category: contentType: how-tos --- -To request a review, you need write access to the repository. You can request a review from a person or team with read access to the repository, and they receive a notification. Pull request authors can request reviews only if they are repository owners or collaborators with write access. - -{% ifversion copilot %} +To request a review, you need write access to the repository. You can request a review from a person or team with read access to the repository, and they receive a notification. For complete details on permissions for requesting reviews, see [AUTOTITLE](/pull-requests/reference/pull-request-reviews#requesting-and-requiring-reviews). ## Requesting reviews from collaborators and organization members -{% endif %} - -Suggested reviewers are based on [git blame data](/repositories/working-with-files/using-files/viewing-a-file). After someone reviews your pull request and you make changes, you can request another review from the same reviewer. +Suggested reviewers are based on [git blame data](/repositories/working-with-files/using-files/viewing-and-understanding-files). After someone reviews your pull request and you make changes, you can request another review from the same reviewer. {% data reusables.repositories.sidebar-pr %} 1. In the list of pull requests, click the pull request that you want a specific person or team to review. @@ -42,14 +38,17 @@ Suggested reviewers are based on [git blame data](/repositories/working-with-fil ![Screenshot of the "Reviewers" section of a pull request's sidebar. To the right of @octocat, a sync icon is outlined in dark orange.](/assets/images/help/pull_requests/request-re-review.png) -{% ifversion copilot %} +{% ifversion fpt or ghec %} ## Requesting a review from {% data variables.product.prodname_copilot %} -You can also request that {% data variables.product.prodname_copilot_short %} review your code and provide feedback and suggested changes on your work. See [AUTOTITLE](/copilot/using-github-copilot/code-review/using-copilot-code-review). +> [!NOTE] +> {% data variables.product.prodname_copilot_short %} features require a {% data variables.product.prodname_copilot_short %} plan. See [AUTOTITLE](/copilot/get-started/plans). + +You can also request that {% data variables.product.prodname_copilot_short %} review your code and provide feedback and suggested changes on your work. See [AUTOTITLE](/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review). {% endif %} ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews) +* [AUTOTITLE](/pull-requests/reference/pull-request-reviews) diff --git a/content/pull-requests/how-tos/index.md b/content/pull-requests/how-tos/index.md index d70fe79e5f1c..71ad1484bcc9 100644 --- a/content/pull-requests/how-tos/index.md +++ b/content/pull-requests/how-tos/index.md @@ -1,16 +1,16 @@ --- title: How-tos for pull requests shortTitle: How-tos -intro: 'Follow step-by-step guidance to create, review, merge, and close pull requests, work with forks, and manage commits.' +intro: 'Create, review, merge, and close pull requests, manage commits, and collaborate effectively using forks.' versions: fpt: '*' ghes: '*' ghec: '*' children: - - /create-pull-requests - - /review-pull-requests - - /merge-and-close-pull-requests - - /work-with-forks - - /commit-changes + - /commit-changes + - /create-pull-requests + - /review-pull-requests + - /merge-and-close-pull-requests + - /work-with-forks contentType: how-tos --- diff --git a/content/pull-requests/how-tos/merge-and-close-pull-requests/automatically-merging-a-pull-request.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/automatically-merging-a-pull-request.md index d5fb0e504fe9..870ed8b48ee3 100644 --- a/content/pull-requests/how-tos/merge-and-close-pull-requests/automatically-merging-a-pull-request.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/automatically-merging-a-pull-request.md @@ -1,6 +1,6 @@ --- title: Automatically merging a pull request -intro: You can increase development velocity by enabling auto-merge for a pull request so that the pull request will merge automatically when all merge requirements are met. +intro: Enable or disable auto-merge for pull requests to streamline your workflow and automatically merge changes once all requirements are met. product: '{% data reusables.gated-features.auto-merge %}' versions: fpt: '*' @@ -18,7 +18,7 @@ contentType: how-tos --- ## About auto-merge -Auto-merge merges a pull request automatically after all required reviews and status checks pass. Before you use auto-merge, it must be enabled for the repository. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository). +Auto-merge merges a pull request automatically after all required reviews and status checks pass. Before you use auto-merge, it must be enabled for the repository. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository). Auto-merge is disabled if someone without write permissions pushes new changes to the head branch or switches the base branch. @@ -31,7 +31,7 @@ People with write permissions to a repository can enable auto-merge for a pull r {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-pr %} 1. In the "Pull Requests" list, click the pull request you want to auto-merge. -1. Optionally, select the {% octicon "triangle-down" aria-label="Select the merge method" %} dropdown menu, then click a merge method. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges). +1. Optionally, select the {% octicon "triangle-down" aria-label="Select the merge method" %} dropdown menu, then click a merge method. See [AUTOTITLE](/pull-requests/reference/pull-request-merges). ![Screenshot of the merge box of a pull request. A dropdown menu, labeled with a downward-facing triangle, is outlined in dark orange.](/assets/images/help/pull_requests/enable-auto-merge-drop-down.png) diff --git a/content/pull-requests/how-tos/merge-and-close-pull-requests/closing-a-pull-request.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/closing-a-pull-request.md index 891022ffec31..b81b8e49af8f 100644 --- a/content/pull-requests/how-tos/merge-and-close-pull-requests/closing-a-pull-request.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/closing-a-pull-request.md @@ -1,6 +1,6 @@ --- title: Closing a pull request -intro: You may choose to *close* a pull request without [merging it into the upstream branch](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request). This can be handy if the changes proposed in the branch are no longer needed, or if another solution has been proposed in another branch. +intro: Close a pull request without merging it to manage unnecessary changes or address alternative solutions in other branches. redirect_from: - /github/collaborating-with-issues-and-pull-requests/incorporating-changes-from-a-pull-request/closing-a-pull-request - /articles/closing-a-pull-request @@ -11,13 +11,14 @@ versions: fpt: '*' ghes: '*' ghec: '*' +shortTitle: Close a pull request category: - Merge and close pull requests contentType: how-tos --- > [!TIP] -> If you opened a pull request with the wrong base branch, instead of closing it and opening a new one, you can change the base branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request). +> If you opened a pull request with the wrong base branch, instead of closing it and opening a new one, you can change the base branch. See [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/changing-the-base-branch-of-a-pull-request). {% data reusables.repositories.sidebar-pr %} 1. In the "Pull Requests" list, click the pull request you want to close. diff --git a/content/pull-requests/how-tos/merge-and-close-pull-requests/index.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/index.md index c7824eca05fb..001f24d42cb5 100644 --- a/content/pull-requests/how-tos/merge-and-close-pull-requests/index.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/index.md @@ -15,20 +15,20 @@ redirect_from: - /articles/incorporating-changes-from-a-pull-request - /github/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request shortTitle: Merge and close -intro: Merge, automatically merge, revert, and close pull requests, and resolve merge conflicts and status checks. +intro: 'Merge, revert, and close pull requests, resolve merge conflicts, and troubleshoot status checks effectively on {% data variables.product.github %}.' versions: fpt: '*' ghes: '*' ghec: '*' children: - - /resolving-a-merge-conflict-using-the-command-line - /resolving-a-merge-conflict-on-github + - /resolving-a-merge-conflict-using-the-command-line - /troubleshooting-required-status-checks - - /closing-a-pull-request - - /automatically-merging-a-pull-request - - /reverting-a-pull-request - /merging-a-pull-request - /merging-a-pull-request-with-a-merge-queue + - /automatically-merging-a-pull-request + - /reverting-a-pull-request + - /closing-a-pull-request contentType: how-tos --- diff --git a/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request-with-a-merge-queue.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request-with-a-merge-queue.md index bd78bbfdf9d4..2820d28e062d 100644 --- a/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request-with-a-merge-queue.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request-with-a-merge-queue.md @@ -1,6 +1,6 @@ --- title: Merging a pull request with a merge queue -intro: If a merge queue is required by the branch protection setting for the branch, you can add your pull requests to a merge queue and {% data variables.product.github %} will merge the pull requests for you once all required checks have passed. +intro: 'Use merge queues in {% data variables.product.github %} to streamline pull request merging, ensure required checks pass, and manage queue operations effectively.' versions: fpt: '*' ghec: '*' @@ -19,7 +19,7 @@ contentType: how-tos ## About merge queues -A merge queue helps merge pull requests into a busy protected branch after required checks pass. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-a-merge-queue). +A merge queue helps merge pull requests into a busy protected branch after required checks pass. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-a-merge-queue). ## Adding a pull request to a merge queue @@ -48,7 +48,7 @@ A merge queue helps merge pull requests into a busy protected branch after requi {% cli %} -With {% data variables.product.prodname_cli %}, use the `gh pr merge` command to add a pull request to a merge queue. If you are targeting a branch that requires a merge queue, this command automatically adds the pull request to the queue if required checks have passed. If required checks have not passed, this command enables auto-merge for the pull request. For more information, see [`gh pr merge`](https://cli.github.com/manual/gh_pr_merge) in the {% data variables.product.prodname_cli %} manual. +With {% data variables.product.prodname_cli %}, use the `gh pr merge` command to add a pull request to a merge queue. If you are targeting a branch that requires a merge queue, this command automatically adds the pull request to the queue if required checks have passed. If required checks have not passed, this command enables auto-merge for the pull request. See [`gh pr merge`](https://cli.github.com/manual/gh_pr_merge) in the {% data variables.product.prodname_cli %} manual. {% endcli %} @@ -85,7 +85,7 @@ You can view the merge queue for a base branch in various places on {% data vari {% endwebui %} -* On the **Branches** page for the repository. We recommend this route if you don't have or don't know about a pull request already in a queue, and if you want to see what's in that queue. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/viewing-branches-in-your-repository). +* On the **Branches** page for the repository. We recommend this route if you don't have or don't know about a pull request already in a queue, and if you want to see what's in that queue. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/viewing-branches-in-your-repository). ![Screenshot of the "Branches" page for a repository. A link, labeled "33 pull requests queued to merge," is outlined in dark orange.](/assets/images/help/pull_requests/merge-queue-branches-page.png) diff --git a/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request.md index 5720dfc2d93f..2dd7ec38da36 100644 --- a/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request.md @@ -1,6 +1,6 @@ --- title: Merging a pull request -intro: Merge a pull request into the upstream branch when work is completed. Anyone with push access to the repository can complete the merge. +intro: Merge pull requests into the upstream branch, choose merge methods, and meet repository requirements like reviews or status checks. redirect_from: - /github/collaborating-with-issues-and-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request - /articles/merging-a-pull-request @@ -11,6 +11,7 @@ versions: fpt: '*' ghes: '*' ghec: '*' +shortTitle: Merge a pull request category: - Merge and close pull requests contentType: how-tos @@ -19,17 +20,17 @@ contentType: how-tos Merge a pull request when the proposed changes are ready and any repository requirements are satisfied. You can't merge a draft pull request. -Repository rules or branch protection may require reviews, status checks, or an up-to-date branch before merging. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). +Repository rules or branch protection may require reviews, status checks, or an up-to-date branch before merging. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). {% data reusables.repositories.rulesets-alternative %} {% data reusables.pull_requests.you-can-auto-merge %} -If the base branch requires a merge queue, the available merge options differ from those described here. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request-with-a-merge-queue). +If the base branch requires a merge queue, the available merge options differ from those described here. See [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request-with-a-merge-queue). -If the pull request has merge conflicts, or if you want to test changes first, [check out the pull request locally](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally). +If the pull request has merge conflicts, or if you want to test changes first, [check out the pull request locally](/pull-requests/how-tos/review-pull-requests/checking-out-pull-requests-locally). -The repository may automatically delete the head branch after merging. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-the-automatic-deletion-of-branches). +The repository may automatically delete the head branch after merging. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-the-automatic-deletion-of-branches). > [!NOTE] > {% data reusables.pull_requests.retargeted-on-branch-deletion %} @@ -38,7 +39,7 @@ Pull requests use [the `--no-ff` option](https://git-scm.com/docs/git-merge#_fas {% data reusables.pull_requests.close-issues-using-keywords %} -If you don't want to merge the changes, you can [close the pull request](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/closing-a-pull-request). +If you don't want to merge the changes, you can [close the pull request](/pull-requests/how-tos/merge-and-close-pull-requests/closing-a-pull-request). ## Merging a pull request @@ -48,16 +49,16 @@ If you don't want to merge the changes, you can [close the pull request](/pull-r 1. In the "Pull Requests" list, click the pull request you want to merge. 1. Scroll down to the bottom of the pull request. Depending on the merge options enabled for your repository, choose a merge method: - * [Merge all commits into the base branch](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges) by clicking **Merge pull request**. If the option is not shown, click the merge dropdown menu and select **Create a merge commit**. + * [Merge all commits into the base branch](/pull-requests/reference/pull-request-merges) by clicking **Merge pull request**. If the option is not shown, click the merge dropdown menu and select **Create a merge commit**. ![Screenshot of the merge options for a pull request. The arrow to expand the dropdown is outlined in dark orange.](/assets/images/help/pull_requests/merge-pull-request-options.png) - * [Squash the commits into one commit](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges#squash-and-merge-your-pull-request-commits) by clicking the merge dropdown menu, selecting **Squash and merge**, and then clicking **Squash and merge**. + * [Squash the commits into one commit](/pull-requests/reference/pull-request-merges#squash-and-merge-your-pull-request-commits) by clicking the merge dropdown menu, selecting **Squash and merge**, and then clicking **Squash and merge**. - * [Rebase the commits individually onto the base branch](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges#rebase-and-merge-your-pull-request-commits) by clicking the merge dropdown menu, selecting **Rebase and merge**, and then clicking **Rebase and merge**. + * [Rebase the commits individually onto the base branch](/pull-requests/reference/pull-request-merges#rebase-and-merge-your-pull-request-commits) by clicking the merge dropdown menu, selecting **Rebase and merge**, and then clicking **Rebase and merge**. > [!NOTE] - > Rebase and merge will always update the committer information and create new commit SHAs. For more information, see [About pull request merges](/articles/about-pull-request-merges#rebase-and-merge-your-pull-request-commits). + > Rebase and merge will always update the committer information and create new commit SHAs. See [About pull request merges](/pull-requests/reference/pull-request-merges#rebase-and-merge-your-pull-request-commits). 1. If prompted, type a commit message, or accept the default message. @@ -82,7 +83,7 @@ To merge a pull request, use the `gh pr merge` subcommand. Replace `pull-request gh pr merge PULL-REQUEST ``` -Follow the interactive prompts to complete the merge. For more information about the merge methods that you can choose, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges). +Follow the interactive prompts to complete the merge. See [AUTOTITLE](/pull-requests/reference/pull-request-merges). Alternatively, you can use flags to skip the interactive prompts. For example, this command squashes the commits into a single commit with the commit message "my squash commit", merges the squashed commit into the base branch, and then deletes the local and remote branch. @@ -94,7 +95,7 @@ gh pr merge 523 --squash --body "my squash commit" --delete-branch ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/reverting-a-pull-request) -* [AUTOTITLE](/desktop/keeping-your-local-repository-in-sync-with-github/syncing-your-branch) using {% data variables.product.prodname_desktop %} -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts) +* [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests/reverting-a-pull-request) +* [AUTOTITLE](/desktop/working-with-your-remote-repository-on-github-or-github-enterprise/syncing-your-branch-in-github-desktop) using {% data variables.product.prodname_desktop %} +* [AUTOTITLE](/pull-requests/reference/pull-request-merges) +* [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests) diff --git a/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github.md index c3700ca16d36..9e1ce4bb0146 100644 --- a/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github.md @@ -1,6 +1,6 @@ --- title: Resolving a merge conflict on GitHub -intro: You can resolve simple merge conflicts that involve competing line changes on GitHub, using the conflict editor. +intro: Resolve simple merge conflicts directly on {% data variables.product.github %} using the conflict editor or handle complex cases via the command line. redirect_from: - /github/collaborating-with-issues-and-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github - /articles/resolving-a-merge-conflict-on-github @@ -17,12 +17,10 @@ category: - Merge and close pull requests contentType: how-tos --- -You can resolve simple competing line change conflicts on {% data variables.product.github %}. For other conflicts, use the command line. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). - -{% ifversion copilot %} - -If {% data variables.copilot.copilot_cloud_agent %} is enabled for the repository, you can click **Fix with {% data variables.product.prodname_copilot_short %}** in the merge box to have {% data variables.product.prodname_copilot_short %} resolve conflicts automatically. For more information, see [AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/make-changes-to-an-existing-pr#resolving-merge-conflicts). +You can resolve simple competing line change conflicts on {% data variables.product.github %}. For other conflicts, use the command line. See [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line). +{% ifversion fpt or ghec %} +If {% data variables.copilot.copilot_cloud_agent %} is enabled for the repository, you can click **Fix with {% data variables.product.prodname_copilot_short %}** in the merge box to have {% data variables.product.prodname_copilot_short %} resolve conflicts automatically. See [AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/use-cloud-agent-on-github#resolving-merge-conflicts). {% endif %} {% ifversion ghes %} @@ -30,7 +28,7 @@ If a site administrator disables the merge conflict editor for pull requests bet {% endif %} > [!WARNING] -> Resolving conflicts on {% data variables.product.github %} merges the entire [base branch](/get-started/learning-about-github/github-glossary#base-branch) into the [head branch](/get-started/learning-about-github/github-glossary#head-branch). If the head branch is the default or protected branch, you may be prompted to create a new head branch. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). +> Resolving conflicts on {% data variables.product.github %} merges the entire [base branch](/get-started/learning-about-github/github-glossary#base-branch) into the [head branch](/get-started/learning-about-github/github-glossary#head-branch). If the head branch is the default or protected branch, you may be prompted to create a new head branch. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). {% data reusables.repositories.sidebar-pr %} 1. In the "Pull Requests" list, click the pull request with a merge conflict that you want to resolve. @@ -39,7 +37,7 @@ If a site administrator disables the merge conflict editor for pull requests bet ![Screenshot of a warning that a pull request has a merge conflict. The "Resolve merge conflicts" button is outlined in dark orange.](/assets/images/help/pull_requests/resolve-merge-conflicts-button.png) > [!NOTE] - > If **Resolve conflicts** is deactivated, resolve the conflict using another Git client or the command line. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). + > If **Resolve conflicts** is deactivated, resolve the conflict using another Git client or the command line. See [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line). {% data reusables.pull_requests.decide-how-to-resolve-competing-line-change-merge-conflict %} 1. If your file has more than one merge conflict, scroll down to the next set of conflict markers and repeat steps four and five to resolve the conflict. @@ -55,8 +53,8 @@ If a site administrator disables the merge conflict editor for pull requests bet 1. If prompted, review the branch that you are committing to. You can update the head branch or, if available, create a new branch for the pull request. If the head branch is protected, you must create a new branch. Click **Create branch and update my pull request** or **I understand, continue updating BRANCH**. -1. To merge your pull request, click **Merge pull request**. For more information about other pull request merge options, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request). +1. To merge your pull request, click **Merge pull request**. See [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request). ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges) +* [AUTOTITLE](/pull-requests/reference/pull-request-merges) diff --git a/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line.md index 9fdf1ec05a59..48af16cf050f 100644 --- a/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line.md @@ -1,6 +1,6 @@ --- title: Resolving a merge conflict using the command line -intro: You can resolve merge conflicts using the command line and a text editor. +intro: Resolve merge conflicts using the command line by identifying conflicting changes, editing files, and committing resolutions. redirect_from: - /github/collaborating-with-issues-and-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line - /articles/resolving-a-merge-conflict-from-the-command-line @@ -17,16 +17,16 @@ category: - Merge and close pull requests contentType: how-tos --- -Merge conflicts happen when competing changes are made to the same line of a file, or when one person edits a file and another person deletes the same file. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts). +Merge conflicts happen when competing changes are made to the same line of a file, or when one person edits a file and another person deletes the same file. See [AUTOTITLE](/pull-requests/reference/merge-conflicts). > [!TIP] -> You can use the conflict editor on {% data variables.product.github %} to resolve competing line change merge conflicts between branches that are part of a pull request. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github). +> You can use the conflict editor on {% data variables.product.github %} to resolve competing line change merge conflicts between branches that are part of a pull request. See [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github). ## Competing line change merge conflicts When competing changes affect the same lines, choose which changes to keep, then commit the resolution. -{% data reusables.command_line.open_the_multi_os_terminal %} +1. Open your terminal or Git Bash. 1. Navigate into the local Git repository that has the merge conflict. ```shell @@ -79,13 +79,13 @@ When competing changes affect the same lines, choose which changes to keep, then git commit -m "Resolve merge conflict by incorporating both suggestions" ``` -You can now merge the branches on the command line or [push your changes to your remote repository](/get-started/using-git/pushing-commits-to-a-remote-repository) on {% data variables.product.github %} and [merge your changes](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request) in a pull request. +You can now merge the branches on the command line or [push your changes to your remote repository](/get-started/using-git/pushing-commits-to-a-remote-repository) on {% data variables.product.github %} and [merge your changes](/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request) in a pull request. ## Removed file merge conflicts When one branch deletes a file and another branch edits the same file, choose whether to keep or delete the file, then commit the resolution. -{% data reusables.command_line.open_the_multi_os_terminal %} +1. Open your terminal or Git Bash. 1. Navigate into the local Git repository that has the merge conflict. ```shell @@ -133,9 +133,9 @@ When one branch deletes a file and another branch edits the same file, choose wh > [branch-d 6f89e49] Merge branch 'branch-c' into branch-d ``` -You can now merge the branches on the command line or [push your changes to your remote repository](/get-started/using-git/pushing-commits-to-a-remote-repository) on {% data variables.product.github %} and [merge your changes](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request) in a pull request. +With merge conflicts resolved, you can now push your changes to your remote repository on {% data variables.product.github %} or merge your pull request into its base branch. ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally) +* [AUTOTITLE](/pull-requests/reference/merge-conflicts) +* [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/checking-out-pull-requests-locally) diff --git a/content/pull-requests/how-tos/merge-and-close-pull-requests/reverting-a-pull-request.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/reverting-a-pull-request.md index 47fdd2598072..2fa3bb13bcf5 100644 --- a/content/pull-requests/how-tos/merge-and-close-pull-requests/reverting-a-pull-request.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/reverting-a-pull-request.md @@ -1,6 +1,6 @@ --- title: Reverting a pull request -intro: You can revert a pull request after it's been merged to the upstream branch. +intro: Create a new pull request to revert a previously merged pull request and address merge conflicts if they arise. redirect_from: - /github/collaborating-with-issues-and-pull-requests/incorporating-changes-from-a-pull-request/reverting-a-pull-request - /github/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/reverting-a-pull-request @@ -11,6 +11,7 @@ versions: fpt: '*' ghes: '*' ghec: '*' +shortTitle: Revert a pull request category: - Merge and close pull requests contentType: how-tos @@ -22,7 +23,7 @@ Reverting a merged pull request creates a new pull request that reverts the orig ## Reverting a pull request > [!NOTE] -> You may need to revert individual commits if reverting the pull request causes merge conflicts or if the original pull request was not merged on {% data variables.product.github %}. For more information, see [Git revert](https://git-scm.com/docs/git-revert.html) in the Git documentation. +> You may need to revert individual commits if reverting the pull request causes merge conflicts or if the original pull request was not merged on {% data variables.product.github %}. See [Git revert](https://git-scm.com/docs/git-revert.html) in the Git documentation. {% data reusables.repositories.sidebar-pr %} 1. In the "Pull Requests" list, click the pull request you want to revert. @@ -30,4 +31,4 @@ Reverting a merged pull request creates a new pull request that reverts the orig ![Screenshot of a pull request's timeline. The "Revert" button is outlined in dark orange.](/assets/images/help/pull_requests/revert-pull-request-link.png) -1. Merge the resulting pull request. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request). +1. Merge the resulting pull request. See [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request). diff --git a/content/pull-requests/how-tos/merge-and-close-pull-requests/troubleshooting-required-status-checks.md b/content/pull-requests/how-tos/merge-and-close-pull-requests/troubleshooting-required-status-checks.md index 353594f9938f..c4c7e31a47b6 100644 --- a/content/pull-requests/how-tos/merge-and-close-pull-requests/troubleshooting-required-status-checks.md +++ b/content/pull-requests/how-tos/merge-and-close-pull-requests/troubleshooting-required-status-checks.md @@ -1,6 +1,6 @@ --- title: Troubleshooting required status checks -intro: You can check for common errors and resolve issues with required status checks. +intro: Resolve common errors and unblock merging or pushing to protected branches by troubleshooting required status checks. product: '{% data reusables.gated-features.protected-branches %}' versions: fpt: '*' @@ -11,16 +11,16 @@ redirect_from: - /github/administering-a-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks - /repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks - /pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks -shortTitle: Required status checks +shortTitle: Troubleshoot status checks category: - Merge and close pull requests contentType: how-tos --- -Use these checks when a required status check blocks merging or pushing to a protected branch. For an overview, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks). +Use these checks when a required status check blocks merging or pushing to a protected branch. See [AUTOTITLE](/pull-requests/reference/status-checks). * A required status check must have completed successfully in the chosen repository during the past seven days. -* If a check and a commit status have the same name, both must pass when that name is required. For more information, see [AUTOTITLE](/rest/checks). -* If branch protection requires your branch to be up-to-date, merge or rebase the base branch into your branch. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging) and [AUTOTITLE](/get-started/using-git/about-git-rebase). +* If a check and a commit status have the same name, both must pass when that name is required. See [AUTOTITLE](/rest/checks). +* If branch protection requires your branch to be up-to-date, merge or rebase the base branch into your branch. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging) and [AUTOTITLE](/get-started/using-git/about-git-rebase). If required status checks have not passed, pushing to a protected branch returns an error similar to this. @@ -37,7 +37,7 @@ remote: error: Required status check "ci-build" is failing Check the following if a required check is still blocking a pull request. * Required checks must pass on the latest commit SHA. Checks from earlier commits don't satisfy the requirement. -* Successful check statuses are `success`, `skipped`, and `neutral`. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks). +* Successful check statuses are `success`, `skipped`, and `neutral`. See [AUTOTITLE](/pull-requests/reference/status-checks). ## Conflicts between head commit and test merge commit @@ -48,15 +48,15 @@ Use the pull request status checks box to identify which commit must pass. | Test merge commit has a status | The test merge commit | `Showing checks for the merge commit` | | Test merge commit has no status | The head commit | Checks for the latest head commit | -For more information about test merge commits, see [AUTOTITLE](/rest/pulls/pulls#get-a-pull-request). +See [AUTOTITLE](/rest/pulls/pulls#get-a-pull-request). ## Handling skipped but required checks | Cause | Result | How to fix or check | | --- | --- | --- | -| A workflow is skipped by [path filtering](/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore), [branch filtering](/actions/using-workflows/workflow-syntax-for-github-actions#onpull_requestpull_request_targetbranchesbranches-ignore), or a [commit message](/actions/managing-workflow-runs/skipping-workflow-runs) | Associated checks stay in a "Pending" state and block merging | Avoid requiring workflows that can be skipped. | -| A job is skipped by a conditional | The job reports "Success" | See [AUTOTITLE](/actions/using-jobs/using-conditions-to-control-job-execution). | -| A job depends on a failed job | The dependent job is skipped and may not block merging | Use `always()` with `needs` for required checks that depend on other jobs. See [AUTOTITLE](/actions/using-jobs/using-jobs-in-a-workflow#defining-prerequisite-jobs). | +| A workflow is skipped by [path filtering](/actions/reference/workflows-and-actions/workflow-syntax#onpushpull_requestpull_request_targetpathspaths-ignore), [branch filtering](/actions/reference/workflows-and-actions/workflow-syntax#onpull_requestpull_request_targetbranchesbranches-ignore), or a [commit message](/actions/how-tos/manage-workflow-runs/skip-workflow-runs) | Associated checks stay in a "Pending" state and block merging | Avoid requiring workflows that can be skipped. | +| A job is skipped by a conditional | The job reports "Success" | See [AUTOTITLE](/actions/how-tos/write-workflows/choose-when-workflows-run/control-jobs-with-conditions). | +| A job depends on a failed job | The dependent job is skipped and may not block merging | Use `always()` with `needs` for required checks that depend on other jobs. See [AUTOTITLE](/actions/how-tos/write-workflows/choose-what-workflows-do/use-jobs#defining-prerequisite-jobs). | {% data reusables.pull_requests.path-filtering-required-workflows %} @@ -105,7 +105,7 @@ on: merge_group: ``` -For more information on the `merge_group` event, see [AUTOTITLE](/actions/using-workflows/events-that-trigger-workflows#merge_group). +See [AUTOTITLE](/actions/reference/workflows-and-actions/events-that-trigger-workflows#merge_group). ## Required status checks from unexpected sources diff --git a/content/pull-requests/how-tos/review-pull-requests/approving-a-pull-request-with-required-reviews.md b/content/pull-requests/how-tos/review-pull-requests/approving-a-pull-request-with-required-reviews.md index 70a811af64f5..9d568a2987f3 100644 --- a/content/pull-requests/how-tos/review-pull-requests/approving-a-pull-request-with-required-reviews.md +++ b/content/pull-requests/how-tos/review-pull-requests/approving-a-pull-request-with-required-reviews.md @@ -1,6 +1,6 @@ --- title: Approving a pull request with required reviews -intro: If your repository requires reviews, pull requests must have a specific number of approving reviews from people with _write_ or _admin_ permissions in the repository before they can be merged. +intro: Approve pull requests with required reviews, including setting approval rules, reviewing changes, and submitting feedback before merging. redirect_from: - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews - /articles/approving-a-pull-request-with-required-reviews @@ -11,24 +11,23 @@ versions: fpt: '*' ghes: '*' ghec: '*' -shortTitle: Required reviews +shortTitle: Approve PRs category: - Review pull requests contentType: how-tos --- -For more information about required reviews, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-pull-request-reviews-before-merging). -You can comment on a pull request, approve the changes, or request improvements before approving. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request). +You can comment on a pull request, approve the changes, or request improvements before approving. See [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request). {% data reusables.search.requested_reviews_search %} > [!TIP] -> If a pull request you approved has changed significantly, you can dismiss your review. The pull request will need a new review before it can be merged. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/dismissing-a-pull-request-review). +> If a pull request you approved has changed significantly, you can dismiss your review. The pull request will need a new review before it can be merged. See [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/dismissing-a-pull-request-review). {% data reusables.repositories.sidebar-pr %} {% data reusables.repositories.choose-pr-review %} {% data reusables.repositories.changed-files %} -1. Review the changes in the pull request. Optionally, comment on specific lines or files. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request#starting-a-review). +1. Review the changes in the pull request. Optionally, comment on specific lines or files. See [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request#starting-a-review). {% data reusables.repositories.review-changes %} {% data reusables.repositories.review-summary-comment %} 1. Select **Approve** to approve merging the proposed changes. @@ -38,5 +37,7 @@ You can comment on a pull request, approve the changes, or request improvements ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request) +* [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-pull-request-reviews-before-merging) +* [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request) +* [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/commenting-on-a-pull-request) + diff --git a/content/pull-requests/how-tos/review-pull-requests/checking-out-pull-requests-locally.md b/content/pull-requests/how-tos/review-pull-requests/checking-out-pull-requests-locally.md index 9e187caa16f2..5fafd0cd4993 100644 --- a/content/pull-requests/how-tos/review-pull-requests/checking-out-pull-requests-locally.md +++ b/content/pull-requests/how-tos/review-pull-requests/checking-out-pull-requests-locally.md @@ -1,6 +1,6 @@ --- title: Checking out pull requests locally -intro: When someone sends you a pull request from a fork or branch of your repository, you can merge it locally to resolve a merge conflict or to test and verify the changes before merging on {% data variables.product.github %}. +intro: Check out pull requests locally to resolve merge conflicts, test changes, or modify code. redirect_from: - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally - /articles/checking-out-pull-requests-locally @@ -18,7 +18,7 @@ contentType: how-tos --- > [!NOTE] -> Pull request authors can give upstream repository maintainers, or people with push access to the upstream repository, permission to make commits to their pull request's compare branch in a user-owned fork. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). +> Pull request authors can give upstream repository maintainers, or people with push access to the upstream repository, permission to make commits to their pull request's compare branch in a user-owned fork. See [AUTOTITLE](/pull-requests/how-tos/work-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). ## Modifying an active pull request locally @@ -54,19 +54,19 @@ gh pr checkout PULL-REQUEST ## Modifying an inactive pull request locally -If a pull request’s author is unresponsive to requests or has deleted their fork, the changes proposed in that pull request can still be merged through a new pull request. However, if you want to make changes to a pull request and the author is not responding, you need to take additional steps to update the pull request. +If a pull request’s author is unresponsive to requests or has deleted their fork, the changes proposed in that pull request can still be merged through a new pull request. However, if you want to make changes, you need to take additional steps to update the pull request. -After a pull request is opened, {% data variables.product.github %} stores all of the changes remotely. In other words, commits in a pull request are available in a repository even before the pull request is merged. You can fetch an open pull request and recreate it as your own. +After a pull request is opened, {% data variables.product.github %} stores all of the changes remotely. Commits in a pull request are available in a repository even before the pull request is merged. You can fetch an open pull request and recreate it as your own. -Anyone can work with a previously opened pull request to continue working on it, test it, or open a new pull request with additional changes. However, only collaborators with push access can merge pull requests. +Anyone can work with a previously opened pull request to continue working on it, test it, or open a new pull request with additional changes. -{% data reusables.repositories.sidebar-issue-pr %} -1. In the "Pull Requests" list, click the pull request you want to merge. +{% data reusables.repositories.sidebar-pr %} +1. In the **Pull Requests** list, click the pull request you want to merge. 1. Find the ID number of the inactive pull request. This is the sequence of digits right after the pull request's title. ![Screenshot of the title of a pull request. The pull request's ID number is outlined in dark orange.](/assets/images/help/pull_requests/pull-request-id-number.png) -{% data reusables.command_line.open_the_multi_os_terminal %} +1. Open your terminal or Git Bash. 1. Fetch the reference to the pull request based on its ID number. This creates a new branch. Use the pull request ID and the name of the local branch you want to create in the command. ```shell @@ -94,7 +94,7 @@ Anyone can work with a previously opened pull request to continue working on it, > * [new branch] BRANCH_NAME -> BRANCH_NAME ``` -1. [Create a new pull request](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) with your new branch. +1. Create a new pull request with your new branch. ## Error: Failed to push some refs diff --git a/content/pull-requests/how-tos/review-pull-requests/commenting-on-a-pull-request.md b/content/pull-requests/how-tos/review-pull-requests/commenting-on-a-pull-request.md index 9ac177ef5446..399cbf736b63 100644 --- a/content/pull-requests/how-tos/review-pull-requests/commenting-on-a-pull-request.md +++ b/content/pull-requests/how-tos/review-pull-requests/commenting-on-a-pull-request.md @@ -9,7 +9,7 @@ redirect_from: - /github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request -intro: After you open a pull request in a repository, collaborators or team members can comment on the comparison of files between the two specified branches, or leave general comments on the project as a whole. +intro: Leave comments on pull requests in {% data variables.product.github %}, including general feedback, line-specific suggestions, and file-level discussions to enhance collaboration and code reviews. versions: fpt: '*' ghes: '*' @@ -23,9 +23,9 @@ contentType: how-tos You can comment on a pull request's **Conversation** tab to leave general comments, questions, or praise. You can also suggest changes that the pull request author can apply directly from your comment. -You can also comment on specific files or sections of a file in a pull request's **Files changed** tab as individual line or file comments, or as part of a pull request review. Adding line or file comments is a great way to discuss questions about implementation or give feedback to the author. For more information about pull request reviews, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews). +You can also comment on specific files or sections of a file in a pull request's **Files changed** tab as individual line or file comments, or as part of a pull request review. Adding line or file comments is a great way to discuss questions about implementation or give feedback to the author. See [AUTOTITLE](/pull-requests/reference/pull-request-reviews). -For more information on adding line or file comments to a pull request review, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request). +See [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request). > [!NOTE] > If you reply to a pull request via email, your comment will be added on the **Conversation** tab and will not be part of a pull request review. @@ -54,7 +54,9 @@ To reply to an existing line or file comment, navigate to the comment on either When you're finished, click **Finish your review**, leave a summary of your review, and click **Submit review**. -Anyone watching the pull request or repository will receive a notification of your comments. Batching your comments avoids sending multiple notifications. {% ifversion copilot %}If you are commenting on a pull request created by {% data variables.product.prodname_copilot_short %}, batching your comments prevents {% data variables.product.prodname_copilot_short %} from starting to work on individual comments before you have completed your review. See [AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/start-copilot-sessions).{% endif %} +Anyone watching the pull request or repository will receive a notification of your comments. Batching your comments avoids sending multiple notifications. + +{% ifversion fpt or ghec %} If you are commenting on a pull request created by {% data variables.product.prodname_copilot_short %}, batching your comments prevents {% data variables.product.prodname_copilot_short %} from starting to work on individual comments before you have completed your review. See [AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/start-copilot-sessions).{% endif %} ### Resolving conversations @@ -64,7 +66,7 @@ To indicate that a conversation on the **Files changed** tab is complete, click The entire conversation will collapse and be marked as resolved. This makes it easier to find conversations that still need to be addressed. -If the suggestion in a comment is out of your pull request's scope, you can open a new issue that tracks the feedback and links back to the original comment. For more information, see [AUTOTITLE](/issues/tracking-your-work-with-issues/creating-an-issue#creating-an-issue-from-a-comment). +If the suggestion in a comment is out of your pull request's scope, you can open a new issue that tracks the feedback and links back to the original comment. See [AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/creating-an-issue#creating-an-issue-from-a-comment). #### Discovering and navigating conversations @@ -77,5 +79,4 @@ In this view, you can see which conversations are unresolved, resolved, and outd ## Further reading * [AUTOTITLE](/get-started/writing-on-github) -{% ifversion fpt or ghec %}- [AUTOTITLE](/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam) -{% endif %} +{% ifversion fpt or ghec %}* [AUTOTITLE](/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam){% endif %} diff --git a/content/pull-requests/how-tos/review-pull-requests/dismissing-a-pull-request-review.md b/content/pull-requests/how-tos/review-pull-requests/dismissing-a-pull-request-review.md index d7c925c2c585..8ed8df8f92c2 100644 --- a/content/pull-requests/how-tos/review-pull-requests/dismissing-a-pull-request-review.md +++ b/content/pull-requests/how-tos/review-pull-requests/dismissing-a-pull-request-review.md @@ -1,6 +1,6 @@ --- title: Dismissing a pull request review -intro: If your repository requires reviews, you can dismiss pull request reviews that are no longer valid or are unable to be approved by the reviewer. +intro: Dismiss outdated or unapproved pull request reviews and update their status with a required comment. redirect_from: - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/dismissing-a-pull-request-review - /articles/dismissing-a-pull-request-review @@ -35,6 +35,6 @@ Dismissing a review changes the status of the review to a review comment. When y ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request) +* [AUTOTITLE](/pull-requests/reference/pull-request-reviews) +* [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request) * [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-pull-request-reviews-before-merging) diff --git a/content/pull-requests/how-tos/review-pull-requests/filtering-files-in-a-pull-request.md b/content/pull-requests/how-tos/review-pull-requests/filtering-files-in-a-pull-request.md deleted file mode 100644 index 621cf92c1e9a..000000000000 --- a/content/pull-requests/how-tos/review-pull-requests/filtering-files-in-a-pull-request.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Filtering files in a pull request -intro: To help you quickly review changes in a large pull request, you can filter changed files or use the file tree to navigate between files. -redirect_from: - - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request - - /articles/filtering-files-in-a-pull-request-by-file-type - - /articles/filtering-files-in-a-pull-request - - /github/collaborating-with-issues-and-pull-requests/filtering-files-in-a-pull-request - - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request - - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request -versions: - fpt: '*' - ghes: '*' - ghec: '*' -shortTitle: Filter files -category: - - Review pull requests -contentType: how-tos ---- -You can filter files in a pull request by file extension type, such as `.html` or `.js`, lack of an extension, code ownership, or dotfiles. You can also use the file tree to filter by file path, navigate between files, or see a high-level view of the changed files. - -## Using the file filter dropdown - -> [!TIP] -> To simplify your pull request diff view, you can also temporarily hide deleted files or files you have already viewed in the pull request diff from the file filter drop-down menu. - -{% data reusables.repositories.sidebar-pr %} -1. In the list of pull requests, click the pull request you'd like to filter. -{% data reusables.repositories.changed-files %} -1. Use the **File filter** dropdown menu, then select, deselect, or click the filters you want. - - ![Screenshot of the view options for a pull request. The file filter option is outlined in dark orange.](/assets/images/help/pull_requests/file-filter-option.png) - -1. Optionally, to clear the filter selection, under the **Files changed** tab, click **Clear filters**. - - ![Screenshot of the view options for a pull request. The "Clear filters" option is outlined in dark orange.](/assets/images/help/pull_requests/clear-file-filter.png) - -## Using the file tree - -{% data reusables.repositories.sidebar-pr %} -1. In the list of pull requests, click the pull request you'd like to filter. -{% data reusables.repositories.changed-files %} - -1. If the file tree is hidden, click {% octicon "sidebar-collapse" aria-label="The sidebar collapse icon" %} to display it. Then, click a file in the file tree to view the corresponding file diff. - - > [!NOTE] - > The file tree will not display if your screen width is too narrow or if the pull request only includes one file. - - ![Screenshot of the "Files changed" tab of a pull request. In the left sidebar, the file tree is outlined in dark orange.](/assets/images/help/repository/file-tree.png) -1. To filter by file path, enter part or all of the file path in the **Filter changed files** search box. Alternatively, use the **File filter** dropdown menu. For more information, see [Using the file filter dropdown](#using-the-file-filter-dropdown). - -## Further reading - -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/finding-changed-methods-and-functions-in-a-pull-request) diff --git a/content/pull-requests/how-tos/review-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md b/content/pull-requests/how-tos/review-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md deleted file mode 100644 index 86cfde8052c0..000000000000 --- a/content/pull-requests/how-tos/review-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Finding changed methods and functions in a pull request -intro: You can quickly find proposed changes to a method or function in a pull request in *.go*, *.js*, *.ts*, *.py*, *.php*, and *.rb* files. -redirect_from: - - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/finding-changed-methods-and-functions-in-a-pull-request - - /articles/finding-changed-methods-and-functions-in-a-pull-request - - /github/collaborating-with-issues-and-pull-requests/finding-changed-methods-and-functions-in-a-pull-request - - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/finding-changed-methods-and-functions-in-a-pull-request - - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/finding-changed-methods-and-functions-in-a-pull-request -versions: - fpt: '*' - ghes: '*' - ghec: '*' -shortTitle: Methods & functions -category: - - Review pull requests -contentType: how-tos ---- -Anyone with read access to a repository can see a summary list of the function and method changes in certain files of a pull request. - -The summary list of methods and functions is created from the following supported file types: -* Go -* JavaScript (includes TypeScript, Flow, and other types of JavaScript) -* PHP -* Python -* Ruby - -{% data reusables.repositories.sidebar-pr %} -1. In the list of pull requests, click the pull request where you'd like to find the changed functions and methods. -{% data reusables.repositories.changed-files %} -1. To see a summary list of the changed functions and methods, click **Jump to {% octicon "triangle-down" aria-hidden="true" aria-label="triangle-down" %}**. - - ![Screenshot of the "Files changed" tab for a pull request. The "Jump to" option is outlined in dark orange.](/assets/images/help/pull_requests/jump-to-menu.png) - -1. Select the changed function or method from the drop-down menu. You can also enter the name of the function or method to filter results. - - > [!NOTE] - > If you don't see the functions or methods you expected, confirm that your code compiles and doesn't contain errors. Only functions and methods changed in this pull request and found in _.go_, _.js_, _.ts_, _.py_, _.php_, and _.rb_ files appear in the drop-down menu. - -1. You'll go to the first line of the function or method you selected. - -## Further reading - -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request) diff --git a/content/pull-requests/how-tos/review-pull-requests/incorporating-feedback-in-your-pull-request.md b/content/pull-requests/how-tos/review-pull-requests/incorporating-feedback-in-your-pull-request.md index 165d3f723b67..2ec8f7488301 100644 --- a/content/pull-requests/how-tos/review-pull-requests/incorporating-feedback-in-your-pull-request.md +++ b/content/pull-requests/how-tos/review-pull-requests/incorporating-feedback-in-your-pull-request.md @@ -1,6 +1,6 @@ --- title: Incorporating feedback in your pull request -intro: When reviewers suggest changes in a pull request, you can automatically incorporate the changes into the pull request or open an issue to track out-of-scope suggestions. +intro: Apply suggested changes directly to a pull request, batch multiple suggestions into a single commit, or open an issue to track out-of-scope feedback. redirect_from: - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request - /articles/incorporating-feedback-in-your-pull-request @@ -20,11 +20,11 @@ contentType: how-tos Other people can suggest specific changes to your pull request. You can apply these suggested changes directly in a pull request if you have write access to the repository. -If the pull request was created from a fork and the author allowed edits from maintainers, you can also apply suggested changes if you have write access to the upstream repository. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request) and [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). +If the pull request was created from a fork and the author allowed edits from maintainers, you can also apply suggested changes if you have write access to the upstream repository. See [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/commenting-on-a-pull-request) and [AUTOTITLE](/pull-requests/how-tos/work-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). To quickly incorporate more than one suggested change into a single commit, you can also apply suggested changes as a batch. Applying one suggested change or a batch of suggested changes creates a single commit on the compare branch of the pull request. -Each person who suggested a change included in the commit will be a co-author of the commit. The person who applies the suggested changes will be a co-author and the committer of the commit. For more information about the term committer in Git, see [Git Basics - Viewing the Commit History](https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History) from the _Pro Git_ book site. +Each person who suggested a change included in the commit will be a co-author of the commit. The person who applies the suggested changes will be a co-author and the committer of the commit. See [Git Basics - Viewing the Commit History](https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History) from the _Pro Git_ book site. {% data reusables.repositories.sidebar-pr %} 1. In the list of pull requests, click the pull request where you want to apply a suggested change. @@ -47,12 +47,12 @@ To request a fresh review from a reviewer, in the sidebar of the **Conversation* ## Opening an issue for an out-of-scope suggestion -If someone suggests changes to your pull request and the changes are out of the pull request's scope, you can open a new issue to track the feedback. For more information, see [AUTOTITLE](/issues/tracking-your-work-with-issues/creating-an-issue). +If someone suggests changes to your pull request and the changes are out of the pull request's scope, you can open a new issue to track the feedback. See [AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/creating-an-issue). ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review) -* [AUTOTITLE](/issues/tracking-your-work-with-issues/creating-an-issue) +* [AUTOTITLE](/pull-requests/reference/pull-request-reviews) +* [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request) +* [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/commenting-on-a-pull-request) +* [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/requesting-a-pull-request-review) +* [AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/creating-an-issue) diff --git a/content/pull-requests/how-tos/review-pull-requests/index.md b/content/pull-requests/how-tos/review-pull-requests/index.md index 5159c13a3a53..09f138cbe091 100644 --- a/content/pull-requests/how-tos/review-pull-requests/index.md +++ b/content/pull-requests/how-tos/review-pull-requests/index.md @@ -7,21 +7,19 @@ redirect_from: - /articles/reviewing-changes-in-pull-requests - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests shortTitle: Review pull requests -intro: Review proposed changes, comment, approve, and manage reviews on pull requests. +intro: 'Review, comment on, approve, and manage pull requests effectively, including filtering files, reviewing dependency changes, and incorporating feedback.' versions: fpt: '*' ghes: '*' ghec: '*' children: - - /finding-changed-methods-and-functions-in-a-pull-request - - /filtering-files-in-a-pull-request + - /checking-out-pull-requests-locally - /reviewing-proposed-changes-in-a-pull-request - /reviewing-dependency-changes-in-a-pull-request - - /checking-out-pull-requests-locally - - /viewing-a-pull-request-review - /commenting-on-a-pull-request - - /dismissing-a-pull-request-review - /approving-a-pull-request-with-required-reviews + - /viewing-a-pull-request-review + - /dismissing-a-pull-request-review - /incorporating-feedback-in-your-pull-request contentType: how-tos --- diff --git a/content/pull-requests/how-tos/review-pull-requests/reviewing-dependency-changes-in-a-pull-request.md b/content/pull-requests/how-tos/review-pull-requests/reviewing-dependency-changes-in-a-pull-request.md index fdb7cb38fa3d..1519dbb602a5 100644 --- a/content/pull-requests/how-tos/review-pull-requests/reviewing-dependency-changes-in-a-pull-request.md +++ b/content/pull-requests/how-tos/review-pull-requests/reviewing-dependency-changes-in-a-pull-request.md @@ -1,6 +1,6 @@ --- title: Reviewing dependency changes in a pull request -intro: If a pull request contains changes to dependencies, you can view a summary of what has changed and whether there are known vulnerabilities in any of the dependencies. +intro: Review dependency changes in pull requests to identify added, updated, or removed dependencies and detect vulnerabilities before they reach production. product: '{% data reusables.gated-features.dependency-review %}' versions: fpt: '*' @@ -22,15 +22,15 @@ category: {% data reusables.dependency-review.feature-overview %} -{% ifversion ghec %}Before you can use dependency review, you must enable the dependency graph. For more information, see [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository#enabling-and-disabling-the-dependency-graph).{% endif %} +{% ifversion ghec %}Before you can use dependency review, you must enable the dependency graph. See [AUTOTITLE](/code-security/how-tos/secure-your-supply-chain/secure-your-dependencies/explore-dependencies#enabling-and-disabling-the-dependency-graph).{% endif %} -{% ifversion ghes %}Before you can use dependency review, you must enable the dependency graph and connect {% data variables.location.product_location %} to {% data variables.product.prodname_dotcom_the_website %}. For more information, see [AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise).{% endif %} +{% ifversion ghes %}Before you can use dependency review, you must enable the dependency graph and connect {% data variables.location.product_location %} to {% data variables.product.prodname_dotcom_the_website %}. See [AUTOTITLE](/admin/configuring-settings/configuring-github-connect/enabling-dependabot-for-your-enterprise).{% endif %} -Dependency review helps you find vulnerable dependencies before they reach production. For more information, see [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review). +Dependency review helps you find vulnerable dependencies before they reach production. See [AUTOTITLE](/code-security/concepts/supply-chain-security/dependency-review). You can use the {% data variables.dependency-review.action_name %} to help enforce dependency reviews on pull requests in your repository. {% data reusables.dependency-review.dependency-review-action-overview %} -You can configure the {% data variables.dependency-review.action_name %} to better suit your needs by specifying the type of dependency vulnerability you want to catch. For more information, see [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/configuring-the-dependency-review-action). +You can configure the {% data variables.dependency-review.action_name %} to better suit your needs by specifying the type of dependency vulnerability you want to catch. See [AUTOTITLE](/code-security/how-tos/secure-your-supply-chain/manage-your-dependency-security/configure-dependency-review-action). ## Reviewing dependencies in a pull request diff --git a/content/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request.md b/content/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request.md index 89f1764b2980..6405269f7422 100644 --- a/content/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request.md +++ b/content/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request.md @@ -1,12 +1,25 @@ --- title: Reviewing proposed changes in a pull request -intro: In a pull request, you can review and discuss commits, changed files, and the differences (or "diff") between the files in the base and compare branches. +intro: Review commits, file changes, and diffs in pull requests to provide feedback, approve changes, or request updates before merging. redirect_from: + - /pull-requests/how-tos/review-pull-requests/filtering-files-in-a-pull-request + - /pull-requests/how-tos/review-pull-requests/finding-changed-methods-and-functions-in-a-pull-request - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request - /articles/reviewing-proposed-changes-in-a-pull-request - /github/collaborating-with-issues-and-pull-requests/reviewing-proposed-changes-in-a-pull-request - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request + - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request + - /articles/filtering-files-in-a-pull-request-by-file-type + - /articles/filtering-files-in-a-pull-request + - /github/collaborating-with-issues-and-pull-requests/filtering-files-in-a-pull-request + - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request + - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request + - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/finding-changed-methods-and-functions-in-a-pull-request + - /articles/finding-changed-methods-and-functions-in-a-pull-request + - /github/collaborating-with-issues-and-pull-requests/finding-changed-methods-and-functions-in-a-pull-request + - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/finding-changed-methods-and-functions-in-a-pull-request + - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/finding-changed-methods-and-functions-in-a-pull-request versions: fpt: '*' ghes: '*' @@ -26,11 +39,7 @@ It's best to review changes in a pull request one file at a time: * The **progress bar** in the pull request header shows how many files you've viewed. * When you've finished, you can **approve** the pull request or **request changes** by submitting your review with a summary comment. -{% ifversion copilot %} - -If the pull request was raised by {% data variables.product.prodname_copilot %}, then {% data variables.product.prodname_copilot_short %} will respond to your comments when you submit them. {% data variables.product.prodname_copilot_short %} will push a new commit to the pull request with further changes. See [AUTOTITLE](/copilot/concepts/agents/cloud-agent/about-cloud-agent). - -{% endif %} +{% ifversion fpt or ghec %} If the pull request was raised by {% data variables.product.prodname_copilot %}, then {% data variables.product.prodname_copilot_short %} will respond to your comments when you submit them. {% data variables.product.prodname_copilot_short %} will push a new commit to the pull request with further changes. See [AUTOTITLE](/copilot/concepts/agents/cloud-agent/about-cloud-agent).{% endif %} {% webui %} @@ -49,8 +58,6 @@ In the pull request sidebar, you can find valuable context, including: Use this information to frame your review and check if the goals of the pull request align with the original intent. -{% ifversion copilot %} - ### Using {% data variables.copilot.copilot_chat_short %} to understand the rationale You can ask {% data variables.copilot.copilot_chat_short %} for help understanding the pull request’s intent or clarifying any part of the change. @@ -68,8 +75,6 @@ You can ask {% data variables.copilot.copilot_chat_short %} for help understandi {% data variables.copilot.copilot_chat_short %} can help you clarify the bigger picture before you start line-level review. -{% endif %} - ## Starting a review {% data reusables.repositories.sidebar-pr %} @@ -80,10 +85,10 @@ To change the format of the diff view in this tab, click {% octicon "gear" aria- ![Screenshot of the "Files changed" tab for a pull request. The "Diff view" menu is outlined in dark orange.](/assets/images/help/pull_requests/diff-settings-menu.png) You can also hide whitespace differences. The choice you make only applies to this pull request and will be remembered the next time you visit this page. -1. Optionally, filter the files to show only the files you want to review or use the file tree to navigate to a specific file. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request). -{%- ifversion ghec %} -1. Optionally, if you have access to {% data variables.copilot.copilot_enterprise %}, you can ask {% data variables.product.prodname_copilot_short %} about the changes in a file in a pull request by clicking {% octicon "kebab-horizontal" aria-label="Show options" %} at the top right of the file, clicking **Ask {% data variables.product.prodname_copilot_short %} about this diff**, then typing a request such as "Explain these changes." For more information, see [AUTOTITLE](/enterprise-cloud@latest/copilot/github-copilot-chat/copilot-chat-in-github/using-github-copilot-chat-in-githubcom#asking-questions-about-a-specific-pull-request). -{%- endif %} +1. Optionally, filter the files to show only the files you want to review or use the file tree to navigate to a specific file. +{% ifversion ghec %} +1. Optionally, if you have access to {% data variables.copilot.copilot_enterprise %}, you can ask {% data variables.product.prodname_copilot_short %} about the changes in a file in a pull request by clicking {% octicon "kebab-horizontal" aria-label="Show options" %} at the top right of the file, clicking **Ask {% data variables.product.prodname_copilot_short %} about this diff**, then typing a request such as "Explain these changes." See [AUTOTITLE](/enterprise-cloud@latest/copilot/how-tos/copilot-on-github/chat-with-copilot/chat-in-github#asking-questions-about-a-specific-pull-request). +{% endif %} {% data reusables.repositories.start-line-comment %} {% data reusables.repositories.multiple-lines-comment %} {% data reusables.repositories.type-line-comment %} @@ -104,7 +109,7 @@ Before you submit your review, your line comments are _pending_ and only visible You can use [{% data variables.product.prodname_github_codespaces %}](/codespaces/quickstart) to test, run, and review pull requests. -1. Open the pull request in a codespace, as described in [AUTOTITLE](/codespaces/developing-in-codespaces/using-github-codespaces-for-pull-requests#opening-a-pull-request-in-codespaces). +1. Open the pull request in a codespace, as described in [AUTOTITLE](/codespaces/developing-in-a-codespace/using-github-codespaces-for-pull-requests#opening-a-pull-request-in-codespaces). 1. In the Activity Bar, click the **{% data variables.product.github %} Pull Request** view. This view only appears when you open a pull request in a codespace. ![Screenshot of the {% data variables.product.prodname_vscode_shortname %} Activity Bar. The mouse pointer is hovering over an icon displaying the tooltip "{% data variables.product.prodname_dotcom %} Pull Request."](/assets/images/help/codespaces/github-pr-view.png) @@ -123,13 +128,14 @@ You can use [{% data variables.product.prodname_github_codespaces %}](/codespace ![Screenshot of the side bar showing the dropdown options "Comment and Submit," "Approve and Submit," and "Request Changes and Submit."](/assets/images/help/codespaces/submit-review.png) -For more information on reviewing pull requests in {% data variables.product.prodname_github_codespaces %}, see [AUTOTITLE](/codespaces/developing-in-codespaces/using-github-codespaces-for-pull-requests). +For more information on reviewing pull requests in {% data variables.product.prodname_github_codespaces %}, see [AUTOTITLE](/codespaces/developing-in-a-codespace/using-github-codespaces-for-pull-requests). {% endcodespaces %} {% endif %} {% webui %} -{% ifversion copilot %} + +{% ifversion fpt or ghec %} ## Understanding changes in a pull request @@ -156,7 +162,7 @@ For more information on reviewing pull requests in {% data variables.product.pro ## Reviewing dependency changes -If the pull request contains changes to dependencies, you can use the dependency review for a manifest or lock file to see what has changed. You can also check whether the changes introduce security vulnerabilities. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request). +If the pull request contains changes to dependencies, you can use the dependency review for a manifest or lock file to see what has changed. You can also check whether the changes introduce security vulnerabilities. See [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/reviewing-dependency-changes-in-a-pull-request). {% data reusables.repositories.changed-files %} @@ -196,4 +202,4 @@ After you've finished reviewing all the files you want in the pull request, subm ## Further reading * [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-pull-request-reviews-before-merging) -* [AUTOTITLE](/issues/tracking-your-work-with-issues/filtering-and-searching-issues-and-pull-requests) +* [AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/filtering-and-searching-issues-and-pull-requests) diff --git a/content/pull-requests/how-tos/review-pull-requests/viewing-a-pull-request-review.md b/content/pull-requests/how-tos/review-pull-requests/viewing-a-pull-request-review.md index d5f96566d693..10ca5b6ae5bd 100644 --- a/content/pull-requests/how-tos/review-pull-requests/viewing-a-pull-request-review.md +++ b/content/pull-requests/how-tos/review-pull-requests/viewing-a-pull-request-review.md @@ -1,6 +1,6 @@ --- title: Viewing a pull request review -intro: You can view all of the comments made in a single pull request review. +intro: View and navigate all comments from a single pull request review to understand changes and feedback. redirect_from: - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/viewing-a-pull-request-review - /articles/viewing-a-pull-request-review @@ -28,6 +28,6 @@ When you view a full review, you see the same version of the pull request as the ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request) -* [AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests) +* [AUTOTITLE](/pull-requests/reference/pull-request-reviews) +* [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request) +* [AUTOTITLE](/code-security/how-tos/manage-security-alerts/manage-code-scanning-alerts/triage-alerts-in-pull-requests) diff --git a/content/pull-requests/how-tos/work-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md b/content/pull-requests/how-tos/work-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md index 5d93d5065e29..cfa6d82939c3 100644 --- a/content/pull-requests/how-tos/work-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md +++ b/content/pull-requests/how-tos/work-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md @@ -1,6 +1,6 @@ --- title: Allowing changes to a pull request branch created from a fork -intro: For greater collaboration, you can allow commits on branches you've created from forks in your personal account. +intro: Enable collaboration by allowing repository maintainers to commit changes to pull request branches created from forks in your personal account. redirect_from: - /github/collaborating-with-issues-and-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork - /articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork @@ -17,9 +17,9 @@ category: - Work with forks contentType: how-tos --- -When someone creates a pull request from their fork, they usually decide whether other people can commit to the pull request's compare branch. For greater collaboration, the author can give maintainers of the upstream repository—that is, anyone with push access to the upstream repository—permission to commit to the compare branch. To learn more about upstream repositories, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks). +When someone creates a pull request from their fork, they usually decide whether other people can commit to the pull request's compare branch. For greater collaboration, the author can give maintainers of the upstream repository—that is, anyone with push access to the upstream repository—permission to commit to the compare branch. See [AUTOTITLE](/pull-requests/reference/forks). -Pull request authors can set these permissions when they create a pull request from a fork in a personal account. They can also update an existing pull request to let repository maintainers commit to the branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork). +Pull request authors can set these permissions when they create a pull request from a fork in a personal account. They can also update an existing pull request to let repository maintainers commit to the branch. See [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/creating-a-pull-request-from-a-fork). ## Enabling repository maintainer permissions on existing pull requests @@ -35,4 +35,4 @@ Pull request authors can set these permissions when they create a pull request f ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork) +* [AUTOTITLE](/pull-requests/how-tos/commit-changes/committing-changes-to-a-pull-request-branch-created-from-a-fork) diff --git a/content/pull-requests/how-tos/work-with-forks/configuring-a-remote-repository-for-a-fork.md b/content/pull-requests/how-tos/work-with-forks/configuring-a-remote-repository-for-a-fork.md index bb6e1afef5dc..ee81cc112c3f 100644 --- a/content/pull-requests/how-tos/work-with-forks/configuring-a-remote-repository-for-a-fork.md +++ b/content/pull-requests/how-tos/work-with-forks/configuring-a-remote-repository-for-a-fork.md @@ -1,6 +1,6 @@ --- title: Configuring a remote repository for a fork -intro: You must configure a remote that points to the upstream repository in Git to [sync changes you make in a fork](/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork) with the original repository. This also allows you to sync changes made in the original repository with the fork. +intro: 'Set up a remote pointing to the upstream repository in Git to sync changes between your fork and the original repository.' redirect_from: - /github/collaborating-with-issues-and-pull-requests/working-with-forks/configuring-a-remote-for-a-fork - /articles/configuring-a-remote-for-a-fork @@ -17,7 +17,7 @@ category: - Work with forks contentType: how-tos --- -{% data reusables.command_line.open_the_multi_os_terminal %} +1. Open your terminal or Git Bash. 1. List the remotes currently configured for your fork. ```shell diff --git a/content/pull-requests/how-tos/work-with-forks/detaching-a-fork.md b/content/pull-requests/how-tos/work-with-forks/detaching-a-fork.md index c6204456db9b..04037a69358f 100644 --- a/content/pull-requests/how-tos/work-with-forks/detaching-a-fork.md +++ b/content/pull-requests/how-tos/work-with-forks/detaching-a-fork.md @@ -1,11 +1,12 @@ --- title: Detaching a fork -intro: You can disconnect a repository from its fork network by leaving the network or manually deleting the fork and recreating it without any connection to the original. +intro: Disconnect a repository from its fork network by leaving the network or creating a standalone repository through manual steps. versions: fpt: '*' ghes: '*' ghec: '*' permissions: People with admin access for a forked repository can delete the forked repository. +shortTitle: Detach a fork category: - Work with forks redirect_from: @@ -19,7 +20,7 @@ To turn your fork into a standalone repository, you can leave the fork network. > [!WARNING] > * The new repository will not retain any of its issues, pull requests, wikis, stars, watchers, comments, child forks, or other metadata that may currently be associated with your current fork. -> * All git commit metadata will be preserved. Commits may become eligible to be counted as contributions if they meet certain criteria. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile#your-local-git-commit-email-isnt-connected-to-your-account). +> * All git commit metadata will be preserved. Commits may become eligible to be counted as contributions if they meet certain criteria. See [AUTOTITLE](/account-and-profile/how-tos/contribution-settings/troubleshooting-missing-contributions#your-local-git-commit-email-isnt-connected-to-your-account). > * Leaving the fork network is **permanent** and the new repository **cannot** be reconnected to the fork network. {% ifversion ghes %} @@ -49,19 +50,19 @@ While the fork is being detached, some operations will be briefly unavailable. T To turn your fork into a standalone repository, you can clone the fork and use the clone to create a new repository. Then, delete the fork to remove the connection to the original network. -{% data reusables.command_line.open_the_multi_os_terminal %} +1. Open your terminal or Git Bash. 1. Create a bare clone of the fork. ```shell git clone --bare https://{% data variables.product.product_url %}/EXAMPLE-USER/FORK.git ``` -1. Delete the forked repository. For more information, see [AUTOTITLE](/repositories/creating-and-managing-repositories/deleting-a-repository).

+1. Delete the forked repository. See [AUTOTITLE](/repositories/creating-and-managing-repositories/deleting-a-repository).

> [!WARNING] > Deleting a fork will **permanently** delete any associated pull requests and configurations. This action **cannot** be undone. -1. Create a new repository with the same name in the same location. For more information, see [AUTOTITLE](/repositories/creating-and-managing-repositories/creating-a-new-repository). +1. Create a new repository with the same name in the same location. See [AUTOTITLE](/repositories/creating-and-managing-repositories/creating-a-new-repository). 1. Mirror-push the repository back to the same remote URL. ```shell @@ -74,4 +75,4 @@ To turn your fork into a standalone repository, you can clone the fork and use t rm -rf FORK.git ``` -For more information, see [our support page](https://support.github.com/request/fork) on forks. +See [our support page](https://support.github.com/request/fork) on forks. diff --git a/content/pull-requests/how-tos/work-with-forks/fork-a-repo.md b/content/pull-requests/how-tos/work-with-forks/fork-a-repo.md index abb95513f84a..486ed10f5a0d 100644 --- a/content/pull-requests/how-tos/work-with-forks/fork-a-repo.md +++ b/content/pull-requests/how-tos/work-with-forks/fork-a-repo.md @@ -9,23 +9,24 @@ redirect_from: - /github/getting-started-with-github/quickstart/fork-a-repo - /get-started/quickstart/fork-a-repo - /pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo -intro: Create a fork of a repository so you can make changes without affecting the upstream repository. +intro: Fork a repository on {% data variables.product.github %} to propose changes, collaborate on projects, and manage your own copy of the codebase. permissions: '{% data reusables.enterprise-accounts.emu-permission-fork %}' versions: fpt: '*' ghes: '*' ghec: '*' +shortTitle: Fork a repository category: - Work with forks contentType: how-tos --- ## About forks -Forking a repository lets you propose changes to a project without affecting the upstream repository. For more information about what forks are and when to use them, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks). +Forking a repository lets you propose changes to a project without affecting the upstream repository. See [AUTOTITLE](/pull-requests/get-started/about-forks). ## Prerequisites -If you haven't already, set up Git and authentication with {% data variables.location.product_location %} from Git. For more information, see [AUTOTITLE](/get-started/git-basics/set-up-git). +If you haven't already, set up Git and authentication with {% data variables.location.product_location %} from Git. See [AUTOTITLE](/get-started/git-basics/set-up-git). ## Forking a repository @@ -46,7 +47,7 @@ You might fork a project to propose changes to the upstream repository. In this 1. Click **Create fork**. > [!NOTE] -> If you want to copy additional branches from the upstream repository, you can do so from the **Branches** page. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository). +> If you want to copy additional branches from the upstream repository, you can do so from the **Branches** page. See [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/creating-and-deleting-branches-within-your-repository). {% endwebui %} @@ -70,7 +71,7 @@ gh repo fork REPOSITORY --org "octo-org" {% desktop %} -You can fork a repository on {% data variables.product.prodname_dotcom_the_website %} or in {% data variables.product.prodname_desktop %}. For information about forking on {% data variables.product.prodname_dotcom_the_website %}, see [the web browser version of this article](/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo?tool=webui). +You can fork a repository on {% data variables.product.prodname_dotcom_the_website %} or in {% data variables.product.prodname_desktop %}. For information about forking on {% data variables.product.prodname_dotcom_the_website %}, see [the web browser version of this article](/pull-requests/how-tos/work-with-forks/fork-a-repo?tool=webui). {% data reusables.desktop.forking-a-repo %} @@ -84,7 +85,7 @@ You now have a fork of the Spoon-Knife repository, but you do not have the files 1. On {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %}{% else %}{% data variables.location.product_location %}{% endif %}, navigate to **your fork** of the Spoon-Knife repository. {% data reusables.repositories.copy-clone-url %} -{% data reusables.command_line.open_the_multi_os_terminal %} +1. Open your terminal or Git Bash. {% data reusables.command_line.change-current-directory-clone %} 1. Type `git clone`, then paste the URL you copied earlier. It will look like this, with your {% data variables.product.github %} username instead of `YOUR-USERNAME`: @@ -129,7 +130,7 @@ When you fork a project to propose changes to the upstream repository, you can c 1. On {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %}{% else %}{% data variables.location.product_location %}{% endif %}, navigate to the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. {% data reusables.repositories.copy-clone-url %} -{% data reusables.command_line.open_the_multi_os_terminal %} +1. Open your terminal or Git Bash. 1. Change to the directory for the fork you cloned. * To go to your home directory, type just `cd` with no other text. * To list the files and folders in your current directory, type `ls`. @@ -159,7 +160,7 @@ When you fork a project to propose changes to the upstream repository, you can c > upstream https://{% data variables.product.product_url %}/ORIGINAL-OWNER/ORIGINAL-REPOSITORY.git (push) ``` -You can now keep your fork synced with the upstream repository with a few Git commands. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork). +You can now keep your fork synced with the upstream repository with a few Git commands. See [AUTOTITLE](/pull-requests/how-tos/work-with-forks/syncing-a-fork). {% endwebui %} @@ -186,13 +187,15 @@ gh repo fork REPOSITORY --remote-name "main-remote-repo" You can make any changes to a fork, including: * **Creating branches:** [_Branches_](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository) allow you to build new features or test out ideas without putting your main project at risk. -* **Opening pull requests:** If you want to contribute back to the upstream repository, you can submit a pull request to ask the original author to pull your fork into their repository. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork). +* **Opening pull requests:** If you want to contribute back to the upstream repository, you can submit a pull request to ask the original author to pull your fork into their repository. See [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/creating-a-pull-request-from-a-fork). ## Find another repository to fork -Fork a repository to start contributing to a project. {% data reusables.repositories.you-can-fork %} For more information about when you can fork a repository, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks). +Fork a repository to start contributing to a project. {% data reusables.repositories.you-can-fork %} -{% ifversion fpt or ghec %}You can browse [Explore {% data variables.product.prodname_dotcom %}](https://github.com/explore) to find projects and start contributing to open source repositories. For more information, see [AUTOTITLE](/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github). +For more information about when you can fork a repository, see [AUTOTITLE](/pull-requests/reference/forks). + +{% ifversion fpt or ghec %}You can browse [Explore {% data variables.product.prodname_dotcom %}](https://github.com/explore) to find projects and start contributing to open source repositories. See [AUTOTITLE](/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github). {% endif %} @@ -200,7 +203,7 @@ Fork a repository to start contributing to a project. {% data reusables.reposito You have now forked a repository, practiced cloning your fork, and configured an upstream repository. -* For more information about cloning the fork and syncing the changes in a forked repository from your computer, see [AUTOTITLE](/get-started/git-basics/set-up-git). +* For more information about using Git on the command line to clone and sync changes, see [AUTOTITLE](/get-started/git-basics/set-up-git). * You can also create a new repository to store your projects and share the code on {% data variables.product.prodname_dotcom %}. {% data reusables.getting-started.create-a-repository %} diff --git a/content/pull-requests/how-tos/work-with-forks/index.md b/content/pull-requests/how-tos/work-with-forks/index.md index f3faed60ab14..ee6d1c6c9bdd 100644 --- a/content/pull-requests/how-tos/work-with-forks/index.md +++ b/content/pull-requests/how-tos/work-with-forks/index.md @@ -6,17 +6,17 @@ redirect_from: - /articles/working-with-forks - /github/collaborating-with-pull-requests/working-with-forks shortTitle: Work with forks -intro: Fork repositories, sync forks, and manage changes to pull request branches created from forks. +intro: 'Fork repositories, sync changes, and manage pull request branches effectively using forks.' versions: fpt: '*' ghes: '*' ghec: '*' children: - /fork-a-repo - - /allowing-changes-to-a-pull-request-branch-created-from-a-fork - /configuring-a-remote-repository-for-a-fork - - /detaching-a-fork - /syncing-a-fork + - /allowing-changes-to-a-pull-request-branch-created-from-a-fork + - /detaching-a-fork contentType: how-tos --- diff --git a/content/pull-requests/how-tos/work-with-forks/syncing-a-fork.md b/content/pull-requests/how-tos/work-with-forks/syncing-a-fork.md index ce1660be2778..75778488237a 100644 --- a/content/pull-requests/how-tos/work-with-forks/syncing-a-fork.md +++ b/content/pull-requests/how-tos/work-with-forks/syncing-a-fork.md @@ -1,6 +1,6 @@ --- title: Syncing a fork -intro: Sync a fork of a repository to keep it up-to-date with the upstream repository. +intro: Sync a forked repository with its upstream repository using the web interface, GitHub CLI, or command line. redirect_from: - /github/collaborating-with-issues-and-pull-requests/working-with-forks/syncing-a-fork - /articles/syncing-a-fork @@ -17,6 +17,7 @@ versions: ghes: '*' ghec: '*' permissions: People with write access for a forked repository can sync the fork to the upstream repository. +shortTitle: Sync a fork category: - Work with forks contentType: how-tos @@ -46,9 +47,9 @@ If the changes from the upstream repository cause conflicts, the {% data variabl ## Syncing a fork branch from the command line -Before you can sync your fork with an upstream repository, you must configure a remote that points to the upstream repository in Git. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/configuring-a-remote-repository-for-a-fork). +Before you can sync your fork with an upstream repository, you must configure a remote that points to the upstream repository in Git. See [AUTOTITLE](/pull-requests/how-tos/work-with-forks/configuring-a-remote-repository-for-a-fork). -{% data reusables.command_line.open_the_multi_os_terminal %} +1. Open your terminal or Git Bash. 1. Change the current working directory to your local project. 1. Fetch the branches and their respective commits from the upstream repository. Commits to `BRANCH-NAME` will be stored in the local branch `upstream/BRANCH-NAME`. @@ -82,7 +83,7 @@ Before you can sync your fork with an upstream repository, you must configure a > create mode 100644 README.md ``` - If your local branch didn't have any unique commits, Git will perform a fast-forward. For more information, see [Basic Branching and Merging](https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging) in the Git documentation. + If your local branch didn't have any unique commits, Git will perform a fast-forward. See [Basic Branching and Merging](https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging) in the Git documentation. ```shell $ git merge upstream/main @@ -92,7 +93,7 @@ Before you can sync your fork with an upstream repository, you must configure a > 1 file changed, 3 insertions(+), 2 deletions(-) ``` - If your local branch had unique commits, you may need to resolve conflicts. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts). + If your local branch had unique commits, you may need to resolve conflicts. See [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests). > [!TIP] > Syncing your fork only updates your local copy of the repository. To update your fork on {% data variables.location.product_location %}, you must [push your changes](/get-started/using-git/pushing-commits-to-a-remote-repository). diff --git a/content/pull-requests/index.md b/content/pull-requests/index.md index 506e1f3a92bb..bbcc15fe227f 100644 --- a/content/pull-requests/index.md +++ b/content/pull-requests/index.md @@ -9,21 +9,21 @@ redirect_from: - /categories/collaborating-on-projects-using-issues-and-pull-requests - /categories/collaborating-with-issues-and-pull-requests - /github/collaborating-with-pull-requests -intro: 'Learn how to use pull requests to suggest changes to a project, receive suggested changes to your own projects, and address issues in pull requests, such as merge conflicts.' +intro: 'Discover how to create, review, and merge pull requests, resolve merge conflicts, and collaborate effectively on {% data variables.product.github %} projects.' introLinks: - overview: /pull-requests/concepts/about-pull-requests + overview: /pull-requests/get-started/about-pull-requests layout: discovery-landing carousels: recommended: - - /pull-requests/concepts/about-pull-requests - - /pull-requests/concepts/about-branches + - /pull-requests/reference/pull-requests + - /pull-requests/reference/branches - /pull-requests/how-tos/create-pull-requests/creating-a-pull-request - /pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request - /pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request - /pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github - /pull-requests/how-tos/work-with-forks/fork-a-repo - /pull-requests/how-tos/work-with-forks/syncing-a-fork - - /pull-requests/concepts/about-commits + - /pull-requests/reference/commits includedCategories: - Create pull requests - Review pull requests @@ -36,6 +36,7 @@ versions: ghec: '*' ghes: '*' children: + - /get-started - /concepts - /how-tos - /reference diff --git a/content/pull-requests/concepts/about-branches.md b/content/pull-requests/reference/branches.md similarity index 56% rename from content/pull-requests/concepts/about-branches.md rename to content/pull-requests/reference/branches.md index 9154cae7f980..f1a401f16542 100644 --- a/content/pull-requests/concepts/about-branches.md +++ b/content/pull-requests/reference/branches.md @@ -1,7 +1,8 @@ --- -title: About branches -intro: Use a branch to isolate development work without affecting other branches in the repository. Each repository has one default branch, and can have multiple other branches. You can merge a branch into another branch using a pull request. +title: Branches +intro: Use branches in GitHub to isolate development work, manage default branches, and collaborate effectively using pull requests and branch protections. redirect_from: + - /pull-requests/concepts/about-branches - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches - /articles/working-with-protected-branches - /articles/about-branches @@ -19,7 +20,7 @@ versions: ghec: '*' category: - Create pull requests -contentType: concepts +contentType: reference --- ## About branches @@ -28,11 +29,11 @@ Branches let you develop features, fix bugs, or safely experiment with new ideas You always create a branch from an existing branch. Typically, you might create a new branch from the default branch of your repository. You can then work on this new branch in isolation from changes that other people are making to the repository. -A branch you create to build a feature is commonly called a feature branch or topic branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository). +A branch you create to build a feature is commonly called a feature branch or topic branch. See [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/creating-and-deleting-branches-within-your-repository). -You can also use a branch to publish a {% data variables.product.prodname_pages %} site. For more information, see [AUTOTITLE](/pages/getting-started-with-github-pages/about-github-pages). +You can also use a branch to publish a {% data variables.product.prodname_pages %} site. See [AUTOTITLE](/pages/getting-started-with-github-pages/what-is-github-pages). -You must have write access to a repository to create a branch, open a pull request, or delete and restore branches in a pull request. For more information, see [AUTOTITLE](/get-started/learning-about-github/access-permissions-on-github). +You must have write access to a repository to create a branch, open a pull request, or delete and restore branches in a pull request. See [AUTOTITLE](/get-started/learning-about-github/access-permissions-on-github). ## About the default branch @@ -44,55 +45,37 @@ By default, {% data variables.product.github %} names the default branch `main` {% data reusables.branches.set-default-branch %} -## Working with branches - -Branches are usually short-lived. After you finish work on a branch, you can open a pull request to discuss and merge the changes from the head branch into the base branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests). - -After a pull request has been merged or closed, the head branch is often no longer needed. Deleting unused branches keeps a repository easier to navigate. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/deleting-and-restoring-branches-in-a-pull-request). - -{% data reusables.pull_requests.retargeted-on-branch-deletion %} - -For example, if one pull request targets a feature branch and that feature branch is later merged and deleted, {% data variables.product.prodname_dotcom %} may update the remaining pull request so that it targets the merged branch's base branch instead. - ## Working with protected branches Protected branches help maintainers enforce rules on important branches. A protected branch can block force pushes or deletion, require status checks, require reviews, require code owner approval, or require signed commits before changes can merge. -These protections help teams keep important branches stable and make expectations clear before a pull request is merged. To see whether your pull request can be merged, check the merge box at the bottom of the pull request's **Conversation** tab. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). +These protections help teams keep important branches stable and make expectations clear before a pull request is merged. To see whether your pull request can be merged, check the merge box at the bottom of the pull request's **Conversation** tab. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). > [!NOTE] > If you're a repository administrator, you can merge pull requests on branches with branch protections enabled even if the pull request does not meet the requirements, unless branch protections have been set to "Include administrators." ## Comparing branches in pull requests -> [!NOTE] -> When you create your pull request, you can change the base branch that you're comparing your changes against. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request#changing-the-branch-range-and-destination-repository). +A pull request compares the proposed changes on the head branch with the base branch. When you create your pull request, you can change the base branch that you're comparing your changes against. The **Files changed** tab shows what would change if the pull request merged. -A pull request compares the proposed changes on the head branch with the base branch. The **Files changed** tab shows what would change if the pull request merged. - -![Screenshot of the tabs for a pull request. The "Files changed" tab is outlined in dark orange.](/assets/images/help/pull_requests/pull-request-tabs-changed-files.png) - -Diff views help reviewers understand the changes without reading every commit. You can view a unified diff, split diff, rich diff, or source diff; ignore whitespace changes; or filter files to focus on the most relevant changes. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request). +Diff views help reviewers understand the changes without reading every commit. You can view a unified diff, split diff, rich diff, or source diff; ignore whitespace changes; or filter files to focus on the most relevant changes. ![Screenshot of the "Files changed" tab for a pull request. The "Diff view" menu is outlined in dark orange.](/assets/images/help/pull_requests/diff-settings-menu.png) -Diffs may not display if a pull request exceeds repository diff limits or if a file is hidden by a rule in the repository's _.gitattributes_ file. For more information, see [AUTOTITLE](/repositories/creating-and-managing-repositories/repository-limits#diff-limits) and [AUTOTITLE](/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github). +Diffs may not display if a pull request exceeds repository diff limits or if a file is hidden by a rule in the repository's _.gitattributes_ file. See [AUTOTITLE](/repositories/creating-and-managing-repositories/repository-limits#diff-limits) and [AUTOTITLE](/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github). ### Three-dot and two-dot Git diff comparisons -There are two comparison methods for the `git diff` command: two-dot (`git diff A..B`) and three-dot (`git diff A...B`). Pull requests on {% data variables.product.prodname_dotcom %} show a three-dot diff. - -#### Three-dot Git diff comparison - -The three-dot comparison shows the difference between the most recent common commit of both branches (merge base) and the most recent version of the topic branch. - -#### Two-dot Git diff comparison +The `git diff` command supports two comparison methods. Pull requests on {% data variables.product.prodname_dotcom %} show a three-dot diff. -The two-dot comparison shows the difference between the most recent state of the base branch (for example, `main`) and the most recent version of the topic branch. +| Method | Command | What it compares | +| --- | --- | --- | +| Three-dot | `git diff A...B` | The most recent common commit of both branches (merge base) and the most recent version of the topic branch. | +| Two-dot | `git diff A..B` | The most recent state of the base branch (for example, `main`) and the most recent version of the topic branch. | A two-dot diff compares two Git committish references, such as SHAs or OIDs (Object IDs), directly with each other. On {% data variables.product.prodname_dotcom %}, the Git committish references in a two-dot diff comparison must be pushed to the same repository or its forks. -For more information about Git commands to compare changes, see [Git diff options](https://git-scm.com/docs/git-diff#git-diff-emgitdiffemltoptionsgtltcommitgtltcommitgt--ltpathgt82308203) from the _Pro Git_ book site. +See [Git diff options](https://git-scm.com/docs/git-diff#git-diff-emgitdiffemltoptionsgtltcommitgtltcommitgt--ltpathgt82308203) from the _Pro Git_ book site. ### About three-dot comparison on {% data variables.product.prodname_dotcom %} @@ -102,13 +85,13 @@ When you use a two-dot comparison, the diff changes when the base branch is upda In contrast, a three-dot comparison keeps showing the changes introduced by the topic branch since the branches diverged. -#### Merging often +### Merging often To avoid confusion, merge the base branch (for example, `main`) into your topic branch frequently. When you merge the base branch, the diffs shown by two-dot and three-dot comparisons are the same. We recommend merging a pull request as soon as possible. This encourages contributors to make pull requests smaller, which we recommend in general. ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) +* [AUTOTITLE](/pull-requests/reference/pull-requests) * [AUTOTITLE](/get-started/learning-about-github/github-glossary#branch) in the {% data variables.product.prodname_dotcom %} glossary * [Branches in a Nutshell](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell) in the Git documentation -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks) +* [AUTOTITLE](/pull-requests/reference/forks) diff --git a/content/pull-requests/concepts/about-commits.md b/content/pull-requests/reference/commits.md similarity index 68% rename from content/pull-requests/concepts/about-commits.md rename to content/pull-requests/reference/commits.md index 1bd61441c0c7..00bdf8cc695a 100644 --- a/content/pull-requests/concepts/about-commits.md +++ b/content/pull-requests/reference/commits.md @@ -1,7 +1,8 @@ --- -title: About commits -intro: You can save small groups of meaningful changes as commits. +title: Commits +intro: Learn how commits save changes to your files, track authorship, and organize your project's history in GitHub. redirect_from: + - /pull-requests/concepts/about-commits - /articles/why-are-my-commits-in-the-wrong-order - /github/committing-changes-to-your-project/why-are-my-commits-in-the-wrong-order - /github/committing-changes-to-your-project/about-commits @@ -14,20 +15,19 @@ versions: ghec: '*' category: - Commit changes -contentType: concepts +contentType: reference --- ## About commits {% data reusables.commits.about-commits %} -If the repository you are committing to requires commit signoffs, and you are committing in the web interface, you will automatically sign off on the commit. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-the-commit-signoff-policy-for-your-repository). +If the repository you are committing to requires commit signoffs, and you are committing in the web interface, you will automatically sign off on the commit. See [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-the-commit-signoff-policy-for-your-repository). -You can add a co-author on any commits you collaborate on. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors). +You can add a co-author on any commits you collaborate on. See [AUTOTITLE](/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors). -{% ifversion fpt or ghec %} -You can also create a commit on behalf of an organization. For more information, see [AUTOTITLE](/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors#creating-a-commit-on-behalf-of-an-organization).{% endif %} +You can also create a commit on behalf of an organization. See [AUTOTITLE](/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors#creating-a-commit-on-behalf-of-an-organization). -Rebasing lets you change a series of commits and can change the order of the commits in your timeline. For more information, see [AUTOTITLE](/get-started/using-git/about-git-rebase). +Rebasing lets you change a series of commits and can change the order of the commits in your timeline. See [AUTOTITLE](/get-started/using-git/about-git-rebase). ## About commit branches and tag labels @@ -37,7 +37,7 @@ Commit pages can show labels for branches and tags that contain the commit. Thes If your commit is not on the default branch (`main`), the label will show the branches which contain the commit. If the commit is part of an unmerged pull request, you can click the link to go to the pull request. -Once the commit is on the default branch, any tags that contain the commit will be shown and the default branch will be the only branch listed. For more information on tags, see [Git Basics - Tagging](https://git-scm.com/book/en/v2/Git-Basics-Tagging) in the Git documentation. +Once the commit is on the default branch, any tags that contain the commit will be shown and the default branch will be the only branch listed. See [Git Basics - Tagging](https://git-scm.com/book/en/v2/Git-Basics-Tagging) in the Git documentation. ![Screenshot of a commit summary. The tag icon and "v2.3.4" are highlighted with an orange outline.](/assets/images/help/commits/commit-tag-label.png) diff --git a/content/pull-requests/concepts/about-forks.md b/content/pull-requests/reference/forks.md similarity index 57% rename from content/pull-requests/concepts/about-forks.md rename to content/pull-requests/reference/forks.md index a9b5b1aa83d2..3889d221f96c 100644 --- a/content/pull-requests/concepts/about-forks.md +++ b/content/pull-requests/reference/forks.md @@ -1,7 +1,8 @@ --- -title: About forks -intro: A fork is a new repository that shares code and visibility settings with the original "upstream" repository. +title: Forks +intro: Understand how forks enable independent collaboration by creating separate repositories connected to the original, with distinct settings and permissions. redirect_from: + - /pull-requests/concepts/about-forks - /github/collaborating-with-issues-and-pull-requests/working-with-forks/about-forks - /articles/about-forks - /github/collaborating-with-issues-and-pull-requests/about-forks @@ -20,26 +21,13 @@ versions: ghec: '*' category: - Work with forks -contentType: concepts +contentType: reference --- -## About forks - -Forks are repositories that start as copies of another repository, called the upstream repository. They let you make changes in your own space without affecting the original project. If the upstream repository accepts your changes, you can propose them with a pull request. - -Forks are useful when you want to: - -* Contribute to a project where you do not have write access -* Experiment with changes without affecting the upstream repository -* Explore a new direction that might become independent later -* Keep discussion, issues, and pull requests separate from the upstream project +Forks are repositories that start as copies of another repository, called the upstream repository. A fork has its own settings and permissions but stays connected to the upstream repository. When you view a forked repository on {% data variables.product.github %}, the upstream repository is indicated below the name of the fork. -![Screenshot of a repository's page on GitHub. Below the name of the repository, "mona/docs", the text "forked from github/docs" is outlined in orange.](/assets/images/help/pull_requests/fork-path.png) - -For instructions on creating a fork, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo). - ## What makes forks distinct from branches A branch is part of one repository. A fork is a separate repository with its own settings and collaboration space. @@ -52,14 +40,6 @@ Each fork can have its own: * Actions and projects * Tags, labels, and wikis -Because forks are separate repositories, they give contributors more independence than branches. Because they stay connected to the upstream repository, changes can still flow back through pull requests. - -## When to use a fork - -A fork is often the best choice when you need independence from the upstream repository. This is common in open source projects, where contributors may not have write access to the upstream repository. - -A branch may be simpler when you are collaborating in a shared repository and already have permission to push branches. For more information about branches, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches). - ## Which repositories can be forked? {% data reusables.repositories.you-can-fork %} @@ -68,17 +48,17 @@ Repository, organization, and enterprise policies can limit whether repositories {% ifversion fpt or ghec %} -If you're a member of an {% data variables.enterprise.prodname_emu_enterprise %}, additional restrictions apply to the repositories you can fork. {% ifversion ghec %}{% data reusables.enterprise-accounts.emu-forks %}{% endif %} For more information, see [AUTOTITLE](/enterprise-cloud@latest/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users){% ifversion fpt %} in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}.{% endif %} +If you're a member of an {% data variables.enterprise.prodname_emu_enterprise %}, additional restrictions apply to the repositories you can fork. {% ifversion ghec %}{% data reusables.enterprise-accounts.emu-forks %}{% endif %} See [AUTOTITLE](/enterprise-cloud@latest/admin/concepts/identity-and-access-management/enterprise-managed-users){% ifversion fpt %} in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}.{% endif %} {% endif %} -For more information about policy settings, see [AUTOTITLE](/organizations/managing-organization-settings/managing-the-forking-policy-for-your-organization){% ifversion fpt %}.{% else %} and [AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-forking-private-or-internal-repositories).{% endif %} +See [AUTOTITLE](/organizations/managing-organization-settings/managing-the-forking-policy-for-your-organization){% ifversion fpt %}.{% else %} and [AUTOTITLE](/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-forking-private-or-internal-repositories).{% endif %} -## About visibility of forks +## Visibility of forks A fork's visibility is tied to the upstream repository's repository network. Public repository forks are public, and private repository forks are private.{% ifversion ghec or ghes %} Forks of internal repositories are private.{% endif %} You cannot change the visibility of a fork by itself. -All repositories in a repository network share the same visibility setting. A repository network includes the upstream repository, its forks, and forks of those forks. For more information, see [AUTOTITLE](/repositories/viewing-activity-and-data-for-your-repository/understanding-connections-between-repositories). +All repositories in a repository network share the same visibility setting. A repository network includes the upstream repository, its forks, and forks of those forks. See [AUTOTITLE](/repositories/viewing-activity-and-data-for-your-repository/understanding-connections-between-repositories). Deleting a repository or changing its visibility can affect the network. If you delete a fork, code contributions from that fork can remain accessible to the repository network. @@ -88,31 +68,35 @@ Deleting a repository or changing its visibility can affect the network. If you Visibility changes can separate forks into new repository networks so that existing fork owners can keep working without unexpected loss of access. -* When a private repository is deleted, its private forks are also deleted. -* When a public repository is deleted, an active public fork becomes the new upstream repository for the network. -* When a public repository is made private, its public forks stay public in a separate network. -* When a private repository is made public, private forks stay private but disconnect into separate private networks. -{% ifversion ghec or ghes %}* When an internal repository changes visibility, forks owned by organizations or personal accounts remain private.{% endif %} +| Action | Effect on forks | +| --- | --- | +| A private repository is deleted | Its private forks are also deleted. | +| A public repository is deleted | An active public fork becomes the new upstream repository for the network. | +| A public repository is made private | Its public forks stay public in a separate network. | +| A private repository is made public | Private forks stay private but disconnect into separate private networks. | +| {% ifversion ghec or ghes %} | +| An internal repository changes visibility | Forks owned by organizations or personal accounts remain private. | +| {% endif %} | Changing a public repository to private can also affect stars, watchers, dependency graph, {% data variables.product.prodname_dependabot_alerts %}, and {% data variables.product.prodname_code_scanning %} availability. Review repository visibility settings carefully before changing them. {% ifversion ghes %} -If a public repository has anonymous Git read access enabled and the repository is made private, all of the repository's forks lose anonymous Git read access and return to the default disabled setting. If a forked repository is made public, repository administrators can re-enable anonymous Git read access. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/enabling-anonymous-git-read-access-for-a-repository). +If a public repository has anonymous Git read access enabled and the repository is made private, all of the repository's forks lose anonymous Git read access and return to the default disabled setting. If a forked repository is made public, repository administrators can re-enable anonymous Git read access. See [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/enabling-anonymous-git-read-access-for-a-repository). {% endif %} -## About permissions of forks +## Permissions of forks {% data reusables.repositories.private_forks_inherit_permissions %} Public forks do not inherit the permissions structure of the upstream repository. Fork owners control access to their forks, but repository networks still share Git data. Commits pushed to any repository in a network can be accessible from other repositories in that network, including the upstream repository. -When you fork a public repository to your personal account, you can allow maintainers of the upstream repository to push to your pull request branch. This can help maintainers update your branch, run tests, or resolve small issues before merging. You cannot give push permissions to a fork owned by an organization. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). +When you fork a public repository to your personal account, you can allow maintainers of the upstream repository to push to your pull request branch. This can help maintainers update your branch, run tests, or resolve small issues before merging. You cannot give push permissions to a fork owned by an organization. See [AUTOTITLE](/pull-requests/how-tos/work-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork). -### About push rulesets for forked repositories +### Push rulesets for forked repositories {% data reusables.repositories.rulesets-push-rulesets-fork-network-information %} -For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets#push-rulesets). +See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets#push-rulesets). ### Important security considerations @@ -126,18 +110,10 @@ Forks are powerful collaboration tools, but they can expose code and history in Before allowing forks for sensitive work, review the permissions and visibility model for your repository or organization. -### About forks within an organization +### Forks within an organization Forks within the same organization copy collaborator and team settings from the upstream repository. The organization controls permissions for these forks, and existing visible teams may keep access. -{% ifversion ghec or ghes %} - -### About forks within an enterprise +### Forks within an enterprise Internal repositories support a single level of forking. You cannot fork a private fork of an internal repository. This keeps access and management simpler for repositories that are visible across an enterprise. - -{% endif %} - -## Next steps - -For instructions on forking a repository, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo). diff --git a/content/pull-requests/reference/index.md b/content/pull-requests/reference/index.md index b38249ab35d5..e8e3dcc7bbec 100644 --- a/content/pull-requests/reference/index.md +++ b/content/pull-requests/reference/index.md @@ -1,13 +1,23 @@ --- title: Reference for pull requests shortTitle: Reference -intro: Look up specific information for working with pull requests. +intro: Find detailed guidance on managing pull requests, including reviews, merges, branches, and resolving conflicts. versions: fpt: '*' ghes: '*' ghec: '*' children: + - /pull-requests + - /branches + - /forks + - /commits - /using-query-parameters-to-create-a-pull-request + - /pull-request-reviews + - /status-checks + - /pull-request-merges + - /merge-conflicts + - /managing-and-standardizing-pull-requests + - /working-with-pre-receive-hooks contentType: reference --- diff --git a/content/pull-requests/concepts/managing-and-standardizing-pull-requests.md b/content/pull-requests/reference/managing-and-standardizing-pull-requests.md similarity index 60% rename from content/pull-requests/concepts/managing-and-standardizing-pull-requests.md rename to content/pull-requests/reference/managing-and-standardizing-pull-requests.md index a11c9f455f37..9e2e6a27611e 100644 --- a/content/pull-requests/concepts/managing-and-standardizing-pull-requests.md +++ b/content/pull-requests/reference/managing-and-standardizing-pull-requests.md @@ -1,6 +1,6 @@ --- title: Managing and standardizing pull requests -intro: Use these steps to manage and standardize the pull requests that contributors create in your repository. +intro: Manage and standardize pull requests using templates, code owners, protected branches, rulesets, and automated tools for consistent and secure repository contributions. versions: fpt: '*' ghes: '*' @@ -9,8 +9,9 @@ shortTitle: Manage and standardize pull requests category: - Create pull requests redirect_from: + - /pull-requests/concepts/managing-and-standardizing-pull-requests - /pull-requests/collaborating-with-pull-requests/getting-started/managing-and-standardizing-pull-requests -contentType: concepts +contentType: reference --- If you maintain a repository, you can use {% data variables.product.github %} features to make pull requests more consistent and easier to review. Standardization helps contributors know what information to provide, helps reviewers focus on the right changes, and helps protect important branches from accidental or risky merges. @@ -19,34 +20,34 @@ If you maintain a repository, you can use {% data variables.product.github %} fe Pull request templates help contributors provide the context your project needs for review. A template can prompt authors to explain the purpose of the change, link related issues, include testing notes, or complete a checklist before requesting review. -Templates are useful when many contributors open pull requests or when your project has review expectations that should be visible every time. For more information, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository), [AUTOTITLE](/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists), and [AUTOTITLE](/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue). +Templates are useful when many contributors open pull requests or when your project has review expectations that should be visible every time. See [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository), [AUTOTITLE](/get-started/writing-on-github/working-with-advanced-formatting/about-tasklists), and [AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue). ## Defining code owners Code owners identify the people or teams responsible for specific files or directories. When a pull request changes owned code, {% data variables.product.github %} can automatically request a review from the right owners. -Code owners help route reviews to people with the right context. They are especially useful for sensitive areas such as security files, deployment configuration, or shared libraries. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners). +Code owners help route reviews to people with the right context. They are especially useful for sensitive areas such as security files, deployment configuration, or shared libraries. See [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners). ## Using protected branches Protected branches help keep important branches, such as `main`, stable. They can require conditions such as passing status checks, signed commits, or approving reviews before a pull request can merge. -Use protected branches when a branch represents production code, a release line, or another important source of truth. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). +Use protected branches when a branch represents production code, a release line, or another important source of truth. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches). ## Using rulesets Rulesets let you enforce repository policies across branches and tags. They can require status checks, workflows, pull request reviews, or other conditions before changes are accepted. -Rulesets are useful when you want consistent rules across multiple branches or when you want to combine review requirements with automated security checks, such as dependency review or {% data variables.product.prodname_code_scanning %} merge protection. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets), [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/enforcing-dependency-review-across-an-organization), and [AUTOTITLE](/code-security/code-scanning/managing-your-code-scanning-configuration/set-code-scanning-merge-protection). +Rulesets are useful when you want consistent rules across multiple branches or when you want to combine review requirements with automated security checks, such as dependency review or {% data variables.product.prodname_code_scanning %} merge protection. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets), [AUTOTITLE](/code-security/how-tos/secure-at-scale/configure-organization-security/configure-specific-tools/enforce-dependency-review), and [AUTOTITLE](/code-security/how-tos/find-and-fix-code-vulnerabilities/manage-your-configuration/set-merge-protection). ## Using push rulesets {% data reusables.repositories.push-rulesets-overview %} -Push rulesets help block risky content before it enters the repository. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets#push-rulesets). +Push rulesets help block risky content before it enters the repository. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets#push-rulesets). ## Using automated tools to review code styling Automated tools, such as linters and formatters, help keep code style consistent across pull requests. They can catch small issues automatically so reviewers can focus on design, correctness, and maintainability. -You can run these tools as part of a continuous integration workflow with {% data variables.product.prodname_actions %}. For more information, see [AUTOTITLE](/actions/automating-builds-and-tests/about-continuous-integration). +You can run these tools as part of a continuous integration workflow with {% data variables.product.prodname_actions %}. See [AUTOTITLE](/actions/get-started/continuous-integration). diff --git a/content/pull-requests/concepts/about-merge-conflicts.md b/content/pull-requests/reference/merge-conflicts.md similarity index 57% rename from content/pull-requests/concepts/about-merge-conflicts.md rename to content/pull-requests/reference/merge-conflicts.md index 1c9530918cdc..9e96e22c3832 100644 --- a/content/pull-requests/concepts/about-merge-conflicts.md +++ b/content/pull-requests/reference/merge-conflicts.md @@ -1,7 +1,8 @@ --- -title: About merge conflicts -intro: Merge conflicts happen when you merge branches that have competing commits, and Git needs your help to decide which changes to incorporate in the final merge. +title: Merge conflicts +intro: Identify and resolve merge conflicts in Git to ensure smooth branch integration and successful pull request merges. redirect_from: + - /pull-requests/concepts/about-merge-conflicts - /github/collaborating-with-issues-and-pull-requests/addressing-merge-conflicts/about-merge-conflicts - /articles/about-merge-conflicts - /github/collaborating-with-issues-and-pull-requests/about-merge-conflicts @@ -14,7 +15,7 @@ versions: ghes: '*' category: - Merge and close pull requests -contentType: concepts +contentType: reference --- Git can often resolve differences between branches and merge them automatically. Usually, changes are on different lines or in different files, so Git can merge them without help. Sometimes, competing changes need your help. Merge conflicts often happen when people make different changes to the same line of the same file, or when one person edits a file and another person deletes the same file. @@ -25,11 +26,9 @@ Merge conflicts block merging because Git cannot safely choose which version of Resolving a merge conflict means choosing the final content that should appear after the branches are merged. The right tool depends on the type of conflict. -* Simple line conflicts can often be resolved on {% data variables.product.github %}. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github). -* More complex conflicts must be resolved in a local clone and pushed back to the pull request branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). -{% ifversion copilot %} -* If you have access to {% data variables.copilot.copilot_cloud_agent %} and it is enabled for the repository, {% data variables.product.prodname_copilot_short %} can help resolve conflicts from the merge box. For more information, see [AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/make-changes-to-an-existing-pr#resolving-merge-conflicts). -{% endif %} +* Simple line conflicts can often be resolved on {% data variables.product.github %}. See [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github). +* More complex conflicts must be resolved in a local clone and pushed back to the pull request branch. See [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line). +{% ifversion fpt or ghec %}* If you have access to {% data variables.copilot.copilot_cloud_agent %} and it is enabled for the repository, {% data variables.product.prodname_copilot_short %} can help resolve conflicts from the merge box. See [AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/use-cloud-agent-on-github#resolving-merge-conflicts).{% endif %} On the command line, Git tells you when a merge cannot finish automatically. You cannot push the merged result until you resolve the conflict and commit the resolution. @@ -42,7 +41,7 @@ $ git merge BRANCH-NAME ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github) +* [AUTOTITLE](/pull-requests/reference/pull-request-merges) +* [AUTOTITLE](/pull-requests/reference/pull-requests) +* [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line) +* [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github) diff --git a/content/pull-requests/concepts/about-pull-request-merges.md b/content/pull-requests/reference/pull-request-merges.md similarity index 72% rename from content/pull-requests/concepts/about-pull-request-merges.md rename to content/pull-requests/reference/pull-request-merges.md index db8fbf56d41a..988b0ad87b5f 100644 --- a/content/pull-requests/concepts/about-pull-request-merges.md +++ b/content/pull-requests/reference/pull-request-merges.md @@ -1,7 +1,8 @@ --- -title: About pull request merges -intro: You can [merge pull requests](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request) by retaining all the commits in a feature branch, squashing all commits into a single commit, or by rebasing individual commits from the `head` branch onto the `base` branch. +title: Pull request merges +intro: Learn strategies for merging pull requests, including merge commits, squash merges, and rebases, to manage repository history effectively. redirect_from: + - /pull-requests/concepts/about-pull-request-merges - /github/collaborating-with-issues-and-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges - /articles/about-pull-request-merge-squashing - /articles/about-pull-request-merges @@ -14,11 +15,17 @@ versions: ghec: '*' category: - Merge and close pull requests -contentType: concepts +contentType: reference --- Pull requests can be merged in different ways. The best strategy depends on how your team wants the repository history to look and how much detail you want to preserve from the pull request branch. +| Strategy | Result | Choose when | +| --- | --- | --- | +| Merge commit | Preserves every commit from the pull request branch and adds an explicit merge point. | Your team values complete history, or the individual commits are meaningful on their own. | +| Squash and merge | Combines all commits in the pull request into a single commit on the base branch. | A pull request represents one logical change, especially with many small fixup commits. | +| Rebase and merge | Adds each commit onto the base branch without a merge commit, for a linear history. | Your team wants a linear history and the commits are already organized clearly. | + ## Merge your commits {% data reusables.pull_requests.default_merge_option %} @@ -39,7 +46,7 @@ Choose this strategy when a pull request represents one logical change, especial When you squash and merge, {% data variables.product.prodname_dotcom %} generates a default commit message that you can edit. The default message can include the pull request title, pull request description, or commit information, depending on repository settings and the number of commits in the pull request. -Maintainers and administrators can configure the default message for squashed commits. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/configuring-commit-squashing-for-pull-requests). +Maintainers and administrators can configure the default message for squashed commits. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/configuring-commit-squashing-for-pull-requests). ### Squashing and merging a long-running branch @@ -53,7 +60,7 @@ For long-running branches, consider using a merge commit or rebasing the branch Rebasing adds each commit from the pull request branch onto the base branch without creating a merge commit. This produces a linear history while preserving the individual commits from the pull request. -Choose this strategy when your team wants a linear history and the pull request commits are already organized clearly. If {% data variables.product.github %} cannot safely rebase the pull request automatically, you can rebase locally, resolve conflicts, and push the updated branch. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line) and [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request). +Choose this strategy when your team wants a linear history and the pull request commits are already organized clearly. If {% data variables.product.github %} cannot safely rebase the pull request automatically, you can rebase locally, resolve conflicts, and push the updated branch. See [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line) and [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request). ## Indirect merges @@ -63,5 +70,5 @@ Indirect merges are uncommon, but they can affect automation and branch protecti ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts) +* [AUTOTITLE](/pull-requests/reference/pull-requests) +* [AUTOTITLE](/pull-requests/how-tos/merge-and-close-pull-requests) diff --git a/content/pull-requests/reference/pull-request-reviews.md b/content/pull-requests/reference/pull-request-reviews.md new file mode 100644 index 000000000000..0d58905bf044 --- /dev/null +++ b/content/pull-requests/reference/pull-request-reviews.md @@ -0,0 +1,54 @@ +--- +title: Pull request reviews +intro: Review pull requests to provide feedback, suggest changes, and ensure code quality before merging. +redirect_from: + - /pull-requests/concepts/about-pull-request-reviews + - /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews + - /articles/about-pull-request-reviews + - /github/collaborating-with-issues-and-pull-requests/about-pull-request-reviews + - /github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews + - /pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews +versions: + fpt: '*' + ghes: '*' + ghec: '*' +shortTitle: PR reviews +category: + - Review pull requests +contentType: reference +--- + +Pull request reviews let people comment on changes, suggest improvements, and approve or request changes before code is merged. Anyone with read access can review and comment on proposed changes, helping teams maintain code quality and share knowledge. + +{% raw %}View pull requests awaiting your review{% endraw %} + +## Review decision types + +When a reviewer submits a review, they choose one of the following decisions: + +| Decision | Meaning | +| --- | --- | +| Comment | Leaves general feedback without explicitly approving or requesting changes. | +| Approve | Signals that the changes are ready to merge. | +| Request changes | Flags feedback that the author should address before merging. | + +Reviewers can also comment on specific lines, suggest exact changes, and discuss implementation details. Review conversations appear in the pull request timeline so the team can track feedback and decisions. + +## Requesting and requiring reviews + +Reviews can be requested from specific people or teams when they need feedback from the right experts. + +To request a review, you need write access to the repository. You can request a review from a person or team with read access to the repository, and they receive a notification. +* Pull request authors can request reviews only if they are repository owners or collaborators with write access. +* Organization members with write access or triage permissions can also assign a reviewer for a pull request. +* If you request a review from a team and code review assignment is enabled, specific members will be requested and the team will be removed as a reviewer. + +If you define code owners in a CODEOWNERS file, {% data variables.product.github %} can automatically request review from owners when a pull request changes their code. See [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/requesting-a-pull-request-review). + +Repository administrators can require approvals before pull requests are merged. Required reviews help protect important branches and reduce accidental merges. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-pull-request-reviews-before-merging). + +## Further reading + +* [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/reviewing-proposed-changes-in-a-pull-request) +* [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/requesting-a-pull-request-review) +* Learn more in the [Review pull requests](https://github.com/skills/review-pull-requests?ref_product=github&ref_type=engagement&ref_style=text) {% data variables.product.prodname_learning %} course diff --git a/content/pull-requests/concepts/about-pull-requests.md b/content/pull-requests/reference/pull-requests.md similarity index 86% rename from content/pull-requests/concepts/about-pull-requests.md rename to content/pull-requests/reference/pull-requests.md index 282bc03f57f8..117d5127669f 100644 --- a/content/pull-requests/concepts/about-pull-requests.md +++ b/content/pull-requests/reference/pull-requests.md @@ -1,7 +1,9 @@ --- -title: About pull requests -intro: Pull requests let you propose, review, and merge code changes. +title: Pull requests +shortTitle: Pull requests +intro: Propose, review, and merge code changes using pull requests to collaborate effectively and maintain code quality. redirect_from: + - /pull-requests/concepts/about-pull-requests - /github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests - /articles/using-pull-requests - /articles/about-pull-requests @@ -20,7 +22,7 @@ versions: ghec: '*' category: - Create pull requests -contentType: concepts +contentType: reference --- Pull requests are proposals to merge code changes into a project. A pull request is {% data variables.product.github %}'s key **collaboration feature**, letting you discuss and review changes before merging them. This helps teams work together, catch issues early, and maintain code quality. @@ -45,7 +47,7 @@ Together, these views help authors and reviewers discuss the change, track feedb When you create a pull request, you can choose to make it a draft pull request. Draft pull requests cannot be merged, and code owners are not automatically requested to review them. Drafts are useful when you want to share work-in-progress without formally requesting reviews. -{% data reusables.pull_requests.mark-ready-review %} You can convert a pull request to a draft at any time. See [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request). +{% data reusables.pull_requests.mark-ready-review %} You can convert a pull request to a draft at any time. See [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/changing-the-stage-of-a-pull-request). ## Pull request refs and merge branches @@ -78,8 +80,8 @@ In the shared repository model, collaborators have push access to a single share ## Further reading -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) -* [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork) +* [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/creating-a-pull-request) +* [AUTOTITLE](/pull-requests/reference/branches) +* [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/commenting-on-a-pull-request) +* [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/creating-a-pull-request-from-a-fork) +* [AUTOTITLE](/pull-requests/how-tos/work-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork) diff --git a/content/pull-requests/reference/status-checks.md b/content/pull-requests/reference/status-checks.md new file mode 100644 index 000000000000..8ca54b88a372 --- /dev/null +++ b/content/pull-requests/reference/status-checks.md @@ -0,0 +1,117 @@ +--- +title: Status checks +intro: Understand how status checks ensure commits meet repository conditions, assist pull request reviews, and manage validations like builds, tests, and deployments. +redirect_from: + - /pull-requests/concepts/about-status-checks + - /github/collaborating-with-issues-and-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks + - /articles/about-statuses + - /articles/about-status-checks + - /github/collaborating-with-issues-and-pull-requests/about-status-checks + - /github/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks + - /pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks +versions: + fpt: '*' + ghes: '*' + ghec: '*' +category: + - Merge and close pull requests +contentType: reference +--- + +Status checks show whether commits meet the conditions set for a repository. They are usually created by external systems, such as continuous integration builds, tests, code scanning, or deployment checks. + +Status checks help reviewers and maintainers understand whether a pull request is ready to merge. A check can show that work is still running, that changes passed validation, or that something needs attention. + +![Screenshot of a list of commits and statuses.](/assets/images/help/pull_requests/commit-list-statuses.png) + +Anyone with write permissions to a repository can set the state for any status check in the repository. + +If status checks are required for a protected branch, they must pass before the pull request can be merged. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging). + +{% data reusables.actions.workflows.skipped-job-status-checks-passing %} + +## Types of status checks on {% data variables.product.github %} + +There are two types of status checks on {% data variables.product.github %}: + +| Type | Detail level | Created by | +| --- | --- | --- | +| Checks | Detailed output, annotations, and messages. | {% data variables.product.prodname_github_apps %}, including {% data variables.product.prodname_actions %}. | +| Commit statuses | A simpler status for a commit. | External services and integrations. | + +> [!NOTE] +> {% data variables.product.prodname_actions %} generates checks, not commit statuses, when workflows are run. + +Organization owners and users with push access to a repository can create checks and commit statuses with {% data variables.product.github %}'s API. See [AUTOTITLE](/rest/checks) and [AUTOTITLE](/rest/commits/statuses). + +## Checks + +Checks can include build logs, test results, annotations, and links to more detail. In a pull request, the **Checks** tab helps you understand which validations ran and why a check passed or failed. + +![Screenshot of the "Checks" tab of a pull request. The "Checks" tab and the dropdown menu to select a commit are both outlined in dark orange.](/assets/images/help/pull_requests/checks-summary-for-various-commits.png) + +> [!NOTE] +> The **Checks** tab is populated for pull requests only if you set up _checks_, not _commit statuses_, for the repository. + +When a check points to a specific line, details can also appear in the **Files** tab of the pull request. This helps reviewers connect automated feedback to the code being changed. + +## Skipping and requesting checks for individual commits + +Some repositories allow checks to be skipped or requested for individual commits. This can be useful when a check is not relevant to a specific change, or when checks are not requested automatically. + +For {% data variables.product.prodname_actions %} workflows, you can skip workflow runs triggered by the `push` and `pull_request` events by including a skip instruction in your commit message. See [AUTOTITLE](/actions/how-tos/manage-workflow-runs/skip-workflow-runs). + +Alternatively, to skip or request _all_ checks for your commit, add one of the following trailer lines to the end of your commit message: + +* To _skip checks_ for a commit, type your commit message and a short, meaningful description of your changes. After your commit description, before the closing quotation, add two empty lines followed by `skip-checks: true`: + + ```shell + $ git commit -m "Update README + > + > + skip-checks: true" + ``` + +* To _request_ checks for a commit, type your commit message and a short, meaningful description of your changes. After your commit description, before the closing quotation, add two empty lines followed by `request-checks: true`: + + ```shell + $ git commit -m "Refactor usability tests + > + > + request-checks: true" + ``` + +{% data reusables.commits.about-commit-cleanup %} + +## Check statuses and conclusions + +Checks move through statuses as they run, then receive a conclusion when they finish. Some statuses cannot be set manually and are reserved for {% data variables.product.prodname_actions %}. + +| Status | Description | {% data variables.product.prodname_actions %} only? | +| --- | --- | --- | +| `completed` | The check run completed and has a conclusion (see below). | No | +| `expected` | The check run is waiting for a status to be reported. | Yes | +| `failure` | The check run failed. | No | +| `in_progress` | The check run is in progress. | No | +| `pending` | The check run is at the front of the queue but the [group-based concurrency](/actions/writing-workflows/choosing-what-your-workflow-does/control-the-concurrency-of-workflows-and-jobs) limit has been reached. | Yes | +| `queued` | The check run has been queued. | No | +| `requested` | The check run has been created but has not been queued. | Yes | +| `startup_failure` | The check suite failed during startup. This status is not applicable to check runs. | Yes | +| `waiting` | The check run is waiting for a [deployment protection rule](/actions/managing-workflow-runs-and-deployments/managing-deployments/managing-environments-for-deployment#deployment-protection-rules) to be satisfied. | Yes | + +When a check has a status of `completed`, it has a conclusion. A successful conclusion usually means the check does not block merging. A failure, timeout, or action-required conclusion usually means someone must review the details before the pull request can merge. + +| Conclusion | Description | +| --- | --- | +| `action_required` | The check run provided required actions upon its completion. For more information, see [AUTOTITLE](/rest/guides/using-the-rest-api-to-interact-with-checks#check-runs-and-requested-actions). | +| `cancelled` | The check run was cancelled before it completed. | +| `failure` | The check run failed. | +| `neutral` | The check run completed with a neutral result. This is treated as a success for dependent checks in {% data variables.product.prodname_actions %}. | +| `skipped` | The check run was skipped. This is treated as a success for dependent checks in {% data variables.product.prodname_actions %}. | +| `stale` | The check run was marked stale by {% data variables.product.github %} because it took too long. | +| `success` | The check run completed successfully. | +| `timed_out` | The check run timed out. | + +## Retention of checks + +{% data reusables.pull_requests.retention-checks-data %} diff --git a/content/pull-requests/reference/using-query-parameters-to-create-a-pull-request.md b/content/pull-requests/reference/using-query-parameters-to-create-a-pull-request.md index 913e12022391..0b253116731c 100644 --- a/content/pull-requests/reference/using-query-parameters-to-create-a-pull-request.md +++ b/content/pull-requests/reference/using-query-parameters-to-create-a-pull-request.md @@ -1,6 +1,6 @@ --- title: Using query parameters to create a pull request -intro: Use query parameters to create custom URLs to open pull requests with pre-populated fields. +intro: 'Use query parameters to create custom URLs that open pull requests with pre-filled titles, descriptions, labels, and more.' redirect_from: - /github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request - /pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request @@ -26,6 +26,6 @@ You can add query parameters to a compare URL to open a pull request with pre-po | `projects` | Adds the pull request to a project. | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&title=Bug+fix&projects=octo-org/1` | | `template` | Adds a pull request template from a `PULL_REQUEST_TEMPLATE` subdirectory in the root, `docs/`, or `.github/` directory. | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&template=issue_template.md` | -You must have permission to complete the equivalent action to use its query parameter. For example, you must have permission to add labels to use `labels`. For more information, see [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization). +You must have permission to complete the equivalent action to use its query parameter. For example, you must have permission to add labels to use `labels`. See [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization). Invalid query parameters or insufficient permissions return a `404 Not Found` error. URLs that exceed the server limit return a `414 URI Too Long` error. diff --git a/content/pull-requests/concepts/working-with-pre-receive-hooks.md b/content/pull-requests/reference/working-with-pre-receive-hooks.md similarity index 86% rename from content/pull-requests/concepts/working-with-pre-receive-hooks.md rename to content/pull-requests/reference/working-with-pre-receive-hooks.md index 5dc663c83bdb..b9e90d06dceb 100644 --- a/content/pull-requests/concepts/working-with-pre-receive-hooks.md +++ b/content/pull-requests/reference/working-with-pre-receive-hooks.md @@ -1,18 +1,19 @@ --- title: Working with pre-receive hooks -intro: '*Pre-receive hooks* enforce rules for contributions before commits may be pushed to a repository.' +intro: Enforce repository policies and prevent issues like secrets or invalid commits using pre-receive hooks on GitHub Enterprise Server. redirect_from: - /github/collaborating-with-issues-and-pull-requests/collaborating-on-repositories-with-code-quality-features/working-with-pre-receive-hooks - /articles/working-with-pre-receive-hooks - /github/collaborating-with-issues-and-pull-requests/working-with-pre-receive-hooks - /github/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/working-with-pre-receive-hooks - /pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/working-with-pre-receive-hooks + - /pull-requests/concepts/working-with-pre-receive-hooks versions: ghes: '*' shortTitle: Pre-receive hooks category: - Merge and close pull requests -contentType: concepts +contentType: reference --- Pre-receive hooks are scripts that run on {% data variables.product.prodname_ghe_server %} before Git accepts pushed commits. They enforce repository, organization, or enterprise policy at the point where code enters a repository. @@ -37,4 +38,4 @@ error: failed to push some refs to 'https://54.204.174.51/hodor/nope.git' Pre-receive hooks matter because they apply rules consistently before changes reach the repository. This can reduce manual review burden and prevent policy violations from being stored in Git history. -Your {% data variables.product.prodname_ghe_server %} site administrator creates and removes pre-receive hooks. They may also allow organization or repository administrators to enable or disable hooks for specific scopes. For more information, see [AUTOTITLE](/admin/policies/enforcing-policy-with-pre-receive-hooks). +Your {% data variables.product.prodname_ghe_server %} site administrator creates and removes pre-receive hooks. They may also allow organization or repository administrators to enable or disable hooks for specific scopes. See [AUTOTITLE](/admin/enforcing-policies/enforcing-policy-with-pre-receive-hooks). diff --git a/data/reusables/gated-features/more-info.md b/data/reusables/gated-features/more-info.md index 16baddaae07e..cb4853d45610 100644 --- a/data/reusables/gated-features/more-info.md +++ b/data/reusables/gated-features/more-info.md @@ -1 +1 @@ -{% ifversion fpt or ghec %}For more information, see [AUTOTITLE](/get-started/learning-about-github/githubs-plans).{% endif %} +See [AUTOTITLE](/get-started/learning-about-github/githubs-plans). diff --git a/data/reusables/pull_requests/automatically-delete-branches.md b/data/reusables/pull_requests/automatically-delete-branches.md index 1bcc053ddf7a..bc556de91251 100644 --- a/data/reusables/pull_requests/automatically-delete-branches.md +++ b/data/reusables/pull_requests/automatically-delete-branches.md @@ -1 +1 @@ -You can have head branches automatically deleted after pull requests are merged in your repository. For more information, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-the-automatic-deletion-of-branches). +You can have head branches automatically deleted after pull requests are merged in your repository. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-the-automatic-deletion-of-branches). diff --git a/data/reusables/repositories/asking-for-review.md b/data/reusables/repositories/asking-for-review.md index 5a5857da4ff1..afa094ce6b01 100644 --- a/data/reusables/repositories/asking-for-review.md +++ b/data/reusables/repositories/asking-for-review.md @@ -1,2 +1,2 @@ > [!TIP] -> After you create a pull request, you can ask a specific person to [review your proposed changes](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request). For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review). +> After you create a pull request, you can ask a specific person to review your proposed changes. See [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review). diff --git a/data/reusables/repositories/sidebar-pr.md b/data/reusables/repositories/sidebar-pr.md index 49b4d724f06f..63781746cea9 100644 --- a/data/reusables/repositories/sidebar-pr.md +++ b/data/reusables/repositories/sidebar-pr.md @@ -1,3 +1 @@ 1. Under your repository name, click **{% octicon "git-pull-request" aria-hidden="true" aria-label="git-pull-request" %} Pull requests**. - - ![Screenshot of the main page of a repository. In the horizontal navigation bar, a tab, labeled "Pull requests," is outlined in dark orange.](/assets/images/help/repository/repo-tabs-pull-requests-global-nav-update.png) diff --git a/src/frame/tests/page.ts b/src/frame/tests/page.ts index 4d13313627b4..389a088a9238 100644 --- a/src/frame/tests/page.ts +++ b/src/frame/tests/page.ts @@ -27,7 +27,7 @@ const enterpriseServerVersions = Object.keys(allVersions).filter((v) => const nonEnterpriseDefaultPlan = nonEnterpriseDefaultVersion.split('@')[0] const opts = { - relativePath: 'pull-requests/concepts/about-branches.md', + relativePath: 'pull-requests/reference/branches.md', basePath: path.join(__dirname, '../../../content'), languageCode: 'en', } @@ -201,7 +201,7 @@ describe('Page class', () => { test('sets versioned values', async () => { const page = await Page.init(opts) - const expectedPath = 'pull-requests/concepts/about-branches' + const expectedPath = 'pull-requests/reference/branches' expect( page!.permalinks.find((permalink) => permalink.pageVersion === nonEnterpriseDefaultVersion)! .href, diff --git a/src/redirects/tests/redirects.ts b/src/redirects/tests/redirects.ts index 0d46a5aa6516..93d5ebc52eae 100644 --- a/src/redirects/tests/redirects.ts +++ b/src/redirects/tests/redirects.ts @@ -17,7 +17,7 @@ describe('redirects', () => { test('page.buildRedirects() returns an array', async () => { const page = await Page.init({ - relativePath: 'pull-requests/concepts/about-branches.md', + relativePath: 'pull-requests/reference/branches.md', basePath: path.join(__dirname, '../../../content'), languageCode: 'en', }) From 358d90c5d21e2038d29b4fe21f1cb4bf8f96dc52 Mon Sep 17 00:00:00 2001 From: Scott Addie <10702007+scottaddie@users.noreply.github.com> Date: Tue, 21 Jul 2026 07:26:29 +0000 Subject: [PATCH 08/17] Reorder Copilot SDK table of contents (#62327) Co-authored-by: hubwriter Copilot-Session: 213ac325-6788-4442-92e3-47da4aaaf114 --- content/copilot/how-tos/copilot-sdk/index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/copilot/how-tos/copilot-sdk/index.md b/content/copilot/how-tos/copilot-sdk/index.md index 5c117b3c965b..227c147609d7 100644 --- a/content/copilot/how-tos/copilot-sdk/index.md +++ b/content/copilot/how-tos/copilot-sdk/index.md @@ -9,9 +9,9 @@ versions: ghec: '*' contentType: how-tos children: + - /getting-started - /auth - /features - - /getting-started - /hooks - /integrations - /observability @@ -22,4 +22,3 @@ children: - From 43b4ffa2a8f3e21b58351666f17ff3e78059f677 Mon Sep 17 00:00:00 2001 From: "docs-engineering-bot[bot]" <285023527+docs-engineering-bot[bot]@users.noreply.github.com> Date: Tue, 21 Jul 2026 08:47:14 +0000 Subject: [PATCH 09/17] Update docs changelog (for PR #62095) (#62238) Co-authored-by: github-actions[bot] Co-authored-by: Isaac Brown <101839405+isaacmbrown@users.noreply.github.com> --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5eeaecca2432..b98b4b8e9bcf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Docs changelog +**13 July 2026** + +We published [Bring your own key for GitHub Copilot](https://docs.github.com/en/copilot/concepts/models/bring-your-own-key). This article distinguishes between two different mechanisms for customers to use Copilot with custom models. We have also retitled corresponding how-to content to make the distinction clearer. + +
+ **16 June 2026** We made some improvements to our documentation on Copilot policies: From f5f0de1f5655d353f99958390bd3d709075783a4 Mon Sep 17 00:00:00 2001 From: "docs-engineering-bot[bot]" <285023527+docs-engineering-bot[bot]@users.noreply.github.com> Date: Tue, 21 Jul 2026 09:52:19 +0000 Subject: [PATCH 10/17] docs: update copilot-cli content from source docs (#62371) Co-authored-by: github-actions[bot] Co-authored-by: hubwriter --- .../cli-command-reference.md | 53 +++++++++++++++---- .../cli-config-dir-reference.md | 50 ++++++++++++++++- .../cli-plugin-reference.md | 37 ++++++++++++- content/copilot/reference/hooks-reference.md | 5 ++ src/content-pipelines/state/copilot-cli.sha | 2 +- 5 files changed, 132 insertions(+), 15 deletions(-) diff --git a/content/copilot/reference/copilot-cli-reference/cli-command-reference.md b/content/copilot/reference/copilot-cli-reference/cli-command-reference.md index 068af86570bc..8080fd0a168f 100644 --- a/content/copilot/reference/copilot-cli-reference/cli-command-reference.md +++ b/content/copilot/reference/copilot-cli-reference/cli-command-reference.md @@ -167,6 +167,7 @@ With `--skill`, pass either a skill name or the path to a custom skill directory | `@ FILENAME` | Include file contents in the context. | | `# NUMBER` | Include a {% data variables.product.github %} issue or pull request in the context. | | `! COMMAND` | Execute a command in your local shell, bypassing {% data variables.product.prodname_copilot_short %}. Enter `!` alone on an empty prompt to enter shell mode for running multiple shell commands in sequence. Press Esc or Ctrl+C on an empty prompt to exit shell mode. | +| `$` | Type a lone `$` at the prompt to hand the terminal over to a real interactive shell (`$SHELL` on Unix, `%COMSPEC%` on Windows) rooted at the session's working directory. Unlike `!` shell mode, this suspends the CLI UI entirely, so job control, full-screen apps, tab completion, and colors all work natively. Exit the shell (`exit`, or Ctrl+D on Unix) to return to the CLI. Only activates for a local, trusted, idle session on a real TTY. Can be disabled in enterprise managed settings. Disabled by default. Enable it with the `shellShortcut` setting—see [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-config-dir-reference#configuration-file-settings). | | `?` | Open quick help (on an empty prompt). Press again to dismiss and insert a literal `?`. | | Esc | Cancel the current operation. Press twice to interrupt the running turn, or to stop background agents when the main agent is idle. | | Ctrl+C | Cancel operation / clear input. Press twice to exit. | @@ -290,7 +291,7 @@ These are the slash commands you can use from within an interactive CLI session. | `/downgrade VERSION` | Download and restart into a specific CLI version. Available for team accounts. | | `/env` | Show loaded environment details (instructions, MCP servers, skills, agents, hooks, plugins, LSPs, extensions). | | `/every [INTERVAL PROMPT]`, `/every` | Schedule a recurring prompt, skill, or schedulable slash command for the current session (for example, `/every 1h run tests` or `/every 1d /chronicle standup`). With no arguments the schedule manager is displayed. {% data reusables.copilot.experimental %} | -| `/exit`, `/quit` | Exit the CLI. | +| `/exit`, `/quit` | Close the current session. If other sessions are running, this foregrounds the newest remaining one instead of quitting. Quits the CLI only when it is the last open session. `/exit print` always tears down the CLI and offers to dump the transcript. | | `/extensions [manage\|mode]`, `/extension` | Manage CLI extensions. | | `/experimental [on\|off\|show]` | Toggle, set, or show experimental features. | | `/feedback`, `/bug` | Provide feedback about the CLI. | @@ -308,10 +309,22 @@ These are the slash commands you can use from within an interactive CLI session. | `/logout` | Log out of {% data variables.product.prodname_copilot_short %}. | | `/lsp [show\|test\|reload\|logs\|help] [SERVER-NAME]` | Manage the language server configuration. The `logs` subcommand opens the live LSP services log panel. | | `/mcp [list\|show\|add\|edit\|delete\|disable\|enable\|auth\|reload\|search] [SERVER-NAME]` | Manage the MCP server configuration. `list` (alias `ls`) prints a plain-text list of configured servers with connection status and live state, and is read-only, so it can run while the agent is busy processing a turn; all other subcommands are blocked until the turn finishes. Sandboxed local servers show a `connected (sandboxed)` status. See [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/add-mcp-servers#managing-mcp-servers). | -| `/model [--repo\|--local] [MODEL]`, `/models` | Select the AI model you want to use, or choose **Auto**. `--repo`/`--local` pins the default model in repository settings instead of the current session. Press Tab on a model with a long-context variant to toggle its Context column between the default and long-context window. See [AUTOTITLE](/copilot/concepts/models/auto-model-selection). | +| `/model [--repo\|--local\|--session] [MODEL]`, `/models` | Select the AI model you want to use, or choose **Auto**. `--repo`/`--local` pins the default model in repository settings instead of the current session; `--session` (alias `-s`) changes the model, reasoning effort, or context window for the current session only, without touching saved settings. Press Tab on a model with a long-context variant to toggle its Context column between the default and long-context window. See [AUTOTITLE](/copilot/concepts/models/auto-model-selection). | | `/permissions [show\|reset]` | View or clear in-memory tool and path approvals for the current session. | | `/plan [PROMPT]` | Create an implementation plan before coding. | -| `/plugin [marketplace\|install\|uninstall\|update\|list] [ARGS...]` | Manage plugins and plugin marketplaces. `list` (alias `ls`, including bare `/plugin`) is read-only and can run while the agent is busy processing a turn; all other subcommands are blocked until the turn finishes. See [AUTOTITLE](/copilot/concepts/agents/about-plugins). | +| `/plugins` (alias `/plugin`) | Manage plugins, MCP servers, and skills; opens the plugins dashboard, or run with `--plugin`, `--mcp`, or `--skill` to open it focused on that tab. See [AUTOTITLE](/copilot/concepts/agents/about-plugins). | +| `/plugins help` | Show full `/plugins` command usage. | +| `/plugins install SOURCE` | Install a plugin from a marketplace spec, {% data variables.product.github %} repository, git URL, or local path. | +| `/plugins install --skill [--project] ` | Install a skill; `--project` scopes a file or URL install to this repository instead of your user account. | +| `/plugins update PLUGIN[@MARKETPLACE]` | Update an installed plugin. | +| `/plugins uninstall PLUGIN[@MARKETPLACE]` | Uninstall a plugin. | +| `/plugins list` (alias `/plugin ls`) | List installed plugins. | +| `/plugins enable\|disable\|remove --plugin\|--mcp\|--skill NAME` | Enable, disable, or remove/uninstall a plugin, MCP server, or skill by name; defaults to `--plugin` when no kind is given. | +| `/plugins marketplace add SOURCE` | Add a marketplace. | +| `/plugins marketplace remove NAME` | Remove a marketplace. | +| `/plugins marketplace list` | List registered marketplaces. | +| `/plugins marketplace browse NAME` | Browse plugins in a marketplace. | +| `/plugins mcp [SUBCOMMAND]` | Delegates to `/mcp`; manage MCP servers from the plugins dashboard. | | `/pr [view\|create\|fix\|auto\|automerge]` | Manage pull requests for the current branch. `auto` drives the pull request to green and stops; `automerge` (alias: `agentmerge`) drives the pull request to green and merges it. See [AUTOTITLE](/copilot/how-tos/copilot-cli/use-copilot-cli/manage-pull-requests). | | `/refine TEXT` | Rewrite a roughly composed prompt into a clear one for review. Run with no arguments (via Ctrl+X then `/refine`) to clean up the current input box. Can be particularly useful for prompts entered by speaking. | | `/remote [on\|off]` | Show the remote control status (if no argument provided), enable remote steering (`on`), or end the remote connection (`off`). See [AUTOTITLE](/copilot/how-tos/copilot-cli/use-copilot-cli/steer-remotely). | @@ -326,7 +339,7 @@ These are the slash commands you can use from within an interactive CLI session. | `/search [QUERY]`, `/find [QUERY]` | Search the conversation timeline. {% data reusables.copilot.experimental %} | | `/security-review [PROMPT]` | Run a focused security review of active local code changes and return prioritized vulnerability findings with remediation suggestions. This command is not a full repository security audit. | | `/session [info\|checkpoints [n]\|files\|plan\|rename [NAME]\|cleanup\|prune\|delete [ID]\|delete-all]`, `/sessions [info\|checkpoints [n]\|files\|plan\|rename [NAME]\|cleanup\|prune\|delete [ID]\|delete-all]` | Show session information and manage sessions. The `info` subcommand shows session details including the session link (when available). Subcommands: `info`, `checkpoints`, `files`, `plan`, `rename`, `cleanup`, `prune`, `delete`, `delete-all`. | -| `/settings [--repo\|--local] [show KEY\|KEY\|KEY VALUE]`,
`/config [--repo\|--local] [show KEY\|KEY\|KEY VALUE]` | Open the settings dialog, open it focused on a specific setting (`KEY`), set a setting inline (`KEY VALUE`), or display a setting's current value (`show KEY`). The dialog shows **User**, **Repo**, and **Repo (local)** tabs—switch with Tab/Shift+Tab; a setting overridden in another scope shows a badge naming which scope wins. Add `--repo` or `--local` to target `.github/copilot/settings.json` or `.github/copilot/settings.local.json` instead of the user settings file—for example, `/settings --repo model gpt-5.2`. Only [repo-overridable keys](/copilot/reference/copilot-cli-reference/cli-config-dir-reference#repository-settings-githubcopilotsettingsjson) can be set this way. Rows governed by an active organization or MDM managed policy render read-only with a `(managed)` tag. See [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/change-settings). | +| `/settings [--repo\|--local] [show KEY\|KEY\|KEY VALUE]`,
`/config [--repo\|--local] [show KEY\|KEY\|KEY VALUE]` | Open the settings dialog, open it focused on a specific setting (`KEY`), set a setting inline (`KEY VALUE`), or display a setting's current value (`show KEY`). `show` masks secret-named values (for example, tokens or API keys nested under a setting) instead of printing them in clear text. The dialog shows **User**, **Repo**, and **Repo (local)** tabs—switch with Tab/Shift+Tab; a setting overridden in another scope shows a badge naming which scope wins. Add `--repo` or `--local` to target `.github/copilot/settings.json` or `.github/copilot/settings.local.json` instead of the user settings file—for example, `/settings --repo model gpt-5.2`. Only [repo-overridable keys](/copilot/reference/copilot-cli-reference/cli-config-dir-reference#repository-settings-githubcopilotsettingsjson) can be set this way. Rows governed by an active organization or MDM managed policy render read-only with a `(managed)` tag. See [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/change-settings). | | `/share [link\|off\|file\|html\|gist\|research] [...]`, `/export [...]` | Share the current session. With no subcommand, generates a shareable {% data variables.product.github %} link when you're logged in and synced (falls back to Markdown file export otherwise). `off` stops sharing. `link` is an explicit alias for the default link flow; `link off` stops link sharing. `file [session\|research] [PATH]` exports to a Markdown file. `html [session\|research] [PATH]` exports to an HTML file. `gist [session\|research]` creates a {% data variables.product.github %} gist. `research [PATH]` exports the research report. | | `/skills [list\|info\|add\|remove\|reload] [ARGS...]` | Manage skills for enhanced capabilities. See [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/add-skills). | | `/statusline`, `/footer` | Configure which items appear in the status line. | @@ -412,7 +425,7 @@ For a complete list of available slash commands enter `/help` in the CLI's inter | `--plugin-dir=DIRECTORY` | Load a plugin from a local directory (can be used multiple times). | | `--remote` | Enable remote access to this session from {% data variables.product.prodname_dotcom_the_website %} and {% data variables.product.prodname_mobile %}. See [AUTOTITLE](/copilot/how-tos/copilot-cli/use-copilot-cli/steer-remotely). | | `--remote-export` | Export your session to {% data variables.product.prodname_dotcom_the_website %} and {% data variables.product.prodname_mobile %} (read-only; does not enable remote control). | -| `-r`, `--resume[=VALUE]` | Resume a previous interactive session by choosing from a list. Optionally specify a session ID, ID prefix, or session name. Name matching is exact and case-insensitive; falls back to the auto-generated summary when no explicit name matches. Conflicts with `--continue`. | +| `-r`, `--resume[=VALUE]` | Resume a previous interactive session by choosing from a list. Optionally specify a session ID, ID prefix, or session name. Name matching is exact and case-insensitive; falls back to the auto-generated summary when no explicit name matches. Conflicts with `--continue`. Bare `--resume` (no value) shows an interactive session picker, which requires a TTY. If multiple sessions exist and the picker can't be shown (for example under `-p`, a non-TTY `-i`, or piped stdin), the CLI exits with an error instead of silently starting a new session—pass an explicit `--resume=SESSION-ID` or use `--continue`. | | `-s`, `--silent` | Output only the agent response (without usage statistics), useful for scripting with `-p`. | | `--screen-reader` | Enable screen reader optimizations. | | `--secret-env-vars=VAR ...` | Redact an environment variable from shell and MCP server environments (can be used multiple times). For multiple variables, use a quoted, comma-separated list. The values in the `GITHUB_TOKEN` and `COPILOT_GITHUB_TOKEN` environment variables are redacted from output by default. | @@ -626,6 +639,10 @@ MCP servers provide additional tools to the CLI agent. Configure persistent serv Local (stdio) servers that spawn inside the sandbox (see the `/sandbox` slash command) show a `connected (sandboxed)` status in `copilot mcp list` and `/mcp list`, since remote (HTTP/SSE) servers are never sandboxed. {% data reusables.copilot.experimental %} +`copilot mcp list` and `/mcp list` mark a disabled server with a `(disabled)` suffix in text output, or `"enabled": false` per server in `--json` output. `copilot mcp get` shows a `Status: Enabled`/`Disabled` line. + +Toggling `/sandbox` restarts only local (stdio) MCP servers, since they spawn inside the sandbox. Remote (HTTP/SSE) servers stay connected. + ### `copilot mcp` subcommand Use `copilot mcp` to manage MCP server configurations from the command line without starting an interactive session. @@ -898,6 +915,20 @@ Remote skills are projected alongside local skills and follow the same name-base When two plugins provide skills with the same name, both coexist using plugin-qualified invocation names such as `/my-plugin/search` and `/other-plugin/search`. The bare name routes to the higher-priority plugin. This applies to skills only; commands keep the standard tier-based deduplication, where the higher-priority source wins. +### Installing a skill non-interactively + +Use `copilot plugins install --skill` to install a skill from a file, URL, or directory without opening an interactive session: + +```bash +# Install for your user account (default scope) +copilot plugins install --skill ./my-skill/SKILL.md + +# Install into the current project (.github/skills; file or URL skills only) +copilot plugins install --skill --scope project ./my-skill/SKILL.md +``` + +Installing a directory registers it as a custom skill source rather than copying it. Installing a file or URL copies the skill's content into your personal or project skills directory. The equivalent interactive command is `/plugins install --skill [--project] `. For the full option reference, see [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-plugin-reference#copilot-plugins-install-options). + ### Commands (alternative skill format) Commands are an alternative to skills stored as individual `.md` files in `.claude/commands/`. The command name is derived from the filename. Command files use a simplified format (no `name` field required) and support `argument-hint`, `description`, `allowed-tools`, and `disable-model-invocation`. Commands have lower priority than skills with the same name. @@ -1180,10 +1211,10 @@ The runtime emits a hierarchical span tree for each agent interaction. Each tree Wraps the entire agent invocation: all LLM calls and tool executions for one user message. -* **Top-level sessions** use span kind `CLIENT` (remote service invocation) with `server.address` and `server.port`. -* **Subagent invocations** (for example, explore, task) use span kind `INTERNAL` (in-process) without server attributes. +* Both **top-level sessions** and **subagent invocations** (for example, explore, task) use span kind `INTERNAL` (in-process); provider-facing inference is represented by child `CLIENT` `chat` spans. +* **Top-level sessions** additionally carry `server.address` and `server.port`; subagent invocations do not. -| Attribute | Description | Span kind | +| Attribute | Description | Scope | |-----------|-------------|-----------| | `gen_ai.operation.name` | `invoke_agent` | Both | | `gen_ai.provider.name` | Provider (for example, `github`, `anthropic`) | Both | @@ -1202,8 +1233,8 @@ Wraps the entire agent invocation: all LLM calls and tool executions for one use | `github.copilot.turn_count` | Number of LLM round-trips | Both | | `github.copilot.cost` | Monetary cost | Both | | `github.copilot.aiu` | AI units consumed | Both | -| `server.address` | Server hostname | `CLIENT` only | -| `server.port` | Server port | `CLIENT` only | +| `server.address` | Server hostname | Top-level only | +| `server.port` | Server port | Top-level only | | `error.type` | Error class name (on error) | Both | | `gen_ai.input.messages` | Full input messages as JSON (content capture only) | Both | | `gen_ai.output.messages` | Full output messages as JSON (content capture only) | Both | @@ -1268,6 +1299,8 @@ One span per tool call. Span kind: `INTERNAL`. | `gen_ai.client.token.usage` | Histogram | tokens | Token counts by type (`input`/`output`) | | `gen_ai.client.operation.time_to_first_chunk` | Histogram | s | Time to receive first streaming chunk | | `gen_ai.client.operation.time_per_output_chunk` | Histogram | s | Inter-chunk latency after first chunk | +| `gen_ai.invoke_agent.inference_calls` | Histogram | `{inference_call}` | Number of model calls made during one agent invocation, counted at provider dispatch (failed and partial calls included; requests blocked before dispatch excluded). Dimension: `gen_ai.agent.name`. | +| `gen_ai.invoke_agent.tool_calls` | Histogram | `{tool_call}` | Number of client-side tool calls made during one agent invocation (failed and partial calls included; synthetic CLI tool lifecycles and provider-executed server-side tools excluded). Dimension: `gen_ai.agent.name`. | #### Vendor-specific metrics diff --git a/content/copilot/reference/copilot-cli-reference/cli-config-dir-reference.md b/content/copilot/reference/copilot-cli-reference/cli-config-dir-reference.md index 8a972f552b27..b59297485597 100644 --- a/content/copilot/reference/copilot-cli-reference/cli-config-dir-reference.md +++ b/content/copilot/reference/copilot-cli-reference/cli-config-dir-reference.md @@ -476,11 +476,16 @@ These settings apply across all your sessions and repositories. You can use the | `proxyKerberosServicePrincipal` | `string` | unset | Service principal name (SPN) for Kerberos/Negotiate proxy authentication, overriding the derived `HTTP/`. | | `proxyUrl` | `string` | unset | Proxy URL for HTTP(S) requests (for example, `http://proxy.corp.example:3128`). Overridden by the `HTTP_PROXY` or `HTTPS_PROXY` environment variables (any casing). | | `remote` | `"on"` \| `"off"` | `"on"` | Controls session syncing and remote access. Set to `"off"` to keep session data local only and disable remote control. Can also be set with `--remote` or `--no-remote`. | +| `renderHexColors` | `boolean` | `true` | Show six-digit hex color codes written as inline code (for example, `` `#FF0000` ``) as color swatches. | | `renderMarkdown` | `boolean` | `true` | Render Markdown in terminal output. | | `remoteExport` | `boolean` | `true` | Export sessions remotely when session sync is available. Set to `false` to opt out of remote export by default. The `remoteSessions` setting when set to `true`, or the `--remote` flag, still enables export and steering regardless of this setting. | | `respectGitignore` | `boolean` | `true` | Exclude gitignored files from the `@` file mention picker. When `false`, the picker includes files normally excluded by `.gitignore`. | +| `sandbox.gitAuth` | `boolean` | `false` | Inject Git credentials into the sandbox so commands running inside it can authenticate with Git. | +| `sandbox.ghAuth` | `boolean` | `false` | Inject {% data variables.product.prodname_cli %} (`gh`) credentials into the sandbox so commands running inside it can authenticate with the {% data variables.product.prodname_cli %}. | +| `sandbox.userPolicy.seatbelt.keychainAccess` | `boolean` | `false` | macOS only. Grant sandboxed commands access to the system keychain. Can also be toggled from the `/sandbox` dialog. | | `screenReader` | `boolean` | `false` | Enable screen reader optimizations. | | `scrollbar` | `boolean` | `true` | Show the scrollbar in scrollable views. Set to `false` to hide it and use the full terminal width. | +| `shellShortcut` | `boolean` | `false` | Let a lone `$` at the prompt open an interactive shell rooted at the session's working directory (activates only for a local, trusted, idle session on a real TTY). User- or managed-scoped only—not repo-overridable. | | `showTimestamps` | `boolean` | `true` | Show dim `HH:mm` timestamps next to user messages in the timeline. | | `showTipsOnStartup` | `boolean` | `true` | Show a random command tip when the CLI starts. | | `skillDirectories` | `string[]` | `[]` | Additional directories to search for custom skill definitions (in addition to `~/.copilot/skills/`). | @@ -488,7 +493,7 @@ These settings apply across all your sessions and repositories. You can use the | `stayInAutopilot` | `boolean` | `false` | Stay in autopilot mode after an autopilot task completes, instead of reverting to interactive mode. | | `storeTokenPlaintext` | `boolean` | `false` | Allow authentication tokens to be stored in plain text in `config.json` when no system keychain is available. | | `stream` | `boolean` | `true` | Enable streaming responses. | -| `streamerMode` | `boolean` | `false` | Hide preview model names and quota details. Useful when demonstrating {% data variables.copilot.copilot_cli_short %} or screen sharing. | +| `streamerMode` | `boolean` | `false` | Hide preview model names, quota details, prompt timestamps, and the update-available notice. Useful when demonstrating {% data variables.copilot.copilot_cli_short %} or screen sharing. | | `subagents.agents` | `object` | `{}` | Per-agent model configuration, keyed by agent name. Each value is an object with optional `model` (string), `effortLevel` (string), and `contextTier` (`"default"`, `"long_context"`, or `"inherit"`) fields. Set any field to `"inherit"` to use the parent session's value at dispatch time. Use the `/subagents` slash command to configure these settings interactively. | | `subagents.disabledSubagents` | `string[]` | `[]` | Agent names to prevent from being dispatched. Only the `rubber-duck` agent cannot be disabled via this setting. All other built-in agents—including `explore`, `task`, `code-review`, `general-purpose`, `research`, and `security-review`—can be disabled. | | `subagents.maxConcurrency` | `number` | plan-based | Maximum concurrent subagents for this session. Only honored for usage-based billing users; ignored for all other plans. Capped at `32`. See [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference#subagent-limits). | @@ -608,12 +613,53 @@ Only the following keys are supported in MDM managed settings. | Key | Description | |-----|-------------| +| `allowedMcpServers` | Allowlist of MCP servers users may load, matched by `serverUrl`, `serverCommand`, or `serverName`. Trusted first-party servers (for example, the built-in {% data variables.product.github %} MCP server) are always exempt. Leaving this key unset allows all non-default servers; an empty array denies all of them. See [Managed MCP server allow/deny list](#managed-mcp-server-allowdeny-list). | +| `deniedMcpServers` | Denylist of MCP servers that must never load, matched the same way as `allowedMcpServers`. A matching non-default server is blocked regardless of the allowlist—deny always wins. See [Managed MCP server allow/deny list](#managed-mcp-server-allowdeny-list). | | `enabledPlugins` | Enable or disable specific plugins | | `extraKnownMarketplaces` | Add trusted plugin marketplaces | | `model` | Set a default model for all users (overridden by the `--model` flag or a resumed-session model) | | `permissions` | Set managed permissions, including `disableBypassPermissionsMode` | -| `remoteControl` | Control whether sessions on this device can be controlled from other devices. `mode` is `"enabled"`, `"disabled"`, or `"requireSSO"` (requires `requiredSsoOrganizations` when set). | +| `remoteControl` | Control whether sessions on this device can be controlled from other devices. `mode` is `"enabled"`, `"disabled"`, or `"requireSSO"` (requires `githubDotComOrganizations` when set). | +| `shellShortcut` | Force-enable or force-disable the `$` interactive shell shortcut for all users. A managed value always overrides the user's own `shellShortcut` setting. | | `strictKnownMarketplaces` | Restrict plugins to known marketplaces | +| `telemetry` | Push baseline OpenTelemetry export configuration: `enabled`, `endpoint`, `protocol`, `headers`, `resourceAttributes`, `captureContent`, `lockCaptureContent`, and `serviceName`. See [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference#opentelemetry-monitoring). | + +> [!NOTE] +> When `remoteControl.mode` is `"requireSSO"`, list the allowed organizations in `remoteControl.githubDotComOrganizations`. The client must be SSO-authorized for at least one listed {% data variables.product.prodname_dotcom_the_website %} organization—it no longer needs to be authorized for all of them. + +## Managed MCP server allow/deny list + +Administrators can govern MCP servers directly through MDM managed settings, independent of the [enterprise MCP allowlist](/copilot/reference/copilot-cli-reference/cli-command-reference#enterprise-mcp-allowlist). + +Set `allowedMcpServers` and/or `deniedMcpServers` in a managed settings source: + +```json +{ + "allowedMcpServers": [ + { "serverUrl": "https://mcp.example.com/*" }, + { "serverCommand": ["npx", "-y", "@example/mcp-server"] } + ], + "deniedMcpServers": [ + { "serverName": "untrusted-server" } + ] +} +``` + +Each entry identifies a server by exactly one of the following matchers. + +| Matcher | Matches | Notes | +|---------|---------|-------| +| `serverUrl` | A remote (HTTP/SSE) server by URL | Supports `*` wildcards; scheme and host match case-insensitively, path case-sensitively. `${VAR}` references expand before matching. | +| `serverCommand` | A stdio server by its exact command and arguments, in order | `${VAR}` references expand before matching. | +| `serverName` | A server by its assigned label | Allowlist entries are restricted to `[A-Za-z0-9_-]+` (no wildcards); denylist entries accept any non-empty string. | + +Rules: + +* **Trusted first-party servers** (for example, the built-in {% data variables.product.github %} MCP server) are always exempt from both lists. +* **Unset `allowedMcpServers`** allows all non-default servers; an **empty array** blocks all of them (deny-all). +* **Unset or empty `deniedMcpServers`** blocks nothing. +* **Deny always wins**—a server matching `deniedMcpServers` is blocked even if it also matches `allowedMcpServers`. +* For remote servers, a match must come from a `serverUrl` entry; `serverName` only counts when no `serverUrl` entries exist. For stdio servers, a match must come from a `serverCommand` entry; `serverName` only counts when no `serverCommand` entries exist. ## Further reading diff --git a/content/copilot/reference/copilot-cli-reference/cli-plugin-reference.md b/content/copilot/reference/copilot-cli-reference/cli-plugin-reference.md index 94865a249d26..90f57339d622 100644 --- a/content/copilot/reference/copilot-cli-reference/cli-plugin-reference.md +++ b/content/copilot/reference/copilot-cli-reference/cli-plugin-reference.md @@ -30,10 +30,10 @@ You can use the following commands in the terminal to manage plugins for {% data | `copilot plugin update NAME` | Update a named plugin. Use `--all` to update all installed plugins at once. | | `copilot plugin enable NAME` | Enable a previously disabled plugin | | `copilot plugin disable NAME` | Disable a plugin without uninstalling it | -| `copilot plugin marketplace add SPECIFICATION` | Register a marketplace. Use `--name NAME` to set a custom local name. | +| `copilot plugin marketplace add SPECIFICATION` | Register a marketplace. The marketplace's own name, from its `marketplace.json` manifest, becomes its registration key—there is no option to set a custom local name. | | `copilot plugin marketplace list` | List registered marketplaces | | `copilot plugin marketplace browse NAME` | Browse marketplace plugins | -| `copilot plugin marketplace update NAME` | Re-fetch a marketplace's plugin catalog. Use `--all` to refresh every registered marketplace. | +| `copilot plugin marketplace update [NAME]` (alias `refresh`) | Re-fetch a marketplace's plugin catalog. Omit `NAME` to refresh the catalogs of every registered marketplace. | | `copilot plugin marketplace remove NAME` | Unregister a marketplace. Refused if plugins from the marketplace are still installed; pass `--force` to also uninstall those plugins. | Non-interactively, `copilot plugins enable NAME --plugin`, `copilot plugins disable NAME --plugin`, and `copilot plugins remove NAME --plugin` provide the same enable, disable, and uninstall operations. `--plugin` is the default kind and can be omitted for these three commands. See [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference#using-copilot-plugins-list) for the non-interactive `--mcp` and `--skill` kinds, which extend these commands to MCP servers and skills. @@ -48,6 +48,39 @@ Non-interactively, `copilot plugins enable NAME --plugin`, `copilot plugins disa | Git URL | `https://github.com/o/r.git` | Any Git URL | | Local path | `./my-plugin` or `/abs/path` | Local directory | +### `copilot plugins install` options + +In addition to installing a plugin from a specification, `copilot plugins install` can install an individual skill from a file, URL, or directory with `--skill`. A skill install isn't a plugin install and doesn't go through a marketplace—see [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference#skills-reference) for details on skills themselves. + +| Option | Description | +|------------------------|------------------------------------------------------------------------------------| +| `--plugin` | Install a plugin (default). | +| `--skill` | Install a skill from a local path or URL. | +| `--scope SCOPE` | For a file or URL `--skill` install: `user` (default) or `project`. `project` scopes the install to the current repository's `.github/skills` directory instead of your user account, and only applies to file or URL skill installs. | +| `--config-dir=DIRECTORY` | Path to the configuration directory. This option is deprecated. Use `COPILOT_HOME` instead. | + +Installing a directory registers it as a custom skill source rather than copying it; installing a file or URL copies the skill's content into your personal or project skills directory. + +MCP servers install from a policy-configured registry, which requires authentication and interactive secret entry. Use the `/plugins` dashboard (Online mode) or the `/mcp` slash command to add MCP servers instead of `copilot plugins install`. + +### `copilot plugins update` options + +| Option | Description | +|-----------|-----------------------------------------| +| `--all` | Update every installed plugin | + +### `copilot plugins marketplace` subcommands + +Built-in default marketplaces ship with the runtime and can't be removed. + +| Subcommand | Description | +|--------------------------|-------------------------------------------------------------------------------| +| `list [--json]` | List every registered marketplace, including built-in defaults | +| `add SOURCE` | Add a marketplace (`owner/repo`, `owner/repo#ref`, a URL, or a local path) | +| `remove NAME [--force]` | Remove a marketplace; `--force` also uninstalls plugins sourced from it | +| `browse NAME [--json]` | List the plugins offered by a marketplace's catalog | +| `update [NAME]` (alias `refresh`) | Refresh the plugin catalog for one marketplace, or all if `NAME` is omitted | + ## `plugin.json` All plugins consist of a plugin directory containing, at minimum, a manifest file named `plugin.json` located at the root of the plugin directory. See [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/plugins-creating). diff --git a/content/copilot/reference/hooks-reference.md b/content/copilot/reference/hooks-reference.md index f717c684ddf2..949c769be069 100644 --- a/content/copilot/reference/hooks-reference.md +++ b/content/copilot/reference/hooks-reference.md @@ -471,6 +471,7 @@ Tools with no Claude equivalent keep their runtime names. cwd: string; transcriptPath: string; stopReason: "end_turn"; + stop_hook_active: boolean; // true when this turn was already forced to continue by a prior "block" decision from this hook } ``` @@ -484,6 +485,7 @@ Tools with no Claude equivalent keep their runtime names. cwd: string; transcript_path: string; stop_reason: "end_turn"; + stop_hook_active: boolean; } ``` @@ -620,6 +622,9 @@ The `preToolUse` hook can control tool execution by writing a JSON object to std | `decision` | `"block"`, `"allow"` | `"block"` forces another agent turn using `reason` as the prompt. | | `reason` | string | Prompt for the next turn when `decision` is `"block"`. | +> [!NOTE] +> **Runaway guard.** After 8 consecutive `block` continuations, the CLI overrides the hook and ends the turn anyway, to prevent an unbounded loop. Use the `stop_hook_active` input field on `agentStop` to detect that this turn was already forced to continue, and self-limit before hitting the cap. + ## `postToolUse` output The `postToolUse` hook can modify the tool result or inject additional context for the model by writing a JSON object to stdout. diff --git a/src/content-pipelines/state/copilot-cli.sha b/src/content-pipelines/state/copilot-cli.sha index 878da12aecef..c87931bd7c46 100644 --- a/src/content-pipelines/state/copilot-cli.sha +++ b/src/content-pipelines/state/copilot-cli.sha @@ -1 +1 @@ -0a6e6489329eccb43213166dd5eb8621e877b1a5 +99bdacdd87aebaa6496754421e70b45485235cc8 From c42ace3ab7c0e5504c2e09892175733824701e61 Mon Sep 17 00:00:00 2001 From: hubwriter Date: Tue, 21 Jul 2026 10:33:40 +0000 Subject: [PATCH 11/17] Document stayInAutopilot setting for Copilot CLI autopilot mode (#62334) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- .../concepts/agents/copilot-cli/autopilot.md | 14 ++++++++++++++ .../cli-config-dir-reference.md | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/content/copilot/concepts/agents/copilot-cli/autopilot.md b/content/copilot/concepts/agents/copilot-cli/autopilot.md index b58385c622e7..febe8dc6d35b 100644 --- a/content/copilot/concepts/agents/copilot-cli/autopilot.md +++ b/content/copilot/concepts/agents/copilot-cli/autopilot.md @@ -59,6 +59,20 @@ When entering autopilot mode, if you have not already granted {% data variables. You will get the best results from autopilot mode if you enable all permissions. If you choose to continue with limited permissions, {% data variables.product.prodname_copilot_short %} will automatically deny any tool requests that require approval, which may prevent it from completing certain tasks. You can change your mind later and grant full permissions, during an autopilot session, by using the `/allow-all` command (or its alias `/yolo`). +## Staying in autopilot mode between tasks + +By default, autopilot mode applies only to the current task. Once {% data variables.product.prodname_copilot_short %} determines that the task is complete, {% data variables.copilot.copilot_cli_short %} automatically switches back to the standard interactive mode. To run another task in autopilot mode, press Shift+Tab and cycle through the available modes until you re-enter autopilot mode, then enter your next prompt. + +If you regularly run several tasks in autopilot mode, you can configure the CLI to stay in autopilot mode after each task completes, by enabling the `stayInAutopilot` setting. You can do this in either of the following ways: + +* During an interactive session, enter `/settings stayInAutopilot true`. +* Add `"stayInAutopilot": true` to your user configuration file (`~/.copilot/settings.json`). For more information, see [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-config-dir-reference#user-settings-copilotsettingsjson). + +When this setting is enabled, {% data variables.product.prodname_copilot_short %} remains in autopilot mode after a task completes, so the next prompt you enter is also handled in autopilot mode. You can switch back to interactive mode at any time by pressing Shift+Tab. + +> [!NOTE] +> This setting only controls which mode you are in _after_ a task completes. It does not cause {% data variables.product.prodname_copilot_short %} to keep working after it has decided the task is done. Autopilot still stops when the task is complete, when a problem occurs, when you press Ctrl+C, or when the continuation limit is reached. + ## Comparing autopilot mode, `--allow-all`, and `--no-ask-user` `--allow-all`, and its alias `--yolo`, are permissions-related options that you can pass to the `copilot` command when you start an interactive session. For a full list of available options, see [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference#command-line-options). diff --git a/content/copilot/reference/copilot-cli-reference/cli-config-dir-reference.md b/content/copilot/reference/copilot-cli-reference/cli-config-dir-reference.md index b59297485597..4ecc3cbe87e0 100644 --- a/content/copilot/reference/copilot-cli-reference/cli-config-dir-reference.md +++ b/content/copilot/reference/copilot-cli-reference/cli-config-dir-reference.md @@ -490,7 +490,7 @@ These settings apply across all your sessions and repositories. You can use the | `showTipsOnStartup` | `boolean` | `true` | Show a random command tip when the CLI starts. | | `skillDirectories` | `string[]` | `[]` | Additional directories to search for custom skill definitions (in addition to `~/.copilot/skills/`). | | `statusLine` | `object` | — | Custom status line display. `type`: must be `"command"`. `command`: path to an executable script that receives session JSON on stdin and prints status content to stdout. `padding`: optional number of left-padding spaces. | -| `stayInAutopilot` | `boolean` | `false` | Stay in autopilot mode after an autopilot task completes, instead of reverting to interactive mode. | +| `stayInAutopilot` | `boolean` | `false` | Remain in autopilot mode after each task completes. When enabled, the next prompt you enter after a task completes is also handled in autopilot mode. For more information, see [AUTOTITLE](/copilot/concepts/agents/copilot-cli/autopilot#staying-in-autopilot-mode-between-tasks). | | `storeTokenPlaintext` | `boolean` | `false` | Allow authentication tokens to be stored in plain text in `config.json` when no system keychain is available. | | `stream` | `boolean` | `true` | Enable streaming responses. | | `streamerMode` | `boolean` | `false` | Hide preview model names, quota details, prompt timestamps, and the update-available notice. Useful when demonstrating {% data variables.copilot.copilot_cli_short %} or screen sharing. | From 2d02e0d1880015daf4af2357fab701f9d35438b8 Mon Sep 17 00:00:00 2001 From: hubwriter Date: Tue, 21 Jul 2026 10:48:53 +0000 Subject: [PATCH 12/17] Fix formatting for copilot login command in CLI reference (#62374) --- .../reference/copilot-cli-reference/cli-command-reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/copilot/reference/copilot-cli-reference/cli-command-reference.md b/content/copilot/reference/copilot-cli-reference/cli-command-reference.md index 8080fd0a168f..32ac5df703ef 100644 --- a/content/copilot/reference/copilot-cli-reference/cli-command-reference.md +++ b/content/copilot/reference/copilot-cli-reference/cli-command-reference.md @@ -23,7 +23,7 @@ docsTeamMetrics: | `copilot help [TOPIC]` | Display help information. Help topics include: `billing`, `config`, `commands`, `environment`, `logging`, `monitoring`, `permissions`, and `providers`. | | `copilot init` | Initialize {% data variables.product.prodname_copilot_short %} custom instructions for this repository. | | `copilot login` | Authenticate with {% data variables.product.prodname_copilot_short %} via the OAuth device flow. Accepts `--host HOST` to specify the {% data variables.product.github %} host URL (default: `https://github.com`). | -| `copilot login` [OPTION] | Authenticate with {% data variables.product.prodname_copilot_short %} via the OAuth device flow. See [`copilot login` options](#copilot-login-options). | +| `copilot login [OPTION]` | Authenticate with {% data variables.product.prodname_copilot_short %} via the OAuth device flow. See [`copilot login` options](#copilot-login-options). | | `copilot mcp` | Manage MCP server configurations from the command line. | | `copilot plugin` | Manage plugins and plugin marketplaces. | | `copilot plugins list` | Non-interactively inspect every plugin, MCP server, skill, instruction source, and language server discovered for the current working directory—the same resources the in-CLI plugins dashboard shows. See [Using `copilot plugins list`](#using-copilot-plugins-list). | From 9dd02bdd6a3da01acca0e21eae27a06b7ad6fca1 Mon Sep 17 00:00:00 2001 From: "docs-engineering-bot[bot]" <285023527+docs-engineering-bot[bot]@users.noreply.github.com> Date: Tue, 21 Jul 2026 12:18:24 +0000 Subject: [PATCH 13/17] Delete orphaned files (2026-07-20-16-48) (#62359) Co-authored-by: docs-bot <77750099+docs-bot@users.noreply.github.com> Co-authored-by: Ben Ahmady <32935794+subatoi@users.noreply.github.com> Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com> --- .../images/help/code-quality/generate-fix.png | Bin 44178 -> 0 bytes .../code-quality/standard-findings-filters.png | Bin 45920 -> 0 bytes .../help/code-quality/user-pr-ai-findings.png | Bin 39564 -> 0 bytes .../code-quality/dismiss-irrelevant-findings.md | 7 ------- .../fix-findings-with-copilot-autofix.md | 3 --- .../code-quality/shared-workflow-preview.md | 1 - .../copilot/create-managed-settings.md | 3 --- 7 files changed, 14 deletions(-) delete mode 100644 assets/images/help/code-quality/generate-fix.png delete mode 100644 assets/images/help/code-quality/standard-findings-filters.png delete mode 100644 assets/images/help/code-quality/user-pr-ai-findings.png delete mode 100644 data/reusables/code-quality/dismiss-irrelevant-findings.md delete mode 100644 data/reusables/code-quality/fix-findings-with-copilot-autofix.md delete mode 100644 data/reusables/code-quality/shared-workflow-preview.md delete mode 100644 data/reusables/copilot/create-managed-settings.md diff --git a/assets/images/help/code-quality/generate-fix.png b/assets/images/help/code-quality/generate-fix.png deleted file mode 100644 index 4316fd7c6c115d27bf847c6a5744406d27cdcbea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44178 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 E)SXagn8!;ZP(g4)*`;O`@ zKtC_i@PcX+hKGkgaeSGO+HV=^Gtr!I-)nj8O-gmtfV!37BPopll)nxc2b*7>(c^sA zQWc~%8=HPu0obnjP07X#v9}v+ot(s2G3dco6{@i9K+U4Odg+TVZJ^IA&qa1Q_6{#h zrU{6?CO*zmf9M!-rzGubC+jb%GGJwni9(#ev_MLtq+D&HVf&%lz7ZvCw}OnmJLR0` zLd4l!np&GFOgJ~^njwd1zZZrlm*N$Tj`TYjRe6N_b{YZ zfx@!{A?FJ&zSWIR>hijRZ-yq|?~7bJQLLQ;;Kr8h63@7z(T>oPaiydG9Ut+z4s0%L z^I8_-P@v~?hS$=CUO1tI4S+Y`;>)y?)?%4wbO0Iayk@Mj2qgB*`fu)~-!z(k;$;IPKhclz zs9{J1+b@O>n3W9^TRGkV>311n;N5A(Kw=;bc4H@JA`T47TjsVruQu&P12m%&XWfK- zx0x}mrs~qIaXOd!^kFG+HTT2)L0)rt2dvJ>_;-G@?Aw0cZ`wIKJ7~=3P_8z+!kO;* z?%sOBZ|c@IWIxnspog^|HjiX-9d%FIX1EMwvMS{Yxdh=s?Dl;a$Aq(tz7P6XRH3%* z`-t{)+k5=SS@Zi$a+4yF>LSz!X)`^4H{9L_gyx7XSHg!!It& z8~sA@4MtqKq$?_{_6{z^9-5dOfO=HspO`w+c5Fst)my!nApSb#b-l);61;kjqrUIGHLy;67xj%CZun8 zZlnzY@BEck>Z`CR$2;ie^fLf;!|>Q=vCyRFH#lxUB`=*oPMtDi9(#=3ajgY@J9DeP z!4XD`v&@kIS>I8o9w#OXqAh`u_-C$G6b83;r3BtR0DUvKa!r0?M))#Z;<%XQ>Is;w zD|24L`*IY_{hXJgIgmlt^qC>Ahc&?;jnv={Uhia5omoAcY2F@xA-YF`Xcm7^9#CSe z8t1&#tT&%yb;@n#i$8bHAD|2Z^7hd%p-6(z?tu0Mpdtp4BG&Epw(wa^(B~v977JRw z1|<#mRqHggjK1%@ZqbsrRjxDml2gR&0Hu+wGdTb@zmI*K6TguH949WEfAfQ$+foTy zDB|FpTFJ$PS93!rMOk{ChSTxvWk;W2t12Y?0^F~55)+~K;y)#zZK7pg-)=ZNAIs3m z-^gm?VArek&}}i_uBpie>pt}8p^hWhL&yF+O3VqpTNA~XU&gZdbr!9AqPTu|_uUIm zt>S)E>Rsv-g}P9a3v<_DK+`UUu80;E_}l9O-90 zld~haa2=AZ#GMprhpd{YRX=Il2vy%362LLWo*fQAIeLET8gW!TK7J%9;(ecLuE?SlTLJ(mbT6V`R?A ze>o!_NRz)uDZ17dQ0+Gx)t7V;)hm#{eeFqFQaF>YiSEXC?aB*d{FMtOF8qH4p?y2b zLtls*q0+Vf_RP&OEeZ$i;Ga_TE&d!LU{Fxb|*xxRga0erCIn9_! z6KRK>o0LaGLnpz|yYn~4$Tts2A>wX(Y}_z)?MmM(4`?#}VD$Jxs7aG&}40MOiByoDySeQp_>C^9b;+m+f7OIA!06#mG|Yw9iO7XmH^_8d3K; z7eeCU^WQvsXJZ4YKwQjl7{{(*XeS_Gq9qoH2g^3eS)lrC*Ae`edWqYLDpPfPe((&G z((AoHpWUW45h|apY)I}MS9%9R`=~KdE|LHxgVM+ZorM)3*1cAu)fjmrtcgDli!6S$ zd)^}uvp~u2bsQ|jf73Mf9M2C9OwL~`i<6JOt z?=;=38!VKqzKQUi4QRSsq9iWG&;H^8>-|frA46PObAOGvlS{K7_T(w6*p+6a&m8iT zFMb=bIzU~PVkd%~^JPzOT)#f(l-9>1X96F;uVQ5d_we}XqLD;s?y-lh5@TlpUh%Zk zDXoQ2xy4A`ptkV<=kodJ8^-#Jn$rRl7dsw@YHITBX}T96h@1PGdetX=U5V{9-}~Op zEr?OWJX}SYjFk7c?;V%VFd-!zaGUwGA$ZJ&=hDL^B#J_!mD1MvU2Qv=g-c6I6J2_T zhD51#QX4l%qLU--cS-bK@-U89623mT8im&NSPA9(4D10B66D8mMXrOv%yKETbwm3q zS+8+@YwOax&wf@7uZ_h}b*1FR;zrUCerfF2NuCK_hnH6~I3LA>XdMCMej|x>K#{{Y9q}O?gpdu^}^*&_IaBqEqtfW*P_DEdMM|XIn!C5je(N;?16cih<;WPN@u^ zyrRSoMCe4@WwwFKpS57RJvgBn@lt)Pz1_X>E(a2$$?KD0Z)~Pwm89L&bw7FIULExI znbEK-d&537ECg4>Y`+i>?wH=JnHA%+3tuHh8e+DI%$+5}mqP+;jT4-zmS;KtX%sn5 z9D?5Ahi_Ab+t$A1JO2t_TXBoj7~Qk%1)wG*wLHx}xxeZ_%D57S@$yfmEG(u5T=M%$ zH|H$Q)2zC*f)?0tRbbO+mm+fKJUOXbwVojV{EwQ9QmQL^ z$XLJPPMM|+#zWiV?X<_B((axfl`dba!H|J-uUnXMthm;;{L!?k3i-Ora=R1f7}A&w zcrV}ez8wHtAi|`dPLyj-x*QE{^HKF|PW0l17*4GkOpjl2&ODg>-ZM?rhw_T`bcRH{ zVqrI|2l{(x;wib#$>ZbT7 z@Fy$>pjE<>v}k*2TJv|ivt{0-58LG%V-BJPn7q6d&dTUQk%@23tzR8Pd&||;Zs+C= zR@Q|Se#Fc7_e=J7TPR#ya#N`JSemY+=6`0X+LScI!n%PfAAkDUIgQ;lDWF_>#zkJs zS*NCG5-H3fj``fQ#y_#i2~v8zf|;D|9R5Sz&cFHf}Vr<#)5! zUwQRkHh+!R4{9IK+TKDrOPfy5^eP3zmmWBpMw<1eKRv$oc(qbYR724#QT}mkp84r| z?cZEIrW;qxt*=ILPSF_sJ#)NfuZ%o2A{;W#ZLq|P?WDe7 zZ(nY#?&ww+h%0`4YIj?N>yO3c5YZS1R0@g9 zl|*z%!%%oR)X2&wHosc;KjoldFf3`8#B9$)A{g2wn|mMJewUkP4CrY6GQj#x*)>%$ zr@QgRRomf=gsfQ!-fOqx#u zDz0w}+jK+Nq=p$j(@&td5_-CzkNe&qxqvsbL}e#)ip$tYyF-^7aE|yeali zkJ`_EqvQtF_;xx~%mO_f>%^`vaXSEKjWp}sX<6bUef(I0FC}HLQ^Hj(Y;7+=y?eJ{ zaa;Dp&qOc7d1|L+pf?m+CTN*;t0Q7M33AI#diN6N&)7g_KYF(5c3O=ITu6DT0~{#q zI??H^dcW(>ajD554jKzDOs!dM05@_f+QA*fWK@pLn>z0vfFsO-1W&Ah# zJZFEFteW?r$)K)uGP))sbM@WKIB>weuW~a^ER{oiABag$PQHt)^vPth!d!mc-Lhw4 zGBAaU7;S3HVKwh<62Ip@Ik(~{-djoaImceSnCQ^UTe=Id7cOtdvM|ksPP9iT< zwmJ$ik`u}&s#&I#k88|qY9f&+4oW^aNl)q|Ny;SP)&rj@KZOg%WnGL7eY?qs?G4_L z&%}!(t$FL=GtdJL+T+;R8DFI#QQdBNKT$5tIA6|Soh_P=u5ZA`L1zB1e(Xnst~0z5 zp2H;4dkn**tl_>PeKOuCfc1Jq`Iqq%U=v>7a2xRb|39E~5J`FF66!X4aJq=HAl!Q> z=-25eYMq!F07&OL`tSBWri~tCavxv*LnJjcz(_C(dvtwM>m4)RtNtLI4Ned*2*vv# zcsydF5Rk~oOHu5s7NY>nhT=>V`?vxwXl5~F*8)Dw(*|aUzP1{!2rn>CQ}U+)hCumC zXH<@m({@0%R%(;(B=7hkhtLM2{HTU2F#scHFsqQ3T1xs-?L@$ygE2z`CD~{N$s3b2 zE}rotw1k6j%`w%sCQ{AIgmOX*c)86?C~l&sL+P?fV@g6De7noab89Qb)qAnQp9$Xs zv=+WQ8@oOP*_X1`nK)7t^tfD%mRMpmcBf4(mQyPT7O;80W_v4{rMdj92Hv~*NKMd~ zRc8?S%A03*A^H3=-k*! z>6B0{*7C=oJ+&>Tp%7i2r7yrG$Un9sCPp)I(bo-$$cPK5Mo?FXeeS9fFcBFUbvhFg zR=q@!lanj)DB>sbt9|3!7^QcX=t`{DKV#e*>bpXIq8K*%9& zj-Uh~Wk*60z@d|4RW~yp7`W#05*+D|DiswFP;sR8q9=yaT%BBYFK6%5c?F0*5a9b2 z<}XsDxp;uBbCt0WUkMz2w+yqNKaZfzw_C!g9B#$mY=Q|j_Hrx8Zo z4+U*4^6-7dWsB8Q{5*FT-g-sw{&?)7k%k76iN$O$L$}WTaMXp1F|;4kl6^@aqEDvPJ;W#6gjHd zK|h0qSB}GKQpgT6mr+d-k}0 zE;xUXYnElK@JHr7TL*^+ZP%>t-$xk!@jEp`Hx)=cgfcLyB4QZSkQJ|T+64uqp}e0> zK6e5zO^+iQSBomn)#|j|vrO`mLqZRDWyrIMy|9~lo1beQLN$EfNyy|)cfA@Hk2r6S z8Jr-AZc(rO&>mO5-NG@ATikftFJtXpPEJ9}uqnFE&ZmXd#?i@<7uqCY3bKf|+h;5? zmKy|PE%W*pKB#))(|pT=Kq&HdbBkZn>R&$@V3@_T1|)I)!tB?pD{Ujb?8IK{>GF zN1~-aj>$0!RZ=d?TjrV{=Oxm~SZLcL$??Pu!~79Xe9x3!8ALoN_t00Aj4q=I6t7>s zAB~k!q~SOny|Z<9RRat*-)R*KWW(jQkBs1gqB)%P0ONa*tNql&j8{V3^WVufQx{}Cpaqnq zwAYu12L^)Ymo0{eRi(+RPX;rz;n@&#>TJZx<{-bI3v9}`g`eqzgAq4K zMS@J%75>8_uC-O0b>_h6!?zKUFicPdE_+sb5VZ9iXqUdNe5F0yY(X)!MNBzE0JOzfhp|NyvF8ArBqq zGC@iH^J%hMVaPxU)j8wTmEV5Lc`}Yl2)p5!l1P9Pr>5itxVpaJLPA&ouRtQ{?isKp zqrX%UJIasUO}TI1|Nit@{9n4H9dXEC{eJzQpPmGyf`9b}Ft}g8b$prv*aae%{!kFN z{O6xmo+IIyuavsFzce+HmkuyT(;LIQ5nbSdx^+Xo+a{j&Hy4_-74Q)%3dSBE7h*3U zcz^>uHBal2%^jT>o^itm|}S?Nx@0wg%RMdxP{3E-Cxz>y<03^bX2qv-8i zjo?^?ovKnvvzQs&I|>XzDxtiHi-6e+-QcZ+Rn@)P#h@Z}Ah@Dw|Ik2p%3-e$v1Q z;!99gJUg_Jp8kxl)?}NxkUAb0$HRA9QQ&2YXnHy~cPw=|_0v+Y&e|Hcw>Op3PwQHf zZ^URN9k6^`0NBf+k@h@eV2(`2%S`wfJ&R$EJ#lmf_5jnZvor`Ki<|7Vxej0%O@&4g za6E&Sv_$**Rr~lEr;P<`p#*$xZr#*;SBbqp1YsuQMgrB>VzXPH%y)F5;3HUf?#+R4 zw(09aQSAWY?4ONv1^Zm&2Mh3U!uQ1XXShKT|G%?c1KJY#bRB0Cn?t7*7F3P64S=;*Kq`(h3H={Scy&|IB!rQKXxP zkIz<&tvHXZ)MX}snx)m+%dEGDiv90w>(Kq|@oz&M(Cy5wcd}aNwjf4Qj?t49VlnC;g^s(x> zN3yfI*f&rF(neMvs5ZaA_uI|&FjjdKJK=qMbUMV=*7-yI^13}u6QxUxS^S>hcp_uA zlJ(q_OGIY14^zeo_PcYtL_pnFRn|aB$#UinEwx+z#*^%nXs%@lA$2cj=c0Reb$Y7nqL01R1|Y z<7rmN%_%vg0+Wc7)gDuo!V7u14Rn%6)DYW=nwfJ}V>vz?)mkenj+{hlxa1Y_#59vd zc{WYF7!2UzMIK`H@Q#-XOKWv$D^wZd9Q`j71BowQ~fH~aN9gXg}dW0?TkmJR8} ztnfP-C>V1H^F8hZPe3emOPbf|HK#|HsO>Zg;MX$OMU>y**gQ`-Xv<&!YdL^YCwbW( zIbs^`WC|WQj1}9i7v1H= z0thQb+a5!PmwQ+RGegFN%BBWy%gE~zb7tgh7FSq{wJJ%UeBBQ_8Zs)Qu&qojR{|q_ z#y7E%l2bzXcE_~KqfW{OuLY~PW{9F!&6P!}v7G$b4+W!u;!Ka$!<&$@4Lllgg8sWl z#SW5227Rw#X}19$um1Jsw}L68qYCyUQhU;Z)cgxEplHI<=YsQ)ppM$cA`|*q@l(hq z(3XhbpY8z6A%9s@muWv)JJAR!^v~uugTwn@95fk%x)3j3OvVA^4u9o>*Gz;KjuBZO zVHzoa$y@ovyjs{M>b}?R&+iByaD{a>lXp8)j$6+tfKD{@lkVwYl-<-J2rTJZL?p`( z-dRhQY=}Yt*^)oi7YDq9N4owp0o0W=!ei6-K|3$&`jkcP8LGO0i<(W)lUDSqU}rgHy+sr@qMd9tK& zi=cAQn|pJR&nN(131U(n;NBl3As!u~fzUqgVxWzsc7SJ+cvbaK2FP#N z1Pa#4&}B0yw@a_zd;oXP_Gx?6FCOOn>9lZd5WWEsPchMkk(M1Wc`9POh?RK#3%sPX?y%w_4jamRK)yZPLfMCL=9PAuoGt z9b;TK5+VDG_Sm3ac1}-elJnm~-If5fcnXjqPHh0AI+$lR7F)yf#8m#{IVrZvQi)G~ zZ%K;I{WAj#&*{esnj5*~mX?rl+Feb!vUgvNd5L9tq=8Fpf|>nSf!gS6=QPi(O=h*Y z_GPHcE0uP;MryRjyv@rqYS6JkM_f1e$#~|r{qz|3*!DyoQr;Oq)}xEd?=<+GJ@+XN zbYWTaq3%%NUTVr6rY)jzG0Xci7(d|lfh!aT&=COl(@#2E8ig&Fd7oScfr>HRwzq&v z_IdRVWit&7yYm7n5{O!#^gb`WNb(c+5uMFv$A~5--Cn0?8s;MK+Mj2(W=V!IfM%WTc@G2R1Hx|F$PHFc@(^W!E1s8}GxUarGLG0;3F_Ha=-$}b` z@!lhV6}K9$HnPa5RE?ZJX4a$bWyUE^r>>1s(SXg&@|U(qlR!#7LQ33G*m|i3kWX5A z&ND=?MW&#oK=5k5uEcc{wGz(}FQe@B!or@Zbx#kkg>cvA1Db}zgz<5!TQ=3I$h5JBD3-Gd9D#HEFFZGZ$*y1&39Ht2rxdAA6_jCzBIr!B<-U37~O!7XSGr^zr$4G?nuqt@_0vgP5 z{hWj@G4Ok)OZv(xyBC%$Eq8qTKc8{zJ;k%M1^}gKgH~pp64ssR>@R{igM|~){1XkX zZ9*QFmflaO^0A*|O$f28M@=NJs7vJQ`?cyqgg?JlB+ty;&wCZN?mlKMONzqA8JzEL ziC#KJd@6EBNK7i4J{2bgi=19VJ1P3f*;IY*qf_WeZG+bvgGJC_9Jzzg53K2fV586u zxAF$9YNw8zi5^ToGB+}Ci1Uw_?m|_{2mP-&_sYF^(9dxKkZ7;z9i3wdwiaW(YBhUkYZ-TZRzCsq6$>jtb%q=%FL;gZo@UM`SO=i}; z0YipgkuN7vv_0^mSMh%q_js>Tuo3L7iido8Ml2ckG6t{oRp-q#*=7V+ZGT_J*gY4-Vq6`8NRW z<8#069JBjPAAmWvROePwWE>O)yr58|ji!P^V*$oCB6ceBqmYmgorsgcU^d1^M#Nb6 z7mu*I^+B4EUlQA=E>B(Ga@Gu=d2@s|;Y0S=-4!o_j}kq_s?D5mG@An;hAMa{1cCyC8 z3k^gBr)n|nze+_*6n`8^$?_SPfHeGES&7wrXnpt*?!!z4(tYxfA5LyxNvgsbWErVg z{UxO2Zo|)5^iC_Iq2I1IhwIqS=ms818ocEdSIyNP4RC6M5s~;AjjB zP}AK_J@lPH#kTi@861x{eujKF$Jh4fNR4ySmP*vS2tqNlIUzs)&x^Mp3n)~+R(#Ri zuV0O@IruYO@4g#drDj+I&t~1WN-Hvv5$i+;dHh1H1+ir z_;)G!#9Y4oqyoO8q+(C3d8@n?yBVichSo~ z+y1Mgf42QsNB?U3&yN1p_MaX7E1U6NM-PAO_ltjwIVH-uv@;LJznL49Uc2|`{{Y%8 B%{Kr5 diff --git a/assets/images/help/code-quality/standard-findings-filters.png b/assets/images/help/code-quality/standard-findings-filters.png deleted file mode 100644 index 5662cbfb144501e8bfcda76344ddb5ca3a143de6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45920 zcmcG#byQqU(>OSTyUPTZ5Q2pv5Zs**+3?@71@8fX-vo&o zx&2~S(tn(%>gV>2w22JU2oDage*I790)Kau`)=nTB|rJtd{}k(#=jjt=c~Dhnr@S} zZ&;os6=j6LCGndl2NWB#n5Mculp$VnK!7qi5D@@a<-RWwZhqC>`8Agr2>2tNh3hw6 zO8dT-XZs)gE_8ogsT5d?7QbOtELQ3oK8tdZpMcBt_s|F5wb+yRNouM(=P#`yK$o!d zFb3wO;?^Z^E)94$5*7e(1)pSJX|pmr*@qAnUrOm>y+Sx0zgc{=vqGMfR^E;6pxOb| z&W+m$cai^RTCXw|>@$YfJAK~Nv2MQDvl$R-cTR%-bJv~+9-+YR> zKJLkUxVg<7?MW*#ct7z9mBM-JjBhKZ!>L{$0pI|`(5Nu_P4D{YHL0QZc4&5#fm1p* ziT>Lk+m!<+MYb&)HCl!~`^iQ=3rkCx)<1v#^tf!kd{?=kcuW%#d(N{cxIXVbR)Q;XGrjw+iFkN=ZYtUQD_iZ1@Z!4_ENWpoZ1n$5c=gTW;w|-a zD=cEhsI}JX%{ld8S<2&2Ma3-_%eWv?hP#`&!ve!gkt1b6Sp~v(r^QY~kK1{f$Z(1L zWdq~_8xLqm!ivVBf`MXe zv9flhbbcT6!J9!skqi#gq4omx?yFeQ?fIbh((nrheC8M0G9gax~>8oOXb!u~Gi+V{2E4B$S6l z0qF-M5UCus3j~X5%k9^yu|3RqX?n2E#K~j7=zDO7EbaJl>Rq5QRuJ@fz=@rt@{yF? z(Ar&*PKG$`BSg)}`&eoa0c9gs%McToje>;WFG_=l7I3~vY7`Do#i#C!n$jyqtY=zS zZvVc4SQcCwA@f3KC6|o! zlGPfp<;RBAh>o5Kc8K=aJ|?JNt3=K0V2gyD*q@2}2iwwewW zHAjQ-v!jrDE-I=U-sH6)cia;F>Su$5-(R}Ur-~TDmIu-p*-EjgU4AWG-cLOq3*1|Q z-Xh=v>G9Bh&-hCT(r%cV&q%Vc823Rs`jYSMKHHeTq}b1r^aFuZUnE@j$LwL{3~%2n zrRjDHBPvP+X*5t*S=7~R!$E@5w_&?B%@NJvY(Sr6{3PVQyJVjbJZV4u6*J3v>YrJY zvKwe_Om#Pj4*v|S__HIOkmXwRjEI3vN;Bz{DVJqpgW4kf{8Cu!`D93kbe zzJ{{y1V<#BhT^;cns(-MOk$f%eP5{AtUvwb_v`ZUdC{9qEWP+n0!`XaXDdBA)w@%r zJnBR*dL=5=VReW8A8v~x3C5IpJr07C#bJMDN`q%f-R601^H z`O-V6i28msZ}9WuXy}yN-h8~znO}yN!o7nH8VJt(Vn5;z@~>h}MjOFeJp}35%LItV zRKZZO?Hgx}RHVqmhwV&AL57zZ7B{L;qc5=Iv%L`v(0H-uXEvT1^t!*DmTF7Lw)2zd zA7rxx0Oi!6@jX;(zk^s~_UWlZGK5w*Iv=TovjaNF@6=7CzwW%tK>ntv z$z;PiwT`anv@6+2*JHUx;K05PL&)LF)aj08AQTvt$@>$G*ds~^-ugi=6JIBDzIU0tbEw-&k{t%!dpH z-X|*Pxy_&W2mp{HlO7`)`%*WfyIc5kH zw_B;=W0U8(?#`!xMmgOyy-$2LikcqhpR2nNP%>Vu8TxTzPBZu=^PO(;#J4iE%cTp zt<`};L4XuN`b&o(_}QDZyUn@7LhVaTBN)_Tcqax=pa}8fL7LOA?+Z!BA3EO^LCfFy zMK@c%I~3EPF_yky+TT00-NM!}TlYr*A`1PGKC|9pt+2mG`E`KDmk`*=)Ok4Dk{$It z?av~G6aZnk4Njt{i{EvZ{ZoNaRGdbfn6ybKIDfQM2H@E4+y$K?r^~-Gps3@|aPU zii96Pu*yO-8ppZFd`!F)yCWXMRA|JV!I$;9`TePDF$Lj=uwmjS!z@#_G)eeNCCnok zAqv4oqjIuUBf>z$DpaVSy)~d8pUTxb_;`OpuN}6c!}4-*+*q7UaT0Jw^+QXWr2Xh)jcL=KejGlH;0Oh z*(w&9hp@p%atjGRrpCs6lP2O8L|#R*2jq zBPFgvUg}a~u^nO8AR4M-9&vF_F^+w(IM;!XN%f+zLn-q$&fE3xhOf;OJtX5g+d1-_ z)&2anIfT`V`jU-&%>tE==^aV6dv~t;=T6d)<-xZiXFnz~jjJTm={=7(8z+SNPFR{r zsM5xNsVPW@7`eoGLuR?9j|o6(mYmD3l= zA1!(Xd@yo9NzHt2b$`;SV0}Y&5?FSG-NE06O9z7};ZR;TX~W9W(szzb&1S(!xy?3m zM5+khz`(NY8_lGE)%Gs=0Z%VSWQKT0b7U-(jP;;mJWq!Eq*n_q&^AR$jf|_~$Q>H* zqGshCHYBIym+vXcM`W|J>t3Ti3Bm(|xc8(S-T(=#bgA*>GY@9mL{)eyWi0sVkwEJY z-veyFh|sp!sVnU>I_#yU$wtE z>pZN#o=a%_l<}&jc>J`so>9v$*19t+x2etXPDy7o80(AW>$H-REIm5~pI zb@{tqrf*yh=QlEE3XzqBPQCSzBNqcd-0^CiV}cY4NquYL2K8!o#y0zN<&#a!QU177 zmOO133u|hoz6cH$+jM>&&9OT)Im|K?D`Ib{1%65r&zQJH>y>l_sY0c9v&6XUq%nOg_V zVo_?cLZ+8=k-kRBd$@!*6up5#J4VwR-e{TvC5|;H!WtBTh@zT1Uld+GUC=@|MWB2N z*_zqWCP;Z*-tbvxX!!>gD_3)gd58}tQe?m_vyHL;`HM0yWCZDQw)U61g6_3jb@$ul z*W3B0^52Z{yfvtglcsY*vKA1Ry!ag73n+bm3GCqMpI$LX!lFogFrq=iY9_$9>AjKr zLiiRP97XvqhFZXBr76TRgchZLp)tDgnG>4HSzth79+Gh6vMw67k!1sJ^5b46E*Y#bLLg1O-OHMoP z1RG|E_C;EHQ=QB*$p|%OcOwTD8bfYvAw3aE+C-s}jp;$Z+;j1FImT~UKg`(!C2Slu zha7_EuZDzfQ+KF2nd>%wsF|-)OJvPWAky)qwtCw5J4|?QZwm>cA!9kCHL|pNXy2sn zrwKH;RW>Fa3FA>0EPOGKKSjfP^?Z)F(dklnozV3>TtIV_vL3&zl$$asNL!41y3Pz$ zGoWn~e1g38gsgYeZ#@Y@$f3FAyfkBr$Ua2!EU7=MGaeEfMX0aXqfmF`2n<}3aw&sZ z4dgn%CeX*6j7wUhOIj4T)OZF79USkrqe8M6%COj@wRulvbIJh8L6(kt_FlIlVQj)G zmEEX*RvZ`z3&WDybKt+@70;TPG{Wo1CuHu87Ty{$ATHLh zMGLMbwxS}*8+C}$T|&y~jT6XZxX+3B96) z>6MBQpb{Hxu!G^CNWC|ZUJoB!*yy&;kU&D;+2Z1anRxtERc9wbhw|-`>ZcwtW=Po) zIiKfVQHP9bhTqCY>+Oe3p7qIhjcfKEP=0i_7$FQgwOHO$pG zXxl)moR@8DY&`u$jOKUUG37MbK;;<>a&G$yrk-@KcZ7dqsvu|^0ngkxD;e7B(1|a+ zl#KcW5ptT6R^a&Y%d}T-UD6)6mOXKvLD(#Wm|qw+q<#NU`2`7$?Ir=zbB_*R{94S~ zJ}U`hSroEUDSgH57wK>`EOuA>Eb8{N2?}HyG4i)8BM8te;g$(q5=qJ^>%8j0sBo(*@7$8b$Mdw(~R6YS+=-d z8!oU#1j~E_F*v-ZGS`1gXq;5$y5Rgxr~Lxe^x8VJ!G z-C~b(OpgwUM|6C@l{R-JzX-C*)1uNIpw@8BZO(~w;n0bb*4GODPG;&!nUN?zu9MA7 zeFY3q)kn?TMYaa9W|v#JrVc?IL!iVpZQ9dOOY(x&fHKcP-BhMoO`9LJeMpf)UY9z2 z{wEJtVIqmpa>$Cw9Mx##9Oir7TfN>l6ucv;KCgS(qx9}pwInJ&&wkgA{OeG|mDUo( zO;)jx+U+@jUeTu7Lm)~q9srKu#gZ~(@+AN~8=o_@z-PHoM)LU_`jr781iK#WvUzt# zPq03#Eu?!UZZ~4OUTrV;2~%D`7hTM_F6i0qhr}|%Yu!{5sk|F4YP4N#GC^JmS&qeV zblYp&-Rnf8i4++Vr82~DHRCXH{bJ|YV0leh*5idw)1R%8BLj|Yt!Q+Ms;Y*htZH1C z`ceVpXf|i>mz4yMBsI~Y#ZN7%`5DsaF`U(>Cr&0pv2Ysc}Q4x z_ccUwSsj_Fq1xx@ASmtIj!BmH33Rp2N$)X%9UpR-26f6CT=^{eRRc(T7u+wykPna_+{JhIVj2R^kxM_Tnz# zG8SPRy~d7LuT_SPR4kPdhr6-cb&F9VgiI!p)c8?Yg)i)4b23b?lRQl98uol9-lHJ` zuM_8#F|y%WHks+wnpNFK`NWOs7->>GECQ25rJxFk+2#o zg^4rpKU&XOQtU{jBcPD8f*iN?KAO2)pYM}$D3E!XB%KoncUC3+)+jV9_@HEHr zc@sA|F&fC2N&<$*+2Y;RXYME;lh~%|grHPFgb6}6y9<)z*MsMhqF8H$lG%+mv!5~0 zH5nI1#~5CZT|6%OU?5Ta-FU&uXqs;UNlr+w>^~L9fqE2Ih4Z%VY{wMSnORTsxv;qB z3XPW8S;dA`%QoOFwhG6}HuxZ1t;Gr{+uAP;Elvpf^2P8X&G&KIzLvOCe{LQ1VZz4X zH`~7ugF#dwW9-0=Wmp?M=O(MkBWvr+x8Z092*8eKH?A031LCwZgoUxziS{+_f)OZ= zAlHQg4eRUh_sTYnP~b+wzQ07Z^=8D0FcTq|s5?9+urBau?+eQ){wgM@%={uLSMGVc z7krY2qz%Zik1>!O$!`ku(U*?%U^C)iT+;2 zzW!dt8vYoAF};)8+SK@2?Pt7un4B{GRf?@h-sF#f!9L4JeR;R6IKwDTBEgpZc(^zA z1u>me7TM7mDH0qVs0)LEUj4XT@||j4H;`>@e7jvyJal;XK>dCm)q|{9R5caKVLiZ` zUg!&4JKGkX%TfCFX15f}XD_Vy1Q8c|BG~sLVrk1gX(Pb-878SqIgrRQ8aYTFL+&QsdjXq4YYQ$}3S)bC|ZcWfMY3cVTZe9p0q=_N5&Y9$3?=r%3Ou z6BjF`p;AJ8u2)}or34XwZFa8}0rUq-&Sy4!aOiiO4h`apIET(3r5!k1n~h{2YF+{n zBYNEK;{^~<&{y`^SfpFMyQ~Spwuejvm`-i>-G{7eBnT)iuabV+tHNkZo#4kz1D)8m;aYh5&G8?$14v)!3wj+;AZPf%GjIm-!od&ry^$iqdj)3^dNuYeF?7NP zHS;JLg<>!oW#Sj~o8HwJAm>t?B;tzVUGa!yR=dsbhki%+f_(P#Fk1ecBzFP0F#L`;vhc z1fc2IB;}HgkTV7L1ivcRK%S38=SQT-ljFUgqKdslj@O}A@wW-q{Ld9vKf1Ue)HHEE zWOLCMElnU%u)vKWNB;f|PdnIA@g?FlLde3zi=3rg`CU@5rS@zu>ns-e8-d@3AU4ZL z9umug*9}%HfNyd7>WSi!^d#CL|FR3hKa`n-V>zP5_20>#eh2qEXBowm$u@fn_!7I5bp67nr2h0{$g z|1Jp)M1##T4i0R;`k_V%l(495i;Xm3t}8tu(cLu=ahCCHfjdywcKJN;L}$Xqub}8} zd9P-&zQ#vBI()uB;++hW5k3E`kcFMWn3=LxK%r3y%~}gkP>@kPG)IOnKeP}uq)0ju zSLuKy*Pew!=vau^kLXO^mCU5G*%>Wa4TEQp=k~-aaib@=BDaZl(>417zK%c%vD$FV zR@npFiR!2KDR=GZ)}|_{e+>X0?A1i_ZQCJF!<@TJIJtTJq`I_JOpFPnW|!q%OG4>o z;VUgs24Oqzpq;Q;_x#SIt?aL{A!4vCvR$8IxtUk(N84qi<{=l`h5&3}VAHF!uZ<2*Y_{(9+G%!HW<=kSD;E_G$hC9TbtYX(fr={&TBJ z|HVe=U#*XPWv%O`w40#J3IR<$cVgpYe~PP}JGsZFY5F!f{Gg~QxZAT98>!~22$L*+ zIIHypY113$vH=n%jQobsWa9}z-&J*81;r0s1BLk7zBcJ2GImisn4a1b({$NdW=k8G zBIp_IR}n|vwk1$8kuS@$1ETYFAF)}068xT@dho!41E2Wj&Z&EqKW0jEAyxU|@ES{!vy=qKIWX7^J~* z&fR<1k`dT|X1u868*WB&C3kwKxNo15g6} zNA+vQmr6BCA_i?2XH?b?JLmLBSozd-8C(R&r@dLr8)OW}s{BEFfkTlo%V;2TsuTcC zc(xr8j_kg*HQ}_ufywqq2b2~xe{l@Wx9Ipn1n`K($sgK=lxH{UOQD4CvQVM1>w2)5 z_kxWOJZ@mMce~)_RdJ-*;1;SVFtc4$n8rH+4=V&qbZ60L7724CQ}pzi06TEN8z~SH&azlt{KOO^O{y|O zHGTe6Qm%pNTzD$P$~fixMUB@EY7wbP?qJi4TB*ryI`e6?l$2i_-#^Yg!Mh?4iD_ri zLJcFFIAVzDE5OArZJ9XUt|ZMlgzfO$TACJ#*&t)xx_FrGPSmz8+5D)OFiuB_h5FY> zYyPU@&B#+63gJpcz=DYwS!l5W2=e_@jXdfATTbdU-v$?kB@`7L@cY}3Gd~)8co}%Ms z?a`;yWocDS9zY4(3N`n4?@FLq_EQDRA-rgwxRe{i&aZ~r@W3d%MAiCX8Y^|x%*H`B zveT5u%Hm98Kt4JHwa@;b{mozaotk9d(q=lF@M3c~Ey!Ri**(0gM2ZZ+Y}dm zaToaKOocvW)tIYGITW~#B%O6Ry4(J+OK)yzy~1O=_-rBgnHW2K`Q@9DYKnxTL}Nkvks~9LU*vV5Xc2Rh-aZ5{uPahpIte0SUDOLG$+dTC#0GGc zJz)g*Pv}GK^hTy6Fkwc{06{JSfPrlM(T^17~I40qA>eK#i-VRp)q<+-*l z_%`u52s_oXE#k;VGsil_z@j3#3>hJ0MKa9+sTk08A4a-ahfIq$YR&qPN(#0;o`a_s zd4mcX(&H#|$Py)Bpx!dafY;nTT@G37&myYhFZ3LB9FVa5sF?UZ_?hqUnnZ@T+e4l_ zg(O7(q612VIjFxJ<}@~*I;oo7VA1MF#@e+oJt-x~HE1sM$}6gz>-m%%921bMYBu97 zP(=ZhFshZpwk(GlrO<{fLuZ@tV)(}Px4vHrBL3sF4MQhqKR|sc)F_Cq$?Yd3HzP* zB_w@JtrfVJRuM_16fA*H^C$6rvh+TG!}*{x8c5Q*FVwcq{gI_3!+Umg>1Mov=xR^I zlZG$fP7_7gIt#kOlR>mvv$@uh(N`#RIv+t%yR|FOkq2kv>2||8x%c5-q4)KKR>J1F z^b`Eu@Z(vB#U{kRMmj5BCSGt$L=cRzhg79^uErl`LaHknq~+6SAdl>Zq1R)imQr_7 zf)Bn@yPfrpzH;mK%fZ0lIP6*Yh8OAq#RR>^T8_jJrh85@Ar9L@18bni??=+v9aVjQ zOq!JINCZhY&Uhe|E4HKLalqTdhrb#yg@oz%Fr$y5fr8iSMPag~2YLHCnR`ax%6wVz zz}^|@8A?LUp>`%Zf<@ItXrQmZ)R%M_WneMDS|d^g>CmzyOi;LJzLL}}Ki{H;%x$&+ z4lSgNMP$x2cGDlyRILev4duCCJ zwd)%c5Kt=oo99IywH|Sv&=m2(Ln^(~(Omh9H2qx}3=rWn#To@ww;7}bosG*LrDEZm zuF{aV)Fpf}qYr_&Ay z!KW&^MnezS{5*ERae7NzqqRJX?oZRUi2PyE~hV=U?T2k#p-&n;byVFSU8te`YeI>iy!uJ=2w8%xHvC1fhB zkbDWqnXOjD#Ettbg}khBgWaAmtbj;&Ata+#oYmL-HKfR0Ke1{)hKYVVILfr6{L#e! z97&8%BE)LcnQ&5$o{thz7zwpV5kq0)o;ikS9vW7T~jE?=+JjYQyyxwZbQ3gcV z#m1+}S(TS8&`>Hq8?Hv>NaJ_ej zWflKu%2rqbe(>x^@5FRv6^kG5+d-TUPPJTcSNd&7qTa*(N>(&WNpOXe1;0PWotNt@ zWv0uVb?fP^pYv63ta=2wh;dxWGtwAWG|+M|sZlwp&+fip-TEHiDX)Dl*{X5@j(=ss zQMNt|ToG=fXVC1)R%wJu@}lO|<-weh2IyuQY{a8l`J?gR0}kfjLqJQGw!R2#9KvGb zX*<*>J*q+A&Q(;O7?Wg6&N5wx&lm|yx@DKx42T3tiNtAI*g#jE00PMbzuQxl-meV2 zqKhLL)k6prbjHa)n14W)Med%Q7G<~1!_TNm56}++Q=;tsiGHp-i&h1``9NniAs9C< zW{6RYiWTLUHXFYzr%bH#$u>NtYPdSe!md?=*#H%Z(Mkofvkcw)4vU1?swNvLU2#pjc1h^^2I?a`*v)WAroX!0b)Hpj3*kEM zw5tVKAVovwjT|20pDqV}FEXsWo@z-+?r`B=6`!Xk-O#c;`Ks-B5GvL7rHq~y0=42a zzet`=Syp`7;(JnHQ6eMtI#%xzd4#$W_lGdN{)g!O4Y!XQ{8+X^gQw{LzKh&hGy5IM z_;oL2^=!$OLun&Huf7>C2|u>?JN;t&)C&2zRbI+-N6eca@62{Ru6d>OxZ(FEojXu) z@z+o$BT&Gn%gU}A(^d-Wuk=9fNHzd-F%{CPdqKQYmJ#6^j)h28YzfxN3$cE-0>$OU ztRgj{l;$yf?P}L-1=?kLJna;$R4wV|6f5*krCeX|1USD2`)5-4R#m}^DKg~uMDF&q zl&8(iuEP`W>(tWmR2IEGcAhXiwGD)>gnVe{q%XSYUz*pPWQ50*jdv7Mohs3uxKyw2 zD<95=9~-_@Bb|^bo4))TW8oD84fm)0hrYR(yvzY&%x>WjgkBSaX=`F}8NIoDIyUWc zI%!@AI)SmBXx~M<1}c2BjeVwwi7hKJ=i;e_8k&n3EHhuiRYCXuPJZy+rhhk22Kzb+UaNyCdr0Q%3-=G8^L1!i8t+9W>s#e^JB6Dn0G7Ky=N zwME7qiW&TgR$$*i;@#~Htq-K|P`|Cf*50lauTb7d3&n+;aDZLHzVVdYu<@TAF91R* zOLGy0ZTLno$<>Gl&S24XJVyN56D@j<$;qdqbJJ%cE57eBMPuhR;1yc#r$)F)y%KBM z%s)^h>2{V$P~e3sLC~zXAna2sfuFhXGUXvspR)@p+c>43OL5~Nc&Y#pXE@C*cr-Fn zOeR-$Z|>xFdvO^9Y?Oq7X%5jG1N@|gfAw0Ag z3h}IGc26ExxHhu3_x>gG{#HrkHh`V)Zb9TOt?J2O<>KCf48&nbPB<(h196-c#oGTz z)p6(Lvs|mKAY;PA7$F3{9OHf?&yDI-o_DJ7@;2dKVY)e2&$!m>#>`hKP63|)&n0A; z3atpkO7*KltbH{Hh*`Am;b#{V3ue>tN=`P2uFwA-Q=|ew0tL3 zk2S<{_aCE*Dx{%*?56r9|8@3vcg~cV#aTgm0DH7J#1SJ4Z+{M$^EyPV^q|bP16k;D&!lXg zn?ETYps@wFacOfGvne3Ow!t_Y3?H90X&p2*tzW+P6xa}%zl2xHYL39Gi+SZ>B0vC6 zG1M0bfc&W={?iPG007G{j4e_C00mxE>i|LiU2=?w0suq`l=S(#TplNd166Wg*MI$8 zyNm@dc#bh0wb8OK-tFQ7c71)F=qR;7004mCWy~}^O-m*7+L`ZOwBUX~A_^stN@U*n zyky7#0Q~-nXw-zQ_T!t!{(FNTA;8Iq=PJ!QDzypl;^yC2%a-h^UMQ_q>H2*rH+&O) zLydx$7`7_uvy&eFRcb-?*umhk=em8Ue<{A2J;BIm}(;zwf=iP8xUQy1LJ+4JCS7 zNE95d`!Bim_pX(nv47nk%sGhyPU>|G)PNXy7dS4gasf{~yi&6#M`C_P=la zkLI*W?*{GKo3&rVi}yCS57lPo|AnyP`@0#N^PaJ;o3ssVbWk4aA=b0OEA*8Af{q24 z&&*>MXxcEXZZy!L*C_J2r1qAT{RQolKg7Zqf>_xn=X~CAdAZ;Eq~v}AsA7Yfe>UBa zNspQ7_NV8 z&{T(O4OCqYym3KD)v7pLDStQWP6B@y^TPoTJPOxeIQ%0aD3liR=l}mo@IO62z5n$5 zs~BjYe^laMAtQu9|FRVgwEY+R?;8tn5QY7|UGN+J^VR?K{Aqspnz=VKkw^~2LxSC% za&m_1^fytBNzrIdq%P%V2&f=F2NS_<6An;>znGOF&;LP*3|}JP@CBv}`SSq4_~)bk zS+KtiM4xC zhyeg15Dx|*%Id+VK^3g;OLu|hCnyAO7WD_h25lO@7w!nM$8iZf+g|yUX1!|reu&p8 zP2~H_#VnsVpF3`!YoYto=xdW^k#8OvJU&a&j8c+hZPHEnj*|BTUd1#d92rz_WM5!_ z^yr3J9;Mxf z1|K=k3}+0Za)JgI#?XW5wv%56;W?@V zY~YJpy>>(&W`>Deu2V+3S$CQ-hZW=;CTX`E1&lw#EJFZ@zVUH!j=LA>h^V-wI*rB; z?F@5nd%`Z8dvk7w#1%*Tx0jC*30y3!tokz;F==UZDgO2h*`p5o!D;j*Ul^>gcmL=~ zUbx5E)^3g6q^d4Z6zWfNb$>g&n%m!>P)c{$Zc%)Z-q3e~5Y2P1Q_btQ^7T9*u1N-X z5&L6128Jjis%ZY^~}Wp80b z8XdaQLJ@~b@V~fSn)FMo37nz6xw>SH#Gb4%yo|et4 z%z0-4%{lt^(UfjcChSaBX^y{*8oEVi%16@;SZwl0O-OqK6@#u&e~3yy;C!2wa3{sr zeoUCRo_?vHL~(&fNLa+`@YvQNr}j-Lh5Ph4K5x4neOK!8WWvU*@4*RTflDn^bD_T7 zw|g!p{>3l&;>|n0vN_&ry|!nOoXxow7*IR7WsF8Rv#_oEy*zkM`~?d!W@hg4P^8Xx zZF8v%OiTo4f4p1FTgU5LTxxVM8u$+KFj^gF$os70>iSfxAynL+jhx3W@zs-Iqb5PO zhxSkJ3CDceJAaH3Rb=@{^ z*6sMVQtg3u%MGIR(3r&#jxDXN-GxTJ&(ca(ydZ}8k%-YFiQW3v?W^}|-GkR=u7{yN ziC=Ipa7el-x8RYvW%gpUo}SbR*VugHLo9Yh($UZ-Yz8s>UZn4E*Lrbx@||TGbw>UV znyHt*s}g(2*vV(lfFK-jnsJqzbC4T-P2R)6n@pdUS9{m@)DK*lEpAJ`6?aAZ3ytiY zp4*92<0}VVGDLghoEF1b;_h`v@BA)N4_j(G?SB+b*i=)5K7UpTcQYl#oazD;J_>h6 zkV>9**zbTC;nfcEqoy9x9D-u&qZee`xLfE=^O z=Ig1mc=fspo2kRhAS$Nfs?oz#Ot)Wn*SFm_6BB$@NIg7=Z}=BBjXE1w9@ z!(had9h-L-IvP@xmdi2Hf@EVWZH@h!_eZ3)3uOzOo+c|1@=2xj`-`aUStnj1jb@#n zKJfEjV#9s9K_fY-tx2H|6Th z35Y^YLY58o5(Zi|?=YISs&T)yprpM!&iGDB4i3FV4%jalZC*LsvJ!)-&coIab7 zkJFY%SDEkM#tyA@D`6nw>?O^){IC%yXLd1env`Sbvb_mD44L!>iPGZXJ{~vC)jR#- z>b;nu^0||{;BXXzncf7hhxl>roM7sN+Hsl>{&=FNt@4ahx9TeWNUyoMS!bd_``MjI z+noHX5vf@vKPRoL5+=^g^C`mF@{KXO+#-)Ds-W`6BXlY~1IFRER-Q*IGPeTfU*C(i zSOY_tK|cGbO9kfT8O5>ZE! zN!Gz7;r7<rruxjiGry#{}ETrYo?U14E*+kU=r%QeP!!w~|nA z=rO_@wn{1aJh|e@9IkT_v7(fC@uT9hMAJOIo~RdPWGsdtMDpYfqFdbG)Zlko;Q8V! z?#(y062Ty;yCvBULVmUe^`2~$kS%^K;atD_%SW72F5xvL6X4rV(nQc51u%@{WoL7yO}Np7zSlMvt-|{X1&ZtO3C3H#gvj{; z5F79MOIs9K_DqHG15Hgb!O=~w)}s>9kWz1(J}%d`uV{AluX^IqqIpq-iB3WikwLQr zlkKs!Js$!gKxv>qUMQ@v)_y@c(<0Nad^vydrTP5XlS=RsDHt)OWpxU%DkMRTl@B3^ z%JvwH7q$2zsN9#*`9A}%eid|m&D*Rg@wJ&JqwyL**(^Cv0N zt+A%mnttUN!rnL67v49=gbQvTKYw{BZQ@H0%O%q@bb81iLi8L+27ulYu&8UJceK{o zSkq&>uuTH6vTuMWt7jf0O#d!)MNA#+tj)c-G?9J4?v;9{iB^lL@3@aUrDumJ!@~00 zF}urER&UBn)(RLgZRYt*B!z9prdnLB$G(-Fo})BTvN)-~&UV@WAQnZObD6#V#7o%_ zqtuf;tBT~~)77W(^71@|6=)=pFHM3*Z8>v)%asFZ?b9g z9<>bGwSBM8=5cwTndW)UwoxB@791AX^aKmJ|X6#6Sf2|o;)$-a*MKGbKuvm zXr)_urvb%*;U0rNFG?SxT(^pemig(XwfFVJClAYE{OzD?N ztl7mlUGKJjFnpFJTkflu4{lK%8ti0E!hx542NVfiw#!3R^~AgRL$sk;K<2}XpFO*0 zYKeY{z8_fx4*|%-)NB(8OF;88ek}_wJ zdRJU!#`56j zIMfM}9Y6tRhpZC8?j0q#S$2@l4A6bN(O;UzXG)&(g%zfJd&VeY z<#+aT!L;YX)j7v`OSdv4%!FXTq&a<9kgz?h!)X()1~vOhda``gPV1q&8hJ50`x&|< zkfX#x017o%Y#NFCL0lUGc@)8?$D7*P-eBF*;o#Algvtqm6Q&#&j7p=U_PN=~A@c7@ zqN9vH>4`6;J{HruKj|JctNYQ{Ez6Jh(rD!@Qp-(yC6ST|fYsa{KN)Y&wl#CKs}C`_g_Q-%jRLzz%~)1dkOfWQvS)9)ax@Qm=MM7y`HQ|yKY!B` z4C>y*&Q|ooPBx-|gvOTT`JhDQL&BJ!YJJaeYEA@1_GEbI&}W=Tc9HAkoh2qOebRLO z_}emdFDc-bxqXr-4Zu3!#XPdTy>RpU(qGI9lXc_#X;QD_tTWrr{R)7!kZSyqPOsB) zU>aTL^ZzilrUa2fu4WJtEVS0Av_%&HYR9#xwd>ER!ZFrH+2G(xS6x{l4f|dOFzt71 zk-&~DHs*J7x7C5RX%!-X*3H^^B|0|0y9bCj1&^Y~Pzq(r`kn{e|6jbl1yEdDyRO?f zfesc3O(3{y6Cglv2n37Z4vhqN2ri8Wceh|6xVts(9xS-KyPrpW+#n)s_vwA1+ z%~Il~c2CF(KbhfWq130&x~5YWy^O(t_6wD3`X~QA8EmqeO_)Sm(j_xZhxJQ*=-J^!-hu@_h4Ct&nkU!Mqf;fZavb}LQs_uLcrZQ zea>?BOpQSF!B#$>bgp`{+Q@!{kP}N<^}^>v;b7XRVQI&pgBuYx9Kr{>}F-MI~mmnP8!lNEDMi-pm&@APj2~2v$U(tm>_`s%}(= z>Ymn2yS+z+B%FQv{t3@w?9gUQW9Noal2Qf+gR6Z;fzb)9?&g=Juu0sIkEA{!tE~ znjd@{JW*1!u&@A5&ZVgJ0f3%}Hxlp^Vo3DWe@_o7EV%Y?t^LQM6N?|R2?-E^E2NY6 zt3tmVth+)4uivKONlR~AyPVPv3UJyPvY&SJ#U{C$_u^?FAw8QN1b`DnrD<&0b#J;4 zpA|H{(RZt0{n@D1M@wWQDCl;De*KNU`|IxO#P3eI)c`8a@#Ca{{6ylsF5Ko9o1b4& z;lW1wUDba3(yU01;hsqU-u#cIoV88+4Z54X)m5s`3#5E*K4+U2Ygaa?N1au@gMDK$1J{sdhSN_-MTyYP?LZ4?!|GG>@vTj-WWT`(A0kXxu3FtZ|YZm z9oqK~EP#;rI=AYyT>2P!jkJ`se6+s|5m28XVH8iC=zqt0+Zts;#W?mf!<=Hx$ACh& z8kjtR8gNJr&DbMfM?kfq!wrCxGxPkmV&xg)@&M^VeR{wo6P26qM1`dE`^hi1h0%4A zk9wbXu~Xn+D4&c%Jqpnkk@C0L{t5cVVJ%}&AO6np_ zwO};suu%Hg<`|dvc|IYdk!0rmVfzVc^}%I$7ryYCVIY=B50BdEe`=9|E$G|0k63 z-F#T!q`a@(C2<*>Wa-ZCU7ZRjW+>pZe5OZ}`vT6Bv4I&ojC1lb4N)qmocG8eJS>L{ zg_1Fi-uy{pXqn0QhGd2wP#FtM0^y`<`s8=x?H;4kZ!pGjUm-p&z2qiu%+cp?9EX0tbpq+b^@1H7YIM*rEs3#j|))=_^Yt7=s1= z>JuE`NdHy>zgrvI!B{zomdmYoxAqPQE4_?ivG%S2#2F_S8=*fxUZ`Hh40U2zC2P`s z>^v+&-}dX}p70fKBs%8Fa9*vT#k>8?YgU*ClyHVd9vEhJo|rLUex}Dvhxc+}{Fjx* z#g^yXLK4aOUu*t#1h!t@`fU5GZ6o7_DZnRbp}NxF-e6gD@N@eP8c2oJoDCCvCEe(T za>1^?EDlNzUwC%B8uPBuoQfJ}QpH-D2>_H@eu0KX+F`=>I1nJHr7kt(<@NPaIXOjG zqrv3#IkW964Yk=+ZAFzL?c|Sl@P#(wW2^auFf>DpLoXUXeHqY>AYnI#$uKN}uWndG zcl+y7=o6a8t@h5r0oK#<8@I)txGTi<(GnZ4N>SCt6MsL}d2eQhHYW4@pt;delg(Fp z%1^*RI;XqdTn>gh?BW>;R^@!6M8Yz|9aY_DR-7=LZ+(dD55MF|0s&&r<%x`(mHh%# zsLIU?FI?yigx+SKs5Fc28$OLsPnnzm(-=wk<-UBMj$-m6`*f2HhzbF)aBjIbyQ?&w z!VjoM-&?H44Wm_Vy_A&gZW$JQ)O#qw63_fETM8|rkdrgf`)lw|K-WYX>EQg` zpp^%a(;Mx_6B+UJ5&BClA(*g0cbZf#q5V)MB~s8Auh?C?<)@01$uu(YgyZDI&u3%px(A|4JoZiP?8#M?6$Xofclu!9;y;YXkb6}(4NuW^)@6oJ0)Y};aT`oG$jE3Je(CNKMgxCjn$d)8rf#3QWXmRMqYxzOlLJMV;(kxx`oAC&1Gh5SiaNL{m414Ik#iH_-h~Lv z$sD`Q(+*;ZR;}?6O9+y#@oV2h(w z5ulwq>V?4x{r1^5$Ey&?5s}a_MgCE~y=ALVtO2!d<{{jZe+4z4@FRSo%F)IU{w3Y? z3!pviyu5CaT2ww0Yf+44+q<+Q?Sd3l<%_QiKmPGGDfhUa)o2^QKo(d!9o#Xdc)@p(`xzuos66vsx!uuI{;=uiMjzJ$zW1F{mg{PyZ>o|P8v)L&whi{~oQ@a?{1 zQZ5cE2}3A0$Mu#BK{3fH7aoxtly9AepOeZyUVv#YaI+=>KXqI$n`o*gVC1hw(=F`7 zn4{nml~hyP5A<2UA^#)g6w)&Jg$CsUmySnD7!Ry8LMQY@LCt4koFn2Di1@YVcN?pL zj&3Rem7@Evf~I6ei*8FJy0ahBd6SzRs(A}O&e>0$c2C9@Orbsj<3!@zT-)xPnFOPi zPU#;^*@K`MmSTPi2olcl#Z|ees7b71L91MGJkX>70|H*c@6C)HlQ2o<>YxdF7N0Ki zza2GvqzQSkCH@AsWRVLW0+QHO2V{?BEnm*}e#J^vAptve-`YyCGvT@FGNnnF3ivk< z84xk3?yPsyYUH4RvgLH^#ZmA&88I;NMN3P%UK3YXtU1N^%Fs9wDCpVwx;0w5D{+Bu zDlnpasKquy`ONp?kwTJjA;Qc_f!dNWGM$T>8-`|r+I6O(@{y`D5E>1st{|TBQ5Nj8 z#I&AzY9Ep@mY%QF_B&Q~u_-*GooBVNo{IemtpK1Bz1}z7ktfc!d4i1B!J%WMOjzXG z*?V!^SP*L>7;y}%?5beIoHm83;VM9kvOIt~kOZ0dtlhXE;H@t`V1R4I>`iUXM*l|w zEEq2Z;o6mf#2NwzdC_vc)A1Mp(6xUVIx+H&;qalp>dT&7jT4_kBa{2Sxt(&!1({&0 ze!=cqVk;8RBa{G^AfYu+u6dm;xJudTFl=;7#ry;k^ZN-@tOoa{A_81Qlq^R8TO!oH ziauDt&D#IS8vLaSA#kO`=7uM5<|yW$B|I=2nR*2#hC;2#pM?up?a36k5yU+t$JH-` z9~!i&SI@ib&b$<7>L`wjyFu_5Wp`=FP2=T%z4_d2Nr%?3S3Zg+k?0)jD;?Qc+pkH3 z&v-0L`>)`~8|nFV)mO#ZPVFz6%z@$>41A_Kp|N1$!#2MWH2yn`)L3;NN9StlxpxaA z&IMKCjTWuI!2J*a5a^iDIK5=8bH-?q`V+-u?dL9Fbpr+TUX)FCA*x8DhP|T^{_3W- z(oWwK{_cR0WS%^d)=wi+*UvxajHD8_TJ|HTN;Lkteg=P-wHl^3}NHF95lrO7|lQ`I>&*wVS zsNROz%q+tus9D3ne&_vDJ`@1z%T}~|o(F%8go+Ku(M@~PuW7hEIH7Y!JbvB|pG&hF z5{=99pS6qL%mLBO{NXnNwI&%~^+G`RZA>&DG@q@7|1(Ra=t60(xcyn*viXM>rwU>B z@-(=+S{c!uH&tv9(BdwTJjv^3iuvkkE@+bsGV$#tBY!4M(?;u)xYaY773hyLIrP1J zuokou_p)X+Z<^8S#@>)cjph}ADqU0_ZBjHg>?$(GD>80^91SEEr~3(&%C0U+0~gAU zYyjvw8t;v!!;ERJe%J38B?5w<5R)I3x^Esx1G)l>4?3zUs%BI&F5Cm0ZBzN@6)+(D z@b_7XxDjjvm2oJULlpJNP98&k)T zAb{@p2`s7rVq7CVPx}nt<~x5(7F5uA+*KLmv1%EYXANF|zHzqOhx{4=Y z3?1X+XTuE{LydbG3_IpjyQu}Hz!|~FfyLMuhW?JvHyB_K0MuXZnfQIhVzlY9Dy=mH z?xKuAFt^3i;)YD1N zH9$tA{#qRV3~q6AT^Bb;9`|@pfSa=NXLf~|&vk8g-PrYe3}jebRzHn+`cNbi%Vjmc zmoUS5x(Ifx!WZW$A?pag2_1CM{!5R5bn_(ztNMkmu8j?PM2X^xv(wHRq2^P$hwCcN zx0CIY*rDbX%3`Jy8?A+wP7#s0&y#iKiuldt*EFdub(W_UMsp3qI}pIYQI{lC}HW` zVpWI;v_AMvzSzTQs*z>d{el9s@$E*nnx5G{4U+yO|MSp6=GLpr;9u|3J#YK1JT1*F z310L;jix!S9*0D~Q$@?eBST5yl+>H)xnJrU8am9%-z%M*28w3{e-{)7?2iqou5qNT=)`WhOKS=#FBx@BccTHP%n1>V0nPon zeNr-ppzz-GpJ^`rzlgAZhjjsvf&Tzszq5xIKn(Wh^S{0F=Z^oxjOp+F73ZI{{&#rn zzfJ3(IDaScANl`($R!TvPh@h)Uy1%F?(NS%{yT>5|Dfwqa31tFNv#c@w1YzqJl)|; zR_3i%=>E=|-oWu6mt;bDxZtFDIk*b(@9;NncchHiwe0i(PQk*1FznCAe`|w3caXRK zW3_(|<4OL-$Ndiy4e|X81N$E&`d-E+p_W{%LTSeY2&#KVth-@QnVQMmOAYQ;5yiQ2SgyWB&2bHFu}R zbiv-SJkfQm#!ejl2@9qrD$ zVdlWy==A}M&X4;1RT1*Z|m8nWmynlq(db^H}Nq?C36-m9TLBYk+{D-SQ`%okFv*+(lucE;5gs_ZobQ z9+zTeb}QL=VY6~|Kfq~YzgmiZF~W{u{mP5oB=YB+R~%xw6W*xa6^d?R%Fd5wyIN5Z|}nT`~@x-Om~qKG}QFXC8Nc^_4Ka{nI$df)`)m|LQIL#De%ER#pof0 zS}of=+bajRq#he}@r7DmqpD+?os{1r^ynclp@->b!!P(RR|@K%fEWo0yfLNB=3UOJ zNojWL4=_NM=b{Mu3*Mdb$AgZ75%!$}NgO(H{9Ty53TLe^KrEV4jE2t+QN&xSUc00Rz(2DXU;cxGiwEds0vyiS^K(I{3#bE$ns1S z0V&*!B>trJUAhRy37TkBal(Q-+ShwB&x@R-4>Yzh8?d1`t*(Vnb8r$;{_6(F$VGpJ z+V4*X8S{HduaD#C)vvc-A1V`H(h*o^>e6u>=l`gC*o=e^riawRvbXIPZ?=e`EuUaK zxn32jtUHIE8nY#m^pLH<8#!BYh^iPuJ5d!SWSXxk*~mra=*NB9CoT8rW+8&?S3!$I zxNmG{FSO8)*1u&Vg4GgUp++J89yS>+Hgg{^vr|BFeTn`QEQPLj$A%`x)~8>R)-Y*0 z1Y5Z~0F++-8~3L=W~#;xpJ6|TTkb9jJ$SZ`;hJl5A_!R+#`9%#KQS?%`XEYB$KjNO zx?6DIg*L1(2>-<5jFtSJ%yNCLvY2Nh+y2f@y#W@KgTbkth;`evbcSW5|Mj{Y#BQ)m z;Zbif$<4W(uVpi@M-L`99{e)Z$jlG-zx5W+QH8|oJdgXdT(N28 z)r?Zx3{{KM+8@3Owq}(Q+`#3F(OMp_hXbw1;q{8IFf4o0YwYkd;rO+c)ZLzLN`pf2 z&;F<0&w)oe8RAm0UfE#xs6Rtm-Yg;Zi6o%|2HyxcGdNCC9Me<*_5`#ifYcA@Tea`50KJ*>thjDfN6}4d`kz@g1ocaUij#^!x7# z>?;`!qQ5Z+AG}1qJDtPlz)zuqwb995VSUxcXPtj*HyX8m=zf)_h=46{vlgLC^^(6+ zbeUe$YwM?*IQp@W;arD#F@!ac1tN*I;c=V|#?x`Xx7ZCEdC>>*6Uk70J%-f!l^QX7 zZ^rf8`-ZTStA_odTaPz=3%oqDQFd~7R>>zuX671y&Cj!w?vtfg_xbgv6U7Ug2ivoU zbEI>MMFG(t#}-OU9kTA>J1I z^`y)226;(gX%aql$}Q(F4Om+C2uLTdBtm0Iy&;8NOlz9H#XP!sU+sRK&1lkO{t~@2 zo3fJUqGyGWtAFFy*iN4Qp~&a3-+N7+?%Xi==9{98xWjhPCJOLz0*>|ka4td#M>ghR*pchSK`tZQt?gK&c1Yv^f%Ze%#w=o}K!H=6 zXS$~|+@RTY?1t$JunYALe)kQM+FM&hi9p(IjaE3utCa#ZWi>1>kj zMeX(D)JvCxU#>sO$YoTD9xIiM+nRwwvD7Llc>dsrd;$$ER?-1o0we}TC5 zQ~V`Y2sNbR>S8E&`8dZ#ca5g{OpIaOj7IAO0nVTl?7ECJwB%`<6~^EaOHRU z6gDecWzi>%kYzj)q`Pc+Z?caK!b9qgSA5BIuP^U%BTvx@M56pdf3TyDTZuNHWz_0$ z6C(R7e$4Q&Wh0;)qW3n{d&vUV=3hV}&b^nFRFauj|2BA(*ogw{ohIltsFIPQ}$J`c_x|%~+1|_1z(Q~df z&;a$G#!!j?+wmBZO^+G>Pco2w%xv{B<&8cPt7hd-##CFj zR0_z!ow&%#a&2Cs={p+)hN>^f`BG2L^)}{cUK9!#vZ-$P$fmKEus@bGpC%fFuSDo6 z60vHTLB_tE4*7UL_&5~3p*^o>g{y1nDJ{VjT`&pRc7r2!kPzB$6_X;*pbOI^-YSY?4V50BT}H34wO6&3++iwR{_jFk|Xt z&7X-r(Qmoi1y=>PTZs`n!Y3Wa1huMQrU2;aA;>#^u;SAdM2Wf}xO7LsWZ`L5zc+v7 zwVF+iDHej*X$UB#El(A;lp>8It(I%YLd5d{|0>{~?T-~rQEaXmiDVD;5VG9-jr*O^ zjV;gm(`8__k4I7pu|C%_$}^ES=ag) zs56s^|9th_wdIm*;aBDQ-V%ioD$vPoT^$#@En4HL%Ek~MhxN#D*h^;@=Z(U5D#erh zAyJ(UcK4_rg3TVMzslEhZ!ZM+47M&8??*_C*l_4D5Qhih$_dV2tC04PnGw2ir}Gjy zK6!5Su`s?F^UpQ)gcR& zpKm*)#&6DuedW-iT5V@N)#Iu|ICL%ih(f%40s<+Q+BvY9>+cCa%fv?K4wc((YWDox zuDDYR-J7&2(>A{wY%`Tp5ctzKbRwXwhT5)^2s??z2vkDzE*B;tlO((@Dek_J80I}A z=zNa*iK_-2Su_aK?_^zUU(18H#Y(6-_<~q=GfGE95uu-rv|U$I2O>%LXX*?Q*6l_j zaHF0gE0VFn=v}wD={}}<=|$dh)-&R=8mNbbbsPm(q2)}|W3fS|_b9&!e1v#qP}`0P zDJexlmyu3bb997j!%%=`Zkp-BTHb5kyxu>m%0_X6U32!B>9DMOVXb~+1jCr1`rHnW zmnQud1T`P!`0@)CwMpsIWV|YcE6Ne-rh}f|h9uQJV*%z2Q$ix5sk^9D&ZadKa0gHE>T^bp(a81albn>d;<6S95h>bNc~}E!*C{Er!eK7k2> zuE;27; zA>P0{%sPNz4t07=;;uND_XLYAytr#ddWB%&r52W?{6;mQqBM$ori@VBk2~Zv+eBV?gl*sCS(~=4n)94?x@2Lhz-FW5jDs8(60KbDFuoPEvY{K)PDZ; zVueEl>RI!#%8^Qig+Y41h5S^hI|vh$lblTmp5|OW#H;y2^&H&y8NEDuSQp_*$Lk|g zwqxbn`{It+`4_21LmE-8Hy7`U%HJKjjj4xe9v6|HJ};?!_?R&L>&y1+&yI+PK8cIn zngjOL`UUHfO6c-%G)g={St{KuGIB&8PCEt$Xv%6%)E8AzosE%vx`HZD#Pq6%{YtJ9 zu7K4_{u&vsYY-QR!1O%7h76^gd(62D(f_jdNB74sx5keSkNAlZ_h*J@fXij0kMK>K z$g$j4{2a}{I}qO3ajFuPh^mfmtc>7; zS&u1Ah$yl{53zO-Iq+U=>hrAp5YT=Wj1>u9VMnBzz5t=^qN9Z8Nn*yaXxkrCr>)OX zD{@M~M#7}5gvHmyey=lfqV2{EaH%)2P;d>#7w(`wo%xwE8AoS`nVU`j{2mIeKpmAj zCqza;nHB=O+C=^sDI2Pt7QJC@%-hmDI{l z=)k@%J2@ojzC;1$b5C@s5DfR&g-IXmeA`Qf~TJXVK;fM3P$eU|n zm~i?J-nnl|Yaej8M|_g<3Bf-GOsl1f99Xt`zNf)k_?$??#o#ff3brvN_w8MYhY0bL zu+dL3wo;OR1!G=B36pa~axMC(6~wM{f`YV#x?L|CdNv69t&ZotVtO;(8^>nP6MI~2 z?#beIxg_Lpr^Ccnu|ggj=Sg$;T>(Nj=+O$@>NVHJ3$)p!i)p_U5q!wc@xWK%B+D4n zT|t594)1zPG59`-vzyoiiTs)?)L=JYP54r7$Whv1y?4dH3_s-2fu721BBP5Pls0;B z)W>7(2pgc7nKJ9>9;4_h)cYYGQNRal$}HT+Zdw`>F105AEG671R7{ciVtwd=WxlT$ zEr?ccms&`Kz%i5>fyxBb;`U6Q^2JYdc4oVayUwo6HtNWn3U-cEq^DyqcreDoWAU!f z8rr^Kbfn?JRaHlbP(GRlp8yh;D>9gG*&t+^J(`8ofPxjDk>Ov)L==tC3_-2ZNyzls z3uAGReL154=7_*G4QwA35%o^7Sl0dNs6wbJJC{!LiXS5C+RNiBB&JNCFU)x>(n>i{ z5qYAD!PqIakMi6IJ|B96IAwJTPu6C=*_0cW^^Qhx)qKkH^px?@@la4gqTY`^0fER) zqkPU`#SyA7`bY|cym&fykpjX@w*o@&fq+v8@Dm#euZOzWMS>JZFfy;pN{DyJ3!$Ps zE9(2$(7jwXP5rL(t8K?Y7KpLml1LUS1w@hs^B_G}{Awq_RiC@N6!HV!abR(n98BVA z3bJK2Ox+-SGCxT;bJMlSH7_S^6Tlm|bfIbP;eUhwgHS|1h(T05uUxMTh({*8j$|Wef zDTU|4@~%$^*zm#jJ)`53%6b%bKc2)YjeiOcrMBQ#`hoEF z$vKO%xUVzsf4W$4a7k4m_Hqb*!)h`OdX5RAd9~Ko+5ga-34$-ijt2s65~JS9HS9=L z`j=iN6@)e|eg|8V%OQZLjt4b6(=uZGao>|}9L98JdOYs-2n;ph=WqI2$iSy0`6dhC zU!}PEKbFn+%LMQO0;JJFB<0GRb>`QMN&LFoXy*546CabaLAVK%MtwnY0_lPc(AEn? z!A~+T{bf85yO_;Fr_xDijDAMr3w;&)YhKS678PxKoZ-VHor&EH^Qdm2rw2Z1A2>_+ zTX*326^B9x@0j$vqMgPu^@a1~fw;5r3C)J4)v|`!gEuHG`O-P^c?J(ZGS2i|pshwV zY~`)ZTxRpPgS~VCO&z+vZVCwSg~HN#Fhnm&(ri9YKcYLi-7T$Pr0uTf(ngqP@4 z$IYvE=J@_)hl6{pz3omY;Fq5&2}O|+++%8h96H)S9vx22gFy(RhnCUfI%RxW-NP(N z;eZ~`VIn{bq&~##zg(k;l`j5D^2Ysmg4<$Mu)3hc0`~UxQ`k|k==KT3Y{NC{`jv_i zepkn-C#r>S5LQ11_{11VRy5|ty{feB82{s~8qU~`W>c+fQeo)NDbSyP_%YKS*Wt!YCj;oZ!fcaS z10se*o~_K1DPKdCH#P0ghs`EuX-DBdTQ|bLSYmri{{BwBC*T<16H!|oyrTPa@UBb` z!)Ani%?2F?#Tn_v9Y*A)!~)7KWZd50dXg?yZ&DDD%2FXnXm@BFmU{HQCBp6phSi3{ zEw9KJD~$rib76lD!MQwIuzGYT`Eofod-|j@0*{g2s&uspd#>SN;dZ6B@hZxdTj1VY z2Wd6ItHni&)ryXg5CKvv z47qPpso>7*8l?=VS#V~1oInJ|3yC41E({0K(KzQ|K=5G+tIYE3fkNA3C+ahSyy2DD zKeZ>(GjIATU#!~e1KYIsE+ACslyXW3Jj|MbMuHpwpEE9>y=?WcsO)Q01p2+baR9Kw zX`L<_0A$Ph^8SXj{1ay~c2B@Ny(F^nV_T>f>;naA&xK_o65Ml!9YX3MI0}l1RJDb+ zT4VW@M3+U(DKGHikm1DlVUextyZOtJXwvgd&r7m`N%I7KsK_EDn`#ZyJ{=bNilAvc`V|_!2`L&v z$lFH92wvp#@_i2}HL46QHA^}G$Z+*b?{d`_IXOVq@3zR1XNWwnK^qCi1?bD-T9xxY zwJ5!=+l(%my&rUh|2W{L76QcWD!|jY|5}D3$Gt=bSU?FQ-*oQjT+^uWe?MMrwoVpv zCjJfa8f@3RQ2bplY-Y(0nz3!j10z4^2-WS)BG40r`=*6t5+=QSwrd9>P-j0`Zi;}l z#x_1Ty=R)Wz1APnnewQ3vd&ivH7@P{Hie!0>Al2pFeF;A=E4 z49fK+!(7*G=03_+t=QD5Sr!0}*vy-azn*dW^oCs-BM;$^z4H{g!2Tn_YN#L$9p{Or z@zj}+JY6Oo%mvL-T-jO599slhxjaWA4ywMO|aUOFx6WW z0a(w={K9?<7bd&6Y}~LB2L3mErumFeIeO z_2@NwpEZaCKJS(QWmUg%bs7zvdFAm&KoRKT^nr{ThVvfyDyZwZ9gRd<<6HjPCkbUY zhTFZ@7$AQ)eZkxDUJBrU$tha33=rE~%w7#e2DLhTG#aPQeQMT);IG0U6!$PfIbcm& z+8zm@0%{aH_j^TUO8|oeo8(zPEPR-a-xpoW+vLUqfT;YlvtXQR&Y41uLU>U2C2#6y z+YGr4^ZcT+x0n?;k1l+OFvubE6zmgRG288=E?$HAcy-upW?}a@SI0cr{cKz1AgLL( zi&MOD`-z)`rAXsSz=f>k!TSzhUVI3cKcmh4Gl z)9Jz>r}*DXfTFY_0O@HiVOg1{fdc@QtLb*^g=u?McwPLnWKsx;;8Eu%Xe)*DH3lc#B&Wv7#Ac9c98?oBRRL!VtEM^=2uMRb=8V!B* z`NYsQGnOZIxDg;{2g8Kgwsrd~PlI~#GEUhVsrTN`?WDeQ;WpijQ9}Z$hjGU0;aKHL z(!I4G%QHH&A)Y)}dJC)VPvLk50D7v6Hgeri1ALMfl3b1zTz+G)hsF zd9FVzN7ZG|uz&afK1{M$-nP(Wjs}Az6Siiw2*L)3B&i#`H(`FT&>#EkA0P7g=HRUr z6Y6+#CSMzUuY`EM%j8C+_7*C^XiL1~}v=HxDEgq@BjZpgI{bEDB?cz8Ru+npP zA~=_jbLcVYHS%H#SEDiY-eP8Ymp+>dx;Rv~-l@nLmGaY6J$J=f?*|@g0B~RY#HYhp zUsuI;nAu!6)dGw6Ni@hdKJ!3+@hNeQE_uh>6a>|Idshk*h;>Iih>_? zUAkz42_%SfqN&7OP!aqSx}U@ZQT_Ztu1Eee_2I07%_JN)s;x1|4f45Kj^T}JHRVnO zLZqGFr{D~>5LQO`gHnknMk8R{(Rl;F{Ht%OFwd}j8<3=PlmJk+? z1niI??vORBKm$h=#E=x+k8+;b%Y7i0aioW`<3S=u80^h4jxNeop6%kGGabyvJa#_x ztZg)%hUTVU7FK(+JoFWma1i|jK-u*q-(cW}Qqc2QA~Clw>Ghq!NFgD0% zj|q}Z3J+YrE-(Avit+e^-RyIS*xL2{U-{&wd9F`3kiNy{zp-z*+`kk$K6alUbPQ-3 zZah*ac0F$G)(KgoNqIB~KOdZRIPI!(zCDNpAel7_fE5#rfc{G%n!x}NE-|<+QEHM) z0vmkey&ROWsVGDQTWZ}j^%8n@X7jDqeeSI#O}a|qpN_()L==*7)^_0rLI%Hv3sO9s z6T7xjbRhxH&ppYEe8`4cAYQs80`>;yPr2*w$Axa~Wo0j# z2xb|P&zf{foS6r{>>*a8fxc&s9UPWt8sQb{s0T+Y3PVTL(baTHG+IXY(cd+_PK>>- zY-O=D@LTYxVqy^Pj{*RFQwR48x#m9K)d=e9mc90ZZ%~>NL{+hUP*~*9b8XGDUlBTx z4Adp$%W}t{b0CD;sR`MkBA~K#b~bs3%6qv*cjta8`w=wHC z7tp%x8%ZEnOTZPn0op$!o!RhsEhrQXqzB;M!27!67}39@9pq~(rOzh!dwVGL&Pylh zD`b}BPopJgml=UHRmdmJ56|bZg=P#>kU8E3yz(KoYM3&z*D1Umx+S$a)VdU!JaBnf z=hkpJJ~o06@rY8feGV{jnRpazP|fVf)uUB@fvNM+KNe*mGf{f&sQ= zp@8v}I`7`LJl^gprQZ)OHlHRhUg-!Po>w`@Lv<$Xu@2@0hu^Y5-JfKa;K0uD_%J)X2mlh2hENTP z1=lrvil*2fFndhev^LJsq(-MxtCy|Utb=^32&kD)x9u_*_Df*rrNfuIH<&HOB`wzv zkKFLRzucK9vgt#_oPCZ-76FC2`g89T1{Wu&b8sSM&6JM@q4R^Ypylq_5IM}+5Ib#D zBqd)5AL>9!X#(!}_yl~^=-{ICT!C_u0u8i!$UyvT{O(&=JRl^SjbT8w;>qt(N+tvL znvG>hkU#`lg!up@=<(CP*5p{@S|^R1XQl6M^&$bfzETiLc*WE7ZRNn*vz9zX^?`gz zDR3{dTIFpJe1o!eCzdF3oBhz>$#-1A)?znh$JVsWdNzcXUccL^vS{hpbUYMLFlD({ z<-VCFLbtkd4=Mkgb&N4svH6SVKJtkChFhql_?+)Z;ABBX4V^M(b^aEmcC4J+Z9~ zF2KJ(fRx~D7d_`V8$JYuKfdiER5??Ad=JF5YCJ!XpMas$mJ3o;XJ$GXw;!r!0I~pG z{G*uSsVRcX;aOqj#k%EN6idd@OnIJ%OCeqx|0$zo9 z@;!uHINz&0+Ru5Wx?zbB?02nx5E#B#d?@YPuX}C2P<=JNG(hL^tz@<`HNLor?=lPl zlo5rzA`$QnV-sN^H<1)U-y)stg_j7KnF8)gCJGpQu7e16n>!su2tlRSu#AB~V|NQwn+48lM$#{o_=?uaqrH-5* zmC(ymWJpAtR}-r2o&2lWN#)+&(hjg+IY6xJ?6oBob5J1RBh4(Wl$qFbv`L;9!icaf zOv74w833xPHwgDb?LCV?6PU>-qATJ|ml4X2=B+wF)P%l_U)Xir*;PS2PWqiQZufbU zq`@8jQj8+wTKC5lI`8A)M*0B;V5wEht;qQPr){P8=J;TraYLu%HoYzaY5WMwU`$cV z=cAUa5o{ky?hGik5-h%GroP36IBAqYPIRQLZ<+l20uZ>6wn)LRSwDbRHsk#cI;bq_ z_|gKE@xQz`Y{^|$VIZsEKioIrpz-HNN}ml%2tH}v9HwYphpT>cdIdLPJp)ShVIEJm zQRC3ci*v$V?N-^ouK4m=_@jO^8yWe=UXsup!dg_zCx+1V>uK`GH>+*FVkxf26Uo)) zHTQJso)sj3b`LI_=XqpP<}a|pwaHOmwBfsV=Wo~nBf+Q$A^f>CZUS&^1L-S6vY_%S zL=HR%&o@nuv$g3#V=mSIRs9HQtiQV8|za{fjS7haQq$#ltPrx9#Bp zMdUo;dS3>9#qs0tEbF@Jx<|4N=PmV^x}3dWWK~p~EuJkki7Xy-xSIhn#E<3b>nRI}J&I|&)4EUP7CIDUogB=j(x>T4quP>?~bg_PUSK3u4_ql6Lx)ZtnB z0gP6h_8toV-BCMe>k6YuAkJEHW6jWYhufMI3d?bgq)mUV&0KTR)?cO}XvdK`S|rgL z5Nx84?LrFKRs`r3*_R8DXhV=*8RNg?&}p!`aMPR7BUG5KH;K6haz=N}vQ0lVmS zvS6?xagF)o(kh#_(>V)$XPgCGsW|jc4ff$=)@AXbiWR@D{md>sP6;#}Uyjc(goNz@ ze>CNej}sO1l2x?hq$lGT(G_5V9K^^v<XpGh#)p6xL)IEI1AI)Vtq3uw#V>S$Y}^AONaUpT|bw zc4CFNY1gQ_G@kVl^H#oQoT!JVOG0+EI@|(3k*j$|RNnN4jsMZw4K7679X-sSK9xqa zYUD27)5^ovc=jv#u<>zXYVq-SQ>b&gI5w))>|DZiXjlBe`W9L{^OBm&FK|S&!J|Nu zFnaW*+3vdpefGqL=IMZUaGLZte(JNV$sIB`dsmrr(lW@v35;SYZ{b_*CUaYZDXI)BuU*(pvSSjZW} znZ%hs4xYNIEj)LaapS~pxNVrig;>gb%;DX@^|f8BCXaX5D!HxB)e#G9p^n%sN$>Lh&Dur5S89bgt-8+gV1moPpc+Z)h6YNe6+)gNHv+ ze}DOHb$Ix{puYbCh5y8XrwkAOMM^dJ1MJTQxbgny1pB{d+yA1dalrovdHp>7AHi0* zv44kuhqS}WpZ$^1gm;<$r(9GO|4Hi~%lwyG&dvRRQ_Jwc1oy@G6T)O*SK+A*Y8J#_ zS9oq7uvMj>m?SOX)D)ZTGQH=F{qBk5Ygupl>De`jAxmphFv4T$PUl}S|Ebi!=i2|e z@%8_NYY+XuO!PlB&_4zFR}%lW=|U|2b<3a6|K#iNZ(8dARW5&V?GU7Y%Jn}o(03Ed z`sL-LRl}OcGv~|Yo!3*lOr&&FgAk4dAaB+Xj0s-k-`&J>+`fJPp4&_JKDx~4>bGkT zJb9>4>aT~L{`>yJ?I}m>+xEO||J+TRr0;zNeUcp0A>3j^KXkg%2n=xlzQ0!Zls{bG z`R@AXx!Cx{=662seW7&L@IIu|X@35aABWwis+JD7>sW)1p;++m9!knFUPgOF59NM^ zR5E$+JmHfN%nu|(ckFC1OL2f zA}$T%o162R1wt8VX=Ps?lm!bnmc~*K2Gke&?Nx+oyv{+>c(wk!|3b)paWFs~rWXgZ zC4@jm#p3UjeHrcV&h}>-9-)-JG49ebGCJ#9L)C#9?8Z?=hFy8u(>m=CLEv8~d?Cf^ z&IDmF;cn=rZ;S#xn%QS&yxu8Luw`a`lQdDTaB%5w6$yFrj{ z_%`R_j&HU>kno>o4sbw{;j=#vDUla_nKu)34`_>N|OUOxGhWJfl-5x%D%o;nD-Hx;*V46CKmGs+yM*II;B;XCUS~A zI-Exy4*E^nW>V7kTn0_XQX^Hg zMD8f!zlSSJn`>6b02W~*!)gyYO9uq1cw+u#Rk^*t&-+T~65V$|P#;bLQBD%iTe88RcTmWbhmVDo_WZ6Is8-JYQ_OOmWHJCcJ_M38Rhzy3LtHYZDL&9j>G>u)iJU)`L>-bzWn4nr-lP0#G|XEx87RA^?Utqont3+Qcigr zhpmK_eY3)(EM<0cYgR>MsU+z9I@Y>WUC#93`>4kH-bQ~oUNA)n*y^~`uBYN*-Ttih zdILbF9Q0iJgrj^W^8g@79yYDF{nI?v==dJa`KG-@_~^Lv8Ny?WfGr!>;g=)gRjV6# z=8Q%t*Ux!zaY^C^gYNyiv@|)Dl+Wa%v;qR0FtWv(a=ls%N5q4eIrC*NgFBh|9A}L88qcqS%vQ>c+N{)f&I?_C zH=a6;wB}oHktcf)Fffv5(MUw_UrldVJA1w#nuEp%9xPjtP(c``ClRvL*DvC+AXS)> ziElFHU4Hx8J89+(LOJd5osDdd%834Y+&gN?sq#MZ64)p$E7fmTNJ%h2dK3ISN3fH2Tv^?rt@QnLFWtdV;_TJLo5roUjUC;jrayQIbE*=~iOrwVg*`S55c(F!GtF zz|9L2#Sh50jHG2+=c}}<@u))?b2Z&yl{*@b|On=tl{moB(GFhoOLy8xSeaMG;P-5!m- zPQdH^xw-{n3^lUFPyIajXPC}z;?E2P$WN9e2;`+08l`4UO+ywE{` z@Ojj3mZ+vTeK$Tl9G_qBoJ)H=rZ8lojtdU+FW3ea*l#H;%|T(+xo>g%F@?;2Bt(45 zx!U|rM~o9Hm8H%?j58kfnaznN*fvni1l zYQFt-Czct`2UnH#edo#3fOh&@Qhh9T*Tr>xh%ks711txHkL@-&UJ+Qh%+=euMu!gw zG&ZLvtn+u2jOO;|`u4*TXXYbmR05fDlSGyH{ExB=UL3AO48i6Gah@Yx);{_ zU=*$-6CzkeaXLV1o8SC`VBxkEAm{=%m6;|^+TYVS&>|`bwW-07MOUe~dQ9vthk0J^5iW7ggX7kFy;!=a_Osq z1!X=^r{2fj!*|2w`Y*bcJr`)+&$K3|HVy|?`+in*eWy)uBqI6BK6I7xoO*j#(v0eu zsStr|P-aby<@)f6C6PApWn;$Lcg5Izwn8%UPP`&B*W7&F1ddvj)HaqVc2(@rhP2=` z*aO@n$GJIXOGtc+HudpsJ@%>~kp{Bv%>;RnnGVA_Y9|Yga)v#};SogF6MnmDW>{~l z*ho56!{*-3oS~{j_C%lDRLFIL3aR*YR9G4h0gV(TjTXPi@;^CAP@0>T8hNhW$@SQ8 zS#}M6xxDi`MZ){i2)|kK%C;)6eD2TJykBU*jbGn+k<+MV%A)QbWcK(*1?*<00;(>McY-vS_$fq?Wk0KXijp)x0 zgC2tDAs7uO{BL2=x*tNAkQkVlg9cU6YY$wusz{Q;`@^EOzH-$xSDJ7$EVY$uV}TFA z7^wOp=|zOk$WT>N(I9{hm;xsMx7Ym?hCya^3cX+p?R>PiI(+itj+e@VN|pHEmkrcD zTc?Y9np_pSDY~DwmC80_vn$s12MzhNw6y2WFm7lE8zndEU59Ob`(B`-fQt7*cd1SV z|0m+J8>e7+Gzf!HyN0fg3RSX(l%EY*Ma2|J;;;3k*Dq*>e*wL5bakq;9(u&F4ho6P zJ0O1$;l|lCcR)A))~v2LVRz!Eh)uf&udW&CUBF#z%K1f&Fv?^0iC12~)3Mz_7@|gQ zN@Sd-E2Q2BE^7WkS=ZJ^VH9+S`Rrfjg~+`cm$@>Mk-(its68m@AOZ>*jTc|V#yg7& z3vGWMvPKGC^%#0 zz{TLRSc;o#GmCMBt6K3^pYBf0KqIf08T&uVT(e`oF$s4BZ9-mfI}I%^+VF^p49b-k(@*o6x1sAB#Ynj@Fg2$vEo4)1)?V?VUGqy_*4+;}B?+Y`Fuo zYB_suN9mlYO>qVcV9B-bzZU#NBkzJRg!9?4zJu^e6@nc$n^p&H2wPL{q>+u&cc`#dnT6%G53#pY$b80g9Oh5Ao#}mWA`!f@6ZTZDceFvG2VPJ zjS2O*y~x<921ABWHm^HEQ>_9aNEpkPm9-l>KQSWNfo zDXI0+1sn5A=5Ak#u7joS410IvSK`5N-51QU4Pvj+p>bzTY>1yb-nSTohNnPO1Vi7N zt@b)2pD|O7k0zm3FL!4Iyaq9aJ@zvgd_u=cw9Wrt4C@+#ir^?{v^mwt#ea1u6Jt$o{)o%k`c6&GQ3KXW4Ds*KMEogK`%d|7WG`3ngc**cEf}U zP*`J`(KiuUAyXG6WLuHi=ey83VeOw=(t8*h7SVgC7 zzT5G4{nycgPWW|zwUmxPdR1w5AnwR5v;b`sh;{})I`o51CiAx+9B zN1d%_LeE-kEk@Q%4I&Nbft*#Ob8%t0JICgWuUYQL@}D1OZ;U#6zQoFrA5@6tVot&!lIFZc|El6*SWO5;Ys53A#0TY+2UZZ&JSkZAI_srwo91=hGao;=9mdSy zX(zWo0srM`F+XQ4lNJ`FT!K&u(#gmzxU)>J)fYeHcC6Zk4;CDc6q?We$T%7mZX9@`JBDDH&igX@Sr;8r zqCo@ektUYZq7d**4pMFoef1>nDSw$$7t1?Y*;Z;Ho7eP} zn=A_c$<$BZ=`*GNW{1>{E*R2(oKta#D-5Df$0Fw7iQX6jLsYAB#DSc$@A;Ttr<;k{ zohU9e$vlQw_(D$$DeZEo!s?k2A3@&JIu5m^Hx7$JP{Ev&R8Zhm>oEjC=4XI>a}NKUOB446@Nehs56xMqD>MZ0nd06grq)2sc%>D6)gVZ!{5eEPqh z5ELfOB|->2H&PhnaK0HJ9~3_x;I-y_17TVKym3hP%nq|LwsAo%4orxAzZSYgP~?!l zafh(bCZguj)8{!lX7h0%#p+cIJD^QCVe-uWffdfhsxoyB(3QS5!iKSw$j~K6p5oK& zfdD7i#yRw;Ri#ZBo?Yyh>1Dco@MgE`=0f1wyp36pc z>bT-7n3?b!eNSN&v2*5=+>f9fWHr-9zN^Ec=qMW(H3;G}u=a?_Tv|rHSp8jF=?&zc z#545za)zL#fDlT2RA5n{VHr9Z*oVmBu;*i!Fe1#sr7 zH{a^P5m8BRHK`ktybKvMxpjPF|hVwi8 z5}rYFSv*R-KvFB%PM7lqoJ`lIfI27bd)kLLz31d?A~*KBVBSq*nXQrxm3mw!=ZioDkODf>|j?gfIEzs}h_!%eA9 z1SD;ptON?FkEJ8Brt&`cWObiKZ-#OQn|0DXY_Q|C8RV85r_&8%kM~&6Dvdt;$vm~D z{cZ{j$qT5j6pf|+5S~K?gE;Wtc|c&Gv^{`>PqVjJ=e)bhXK>mrcx8gTy?TXxQFS>C zjXATDSw#Db*Y?yg6Q7uvkwW+z%{r=*NDef}(7y7-52mIkEfdfp3gYLC1>aEc+;=uh zg0no*z#h2fkc>lRE(Gi(*BrO%VWVU=jikB*2zxTCPV29r>N11w` z02NN@Px&8F5<0bY0r!8@ExINr01Eklqpyk#)Gt=xa~Lu@`t|~>V2kEdD}it}p|m>e zV6xzlbwqawvX6vP-N~tGgR}MgISkXeei%s5E!44ccKiXZJ^Pfp> zhy-nB3x_)u7b445F=FjYl)JK3E!8wE9F~;+7|B2X^Za8slI6WkhA;Q$nVw?dm%9qp zmW3s#P`ww-yv$!vlk59Zc2PEADaMsD#6^+qVFozR>(`Dg7#Q!jM{#SXa1-nojjQ}r zME|ZNn1@YPNv8y%T5T8@Ik8>##$inL!LH%&ztzM$90Y@l*boKBCA}A0nubGuKcw9- zV2e*~Mo=c8}@teVRn@$nzKhe`=}Ws9^xy$j?h5t(_OCI-?XZMM|J@+o-b(YXM0t@-P^#N|o zoVXr8+s(&ke{$5KWQ`_bnlUhZn=Cdsm5h3NtiLz<{AO&C7k>GT)z4!F8|r4OGtIcn z+w~NI74+~J#moY!_v~SWIa>6fO2n1{QZKXr%T6<2yEK{BBWZN|Lmx^8L&?BfDLZ{4 zrI*LCgwUUPgQieMr|Hd2Ovrjc<>NBrx-XUoyBwhu>g%19A)7ph0}#|u>GelX zI6mv?vIDt6Y3alXr6Bu32uZP^pM)cU<6g(w#cZi)>&WC)zgqq`)W5URr9=ML(PUg_ zW0(-%v)?pZ21KY9aV%8YXpr0LJXGlMWa3+qLB^-$ydc!Aupi~}tMV7gD{Ms{{z^*z zpUE?>keBHuw%!tOfuJ`{ZKkfCK%H>sd}NJ67_b<{55Rz0xiDrJKqdTD)Idc()tMRf`ms(d4NB{5C5hN<~+{xf@bfmwNJVPZwK zxoNhA?$1A3#|M;PLxtql9!7_ha3@d%1!uWD1;Ig(=Ui}(_@6~|u|}SnS6rw17FMT} zOt1Vumx)Wh$JT*i!W7=Q!H*dy{p2MPh=gwEi2*_>n{iACT~}Uob?dXTpmF@O$R0}k zvuW;paKVkt-L&>xa9RRJUgn&LM}DF58}XoE#+qcuk+wlkuw8jtxxF~zPgCuW<;~Z+ z%a}B3DOq3vt_gAXb-%%M3173n9~v2#`F#ohEGC4y6@4VgP7B{mks|i!5}$#OevmlF zO*ZJ|lD;NL`U5xSSEg8Ppzig{wq-aRi^pv~Yxg?s)1Q1er^^p#`p4trkfYEVy^J?` z!eN@p23qN;vJxE17zQYdB@j^rVz>3ALZ|DgjGgtoVrh@J%5RrwaK`k5Xn|R{DZCa~ zWry~5`+!5?QtxLn*9?i8voYg=dmAoX~U! z+AJ|=1aQ{oCw6IyIZ8qVM+B=My@)o@I*|LtUuf-zh}ZoNOofWEK9F(C;uDK>38H1s z9fnRC>c{Tvw(W*!gTrL1m==(OHpx6Hnp=y2AXm006AJC=PQjooh`0D{671ar+$?e>2Tew@j4Uy+_IJq2D)|&a|>M05e z3+VMwx?WWEPNZtR@%ImE*Dun?lelPL&Uok^seCuCsi5r(D7f_ym2fNVyj>otb_YpY zj3vTYC=Gd6ko)HT$G$0#ff%g-a9Kb%}>M~`5rK03G zmUPM^Dh?&-Vt^;L1WBU!F>zhb69ifq zeE@on7p&>vxH`cCEP&Arg(~A8$$K8Tm z4d0z?(yO&ejqkZFuMD?##c*IkcI`*>(?vYPn^xC~TYzG18Ew>PNaLiIr{c|J@SgQ> z^4Ziz?1@%>Wy>SPpA3HLpsdkU8~qQV4L=Ql`atxB?YoVJ=2_eo4?xt)LY8FY4N#lw zz5BN+^NELwJmX>mB)mPhQSri$)eQq~e#uYk+|lZn?c*cV#qn_5&P>yOx?Uc{82$+k zOztVkw&O6Wv1GthnU@3pjaVc;2iEKpdP~lPgppL&LJAnei%xbkV?rLbCZWuT;SYKfdgyrQsxPK5JN{y&yzLZwPo7#N={p%Rir zsUN^SK=7jovMaw1(`R&D%fOUIa_O$`VsI-e=Bv}hjW0*wu1zw^AR`QLvbzd}O;FJgN}4WGFnpF-?{NUraWDgw!2m<`vUZ%f;^&9M z!Yx`jFi5@){plze(%kuozJnmYJ7yGDI0YBU5;?9$3{(@FVl7z0;{w?8M*T~Z-&^H4Pzq9G zwTNC+;!!VtbJf97h;|9BGrjB<7$yBZ+lKxqCPZe1+b#cd^}ED}I|(!&P@$PmhGM2! zdNDNHAe(ub+u@iK*&jD~L_Y1Y8(=^!p6W-B*p+>{Md9j z;&-66ZhH+@?Qyx^8=$O*8rg#p91>~ zg{tmRl6I3^+!e**f~?Eoly?9Cyko(GMo3=ikmXZL)-N~+gHu?0JMsFSr+CBfp$yo~ zTSye)-Tj-~hJ5mIl(t{l${yzhuN~(^y}U@QYru+xHeqyXS))Qfvc9Gq4}fX)K<#B- zW&|7+rZ_+A#CQNxhJZ0vpSSa8pGV|3J_Xyh_ipJ+y|vCb+=xF&Ha2MT5#{=ZlM~O| zc0#q+Mj@PJ{nctqpIia}16f>4j2HOwq@beUfiWx>5V2~Krqv%8xZ2A^%Vsb!6eDj7 zqnBQedzbfHSy40ms90O=W-o8K=#O8?0Av8$s2|7Y^OXSzAL*IhbOw606EwN`FYs9u zGzbdb=Gj#PCL59D{MBL(p4l+N8T|S1>$Ioyg|1RTd6wHlx9u+-wq$Q}7d}HNem!BO z%#x>nArwIF+je-+1drbTeE=AJ@z-h01OY?V`O>cmh^5rD%@365)pMN2XT zYS?vNo_@iz;A;g0cGAXu|3r72`d!rS+OQvRjYjYl1ARd#@D~^eVYr;N;@WTzjiy0W zV}nJ4R`vF3!P?31dw?4j6jU+V)LuGAFZ4c|f8_TnyGC72=hVH*`vVvVO43+H+5ZxL zjlAAQRx}c>tlyx^b9ZraDA4b=+empcHT$O-2>j5yrsV-VVR7k+!tX|?$~ z`Rm~C7Lzj-a$1c)apFJjvT*I>Q|@_#@4IP!UD!YKG42vs^ZI^f*h+{Qtw*&kzlOQq zz5aefH%>7&2jaPr5LnMJIC>L0UOPCq8!aKakMGw=%xZ^|dYIS4>dxV75G5C9dVd*c z5D?;a>EQZMj#F9wdX?2m?Vvy79@KaLj~}vucYnOxU74%lJij(C=e)t4unY|(vA~*2 zwB|N(Ga7K*69n)FX!oP{*T%CTZuGx4?tkokdx8KA@>l!!2wKG7JJ2AB_h8lk|65ue z_X(bYK;}=dP8ZfzXpM6}#gqT~5d$3ek3#*se*uWJu>1ahAzJT0{yPBXzkU7-Xz{-1 zf5LtG|Fz?vv;7wk=YN9`y@#FNw|`IeKm9;0?Ee{MdT>kiA4~;*ePBbZ|8HZ03DN#- z@bln@e}fGF7v~=N+wT91BmcRa{{{B*uL}pEbfHw{Shyl2hWqb#D9WnJlu5zf{vVdn BI-CFi diff --git a/assets/images/help/code-quality/user-pr-ai-findings.png b/assets/images/help/code-quality/user-pr-ai-findings.png deleted file mode 100644 index b3395ad7ea5ef867686b5530c8df3d520558e380..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39564 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
  • )hAp9y&2C>s0`swRXA3~Trg+jjA928JYm79COZMn7=!v9 z3lvg8uQL;_jGV!IWo=wB?efBMhYURj0S68-t~3kcvdLP=@DH&sc?Km9@D?e=EAk=j z-}2$|y%9N#@}P|$<>*121JeQG#(qFa0~*Lw9)bM(M$T zWNK)&759bDdh|A``Qq{zFU%3uz8XphZV0F`k;BI>a=8yI!!LdkqrDEX` zqYn;Is&8)ZT1bA#1A*_~kvHRXeb$I*J$C`OXV?$V8?C(E6XkxbI~^j0Kk&prEDd0m zVH#M{OERBE)g#o2wUXo#hoWxeRz(@K+Jn{x65RC!(*$*g_h7^ug*+5dwPmJp&w0Ez zosWqmEa3t(4X%{C>h&&AJqw;0X(#<-ieuc?%T|_S);r0uDhAe>I3@MDsa*JqE?Yx3L!wlj}4pjAnqw(h_< zm*Y?!tu{vh`lm7qsRLoSSzoUnh?P|8kGHaJfja-hUZ0Uv6`Q(ZG&W)uStRCN$v$X- zX8I1rw+?KQ`Y5C7yh+6j&4w5`M0WiWVS`hGN-j(Ie2C0RFIkpaxB_t^w_!6bOT!-g z+(AZT=>d>_4a`iG1P=u~{jEi_G*Qv&X%#+t!N697vsHvm1_)P>yJoDO`FK5)s0KD8 z7}DUJ2zl)ptz3juG;%1MEzoBhiNIpgV1oqMq4OUo5Ae&nV3C9H9SvF{&Sy^cM%oz_ zI*&E)HHB3_AypKl=eDzuO)FYPMCCr&yi4LrtI`!w;tgTSVB5|_xwnBDp zqHAMo%`8e0g$Lfvb*?FDQh2zPIOVpVEvobS)PqTF^T4VF3dez@KfV?2&$hN6n-Z#o zzC~&LRb_jlsZdLmF=lrcjj=oGF&_lA@jK+j7})EnXh8yMKhlr{Zp5~^8Csu*u~N+iI<}_}87W82HY|#^vn#XFf+|%X1-Ipr zCj=z06fI}-(x^;6F559Vr^d)%+VPRpf*8#GQ59U~l+|8DP2;#dFEqAU5kdJxD;+vI z#xMSwmv!dX9CpH41Q&W)eQUHeA;=ZFGrG&PW#73W`+C~oY^;J5u3fio;h(S>Jk)Po zU(vE!1VN&a0yFzr)(0aM5P_|TSO`52T&X9p^R2AvC@$ zX_$z96}=z%M4S=6)D*Y!u|*_BO+yJcQi}^p*U!yoP+PNRu1NsF9$el7mRLjSUIMD# zEnbrJo5GS%hBTpAkX|^%nb`+Ive%!9nXS^XzDw3?jCsgyv`?^DJZVq$KP{)M9gQn= zXo?#Q&|=fPiHc%IhcT*8Skb;}P-ks2fPHU(E1}@Vwv)z56h_u}a*-Q521w)PWiM&- z*~J673rD0h`l&LSAFN8lk5XEBM|$}lzk7CoIbG?OR%%9tJ7e_3fFw9L!z8HLVuZA~ zOBZ1MOxt&>+)KD|8aIWY;2vRC5k2PBU@&lWJjF!}#g%xcei!a(F{H|O#>&*cV3(3K z!;u~nm%L$4sbWR^o>sXid1q*()lOxx1#O}{cyNaR zpV(b4mqy{F1-H6Dc>QZJQ(bs|4aGyx%J!r>K56eQEWl=biJYi@;DJd2@q*bk;v%D2 z`}gxzW=1JV`UX{y{KyhUVk5iWNg0or^>F`Pht>rF4q`+^GuTN%NH-9lOxvyW6&R!T zwQ6hm65Bm{GjW8+K*Ne7fQXl>AZn;e7GQNvrKUh#W86V+v@Mi&S+@o#;{dKX;OS7K zmj%%?a|>{3M8Xw=hx|ni3nMIubpQdB9XXAiCB3|di0s9`Z)m)QhPi_{l3Wh5;q zv56@2Xd3dV!X+D8s)a^1?rLg`C5&mOFt>yW%c7p+Sa)a|38WP?IF&u;npVO&|@Yns=qs%%qYGK@_$uB?dp*RD65Kg6J}&VTsn*coMtB&(}( zpoLaba@rQi5+txnrRFmhF`%Cc&uBX=pgC`bd^^y#Z!YnAylfA&OkYE!4Z1NoWG!N5 zHg-Joa2mX+Sv}tEbB@MrJ8p3wUa|vKBiGj|c&GHo(@*zYDuAIDjM#Ux*Y`E5(9ORa zigtn8s+JY8@=d$r-fUR%BKo;@GHvjCqu}$F^o#>W4FO32|6`4*`v6Vh;SV_r z0*V^R_2S65>=eo`W*TbGbJpUpe90g`d@xGy%P0<~(kczJBJ%q|*t)iPX|yXwh;Hvt z4Ry339uGfIk4Ee3A7s?~cP+C?<#vJn2~23p=tlUou#G}POc-JjCXz=^>tAeE@!?{g zw~AM+q&+gC*&9~paIL+udHTS~gEpe+%!un|fze2MISH0kKiGC;wcD{4l|}Qg!(kV< z?$?v$opa0-G(qbOk-}w4+DOAeHlsFrkA^P86T1oohLR=?ZCEbs%M)$&8+MZg^+~cC z?dT1oL&o&ubX)gGZN*x98E$Sl>E`0vd|SihmXCr#=~I~TPNliTPX;`mdATgSt|{YO zZ|;`@!w5eYEw`)ta&=q2p61Qk>5=5?^v&&y9}jG|kL9w6FZKm>T^=c62v{}vp!B!q zQ5X^N?N-0&iC()}AQ%)XcDrdRh1Qo(K?3DOpNE*=b%YS26rHh}sY|y{qE3xBX`G^LJ$>}Zn08! zr7nr2atTBX{CoBu*#xyvpncnFX6%Yi)QbV-AIhnSSX#D1PwbM~@&Tm|(0;!JDz?%2 zOXnB6$I2Fmh>g9IU>e_E!9^+0F!D7|B-Xw^(4k>`TRPes;mM;^RcV@87*>rx$ldm3 zZzg8NI$Va<^_zz9YVxyNh9FnPF-kzwr!REVnqPx^ns z;Z;zx=dk>f_zGl?)W!zdeYLuT6U(`mG>AvJAbZRd)4I(?#3r?21Z$g6I8Af!FwAlk zQh{rQm*jEr)`r(1LspCY6w*9y-82JS*ulCBVi%8Rr4Jj6-g5u9tJL6*0QX%vm9jG~ z)^{b+hl-?`nfbq3mMUz<8AJ0sX$t=y^?&V#)VmD`~q32ZI{Do+; zuM*fUDe-Q!!bTEKQ7U~S!-Aq_X^SK;S(KXrsa6r=4U>FaXf0iukTRBFA;e@c=wn#n z3z{Gn+{19zlDAnJefUKRVW*5j(1cC1X@uLKNg4+o4L#xgl0b3CR)76?%QAU9*Zpi zim%oXyk*Rr0;+4%W54@`MytFl-j@h)(Bec((kJ1NC8x@c=`DAiVP4e@y!Q?|K!7t&0lxEuGwOQ9yFRs*uJ;LD@$Mlgj*SKSe9+2S;2sYJBRLGItS|=@@$Fi^$5K7 z9>yXdX*-0P3c>tDJq!!+3@#&Wd6;c%p68sgSGl65o&>7ZjYZlWe z&rFClS`uJok$)1Q)OVy0yB#+7GbFmdVx<6S|Mx$~=}gOgB4pN2hIc(e%ucdb3!Vm1 z#f1t-RBbSean_J!<+T%WHLRoz6=73e-L8vmpQz=EmablEso;JqT21h?M7@u`$P62O zq&7DN_;{2B6wrZCAJfYl%X9(lpz-p{z%lc&QzO^f^la)#zC==)u4##y)%TlGzHJn82ushuNfk&S zBL-!|h4bKz+Sz56+b*Uw6`+NdR)UZ`OH4eVOpZWBXuAe>h4cm(&~d7(hM}YI;-F=% zg<1md43YZs=itByZ{)Y4;Z+ut&Kv33!z&#rE4U!D49pN2P3C}`1*>8GZPCzKTwtUbe*A1XO^P@y zZE7uK<_b-a%&=TBdaNJW^&>7l+^L|?MKBMtDP?GFi&V^Tak+aE?jP=2DYE z^T?@#?dUf4&!=>F9!8-wqd<%;^@qYM>{V&|^a*)+8vh_&{D4S&37G+6ckz%OxsR zi3=9fG6xC=Xj#6WH~Sh4L%(5!D>P=H0#fMrBSRwH6g7VO(Bx@F|l@ z*){xv3ZwcVq3Z_D0*?#cLnYV$%>9gtp07xOqO6y0@G^Ck>ecS^5{X;pSLkG7cvp+` zaK8e{GBu9*d)-DhlwCivnpKOIm(LYDa;$YTo+Z_uIDhBU4~slA`u6K^TD;FtSR%hI z-MUwv?>!z8CW;R$Vd{gA>C4hnd-W& zw9h<)BGEHTlC5_2J7W$(W(Uy4c%@mj7g-*5qrvQxjDE=^mK81D_6^ndMW6ZjUw(Xe3AYLAa=zD^pKj-k6s;V5gWSF$d1837d-`0{Mi_b)PK&BFV?K8VIXmLnK+R} zqI2(N)Z9u+aqx6LT?P=%?#RP>xL13{<4hDFh||MSzx~V#HJ9q%)kV{Xea|}g;K~ij zaT9p?icfEY9FslU`{$P`=D z7oa6NloC8Pj$|yN(p>0cl*b5wuJk9k9dV$eNT&3~-J5UrYP5pHIsN{WEsnx51$)L- zs$a+ao2N-`}c!stVWmRR$t{HK?t= zA#Hc~_%{vU#1%R?Up|)?{}xvkBLU7z1>u^wSA9V~1m0PmU}Y#b+}x0p5av86!UcRO z^fQv$guAxZZ}`mhMmHvb#+x-myWm6oOShQ2 zXQp6pKv-7oVBn#RZyfPko9e6lGc5^ooeo(~s(lfXi6c~b*LWHy61*g4rWV5hbLH+? z67k~F1xJOQ8|F;&#}K6bTDa;&r1CJ%hQ69}Luy*M9>10dS_g;@2EAQ5&MF9f88FbW zD?J(69qsua$zZ$(`WVfb)){XJP2r`O;n}BJV*z-J=fqFHZ1n17F&>X5;~wbMJOh)m zcG5vhTjSj)k>?*<7Z}eC9ZZKJ>bvM_&56m(^T8DUrhuLM5_EjG5@LKWaWfuO;i5Ez z=L+ZKf>9&?{8YUA&~a;*`E%yA7_;dTgU97Qw>9s0dze$sIH-__*BDzX%-Abg^SlVU zEg7H8acAuNl}8}W_*=v053Hxsh3&>&E-_JYG1*!FqWO$M0nSPMrm z*%Pr}Cc4kh9zS?Ze0k9vyGs7=n`_++_Grj)v6OtQTp`b_8-MD&tZL1vZYcfIE;|me zYE(ouTE)hcjH#yTXvu2}nDd@Bb99&pIvoB?8!D>x&w_=6?qpw zmAA)#j@>Y?3C#oY$%~C^(bpKvUY7;6ZmJCextk)H4QO1~H z!>zNn>LGLMGUO)xDQl~&H|*MVsETD{M|JIEX`6&!grc8r`JQA5K2XAwuwMIy(s*k3 znsae@%(9{>)P>k(#lwmRFUmD-RD2*yJ%I2~2bJn}{=nY5|$EpGst$loLMTrC;Cj4->+>ITqgTDfnV7ke--K=?5Upw4 ztvqHcnxB?vD;Jh5U(p04K3kdr%E2lHuk$mCgP`{-OEB1z{Wwn8Z=1t@Kwsu3^=d(7 zh?6ErGcwm31iVi!k*!^VXfk)UobI8{R;wX`-Jt#sc$ zI3NZnejWGh1i=G$P9&Hghnk60O)<)^l?tmCEqK1JHY{S)15AQ}{W#K-mJaS04vI(# zc|%AouhK~MoNEz;H2@wl$n`CP6x=^FR{{jg6%{(xxIPY@e?_sg{f>{S2xw|{aAaxc zxC!@mWmP-H{~^~S%sI+#^H8LxIX6{K1Gh3i(QVFk%Gb7yL@yNGe;!i>pF5)5CK8(! z@t`HcX&$SIn1vT7yPZ5_;&7OGoyDImlf&W@FOTcsB#ko*>v;C^NQf&yp1L%)u47{5 zD~s^LGDzDM{Dw?~#MXE#ll5%(s~>xh1+A442W70v%NEfL){2+7&+7nv3*g)|w7fH0 z1wJM!NWaoUJdb0~sWl_2>uTyIMa4av*y8KS+)hj1y3jDZDPD?TCXeW(LhjH-vj=Zz=CZJ$Wj zz1fW;X1ilMFRJH>-L`A>cp-J$xgmyM%fm!WH!!O3{U~Pp6X}`L_h3~yHanGJS^Py} zIbyQBr!$u;mifG9u}h|G`eOgG(#eK;Gqp^5aX2|H(n#T`g9FbWDNVA9hu!o3sqvjIv?^kzMnhF-_87}DqGEo_R7zQ&;znwtSyVTJl; zn-0(M(~Q2-DA7O$xFFf}tT^4eeF@*}*~cD<%962->?Zpf!YI3B>_iJ?m!*)Vu@uH2`%*KuQ1(ef zywBkKet*k*U0tt#9@jbdIp==PxzBy(I_G?z`@%l?$Y{^lES~1~jCathNSf~sQeTp! zm*vxXMzc@3zHSs;oi@=(Z5{uJWAX)lhU1s*OuP$4Y8zv5AVyHJ-Xz|_1 z>~`ZJF#Q*6Hq@9XYF4<1g+$3mP)LadJC&#ZM(^YV845MshfZ5rxW$eYcTop)I`U)l zlpe$;V7WvIeS)GC@^HS>XUEkovUV`&0-U7(3jsgZloyvz{uHnBur*r|TzS&GYBjqv zQ_3b|(|@O~QEtaK;rN5y_v+j<93M!A%dNCPf)G3~L=;a;@!f4OnmeP#j;xSO@00pxJJHoMut9Af=d}FB+MvRoY zY)p8(name@ok{eyG?lov1sFJm)Kq_Ov*74#&l#*W~F{*WKm!;7=<82StXhMEP8v>-?^~{yhmi0S;Q4 ztTnr(C}m#!iqtjtRXxYfrm%M-2=?hbf!RU2`JJrkprcWk`(?emlXq=CtO$y^oOUCRNMoD-a3#UANQ^G&Xtri7B_1Dj0bn~8b#(^a;rgkO@^x{ zc4D>{`CHjrJ7;e|J}5V*rQ~QyoZSpy?s^d-a^6`@!@PmYX)YwR4n}K^9PuWxwB0Ma zJ+NK6Gf_foP^h$!^$_`Bm$~{4+9H35^)bzYkw>>yT#3Mj#j3(jx=+86R;M#q(-Xv# z*{v$&X8L>C7J;Ky0)=*zfKs3zgz@HSPxd~FnwUB!Q;k@?scN}j^or)3sEef$m@k4n z_o?=GYwwrWI!5$TB@AI+e$_nR%6p0)lo=|HTn20CClHP zxU~7Lb5)*lNPsJybUrfMJ$cdJfIh|#@gNcWwq@|aW&7HKbmDDWZX+|9^AyGpXRgiv zHO98+k?GDGT0kmd=aiQcu({%(&bwOT@~PmvGm68~ob&NR-H0n|1uYr8IMEC6a-^B? zh>RlJTW2Z?N5733r`UF@>oJN>B%js6&(b&MC6=gSJTQ!L+<%2QPVOA9Cv9(i?4fjj zY+SAoK!u%d+P39Fh;sWr>EN!g_3r3xNZuzl*w3h^6h{rBsTde5_d#L}qP9Vv$ce&Z_L8#dQV&PZjJ zj%NiTM=iyfd*Ka;_q|BXjUpjVQE<)8hTvfkuDdr6RI_zL;3;A&;WgE}TXXu3iyz=9 zZJk<6yn#9VrGfY8pik4nyvcm|A8;rmQpzq-rQnEiy@v?--mRf+-uq0IIRMR|#w} z2wr{_GZyKFt)#g_7?uTRMHyGx8M;l4Zb z7i~=|?y5O7=5bPFy?r#L-L;b8&+I{6>1$o)o z*{w;6jHGYZ1e=wVTYneq+uqkbsrTfjILK3a{4P{N)!le8Q(ZW?qUQQa9_Hg(&~eV= z7N_nGjl?lRV+>OL=fu6QRPS(#zUHVcp}lYt*t~K*o+ZoGQ5Y>nCu;OrLXvlQYo?7? z$E>+ji1>o+ zGf9&-Zj)N?>|IW}=Xh$j1%>jTLY$?=nSR4UATjBnC=ZzE9c8n*woPY*XG}@yWuZtR z)WrVGbN3Bn{cF3b$M2~HgNd@n`u7;XXh}HtbDj4rS{DW$3kq>`kdo~fUNf9_XTq2H zPk#z|zF7Ju$%F1o0YdpeDC=&V=Ho4%;^OnBrgUQicmz(y5lq*2TjE-R zv=H2j{gZ0B&1Xs|hY53TPqPu0&w(~L^p@mRVKYWbqCB5oOdb3#T%_?*+ruoh;Pj6k zi?;l=zN+Cp=yAfSYFltjt}e8N%I~wY+OW(S14X$8W=0=%x!-iG1Zjbbw>5Cvq|x-g zXom9R7X>gtf2fIk=*qT37O@^;l zcI!~L+YOt07j#e!jC?oV6|`4M=5j|tBI)N$)K*M2k4DYjUC(}M9Obk&!deabye6Dw)qXZe; z4&y}ee{*?;&6#ZSi_)yA4UU%Nh39;GanXi>_16zx+7}-Lc8@tZPX|{8-`Ux~CH&Mh z@>JQ2CpJd^W&_RK^vG#d3lqAL5#Uh}`eXWwI`u_Sst02CRxIkvYhX3h(-SR*mU^cz z3TSmH;a2^DN>Cv5^J!34SPpbyZ1IDmbi>H2Z+eVGZk;wADyT^eIg2( zT&10_nW}sTORYYeqzKZ8wjCSD&Kue=IUlIfMCfrLC%zZML=ddR;+ao9f~k*RnEGC0ZuA)yWd(tiNZiSPOQ zArm%JQ~91ADj{z}!u{5Exbvmgb@sAZH?FHBC)HWd0!7KpD5u{}*_&8R^dK6^$K7kO zjv>RP@0Oqd+nF?e(UqS5*4NQzOFi`^afAR;6Lw+0=N4ORK6V(9LKciD?rciK4^(p4 z!z7T(JVtEIV#LZ!S~(yK7^3SaP>plr@VoT3CaxiZr087r0WS|tkrlw?y!7$&wyrS9 zVPZje$JUbz=*GX~hlB-^#^}Av?eXXMSeH9A=C#R1BGQZiee&zk(HJB`M_gq}px%{S zA_oqqikd`a4#)>BX=qDFI7>ZOo2?oQGcwb;eX9JedGh8*36^bdq?+jaP{iW#TQ$4 zXVSl8QQBmqR5Nw>3SIM7+!VuZ*)!2I*4aJJcF#02pn zF0cren|GfOy+#I`lR-CvfMMIuNtE_(MO5{Bg_(0Yr$S`Oit%e@pg@RTpJq*|D_(fg zhoI@Zp(%TsS~{xaW_9C56(C{T0XGCOgdkWhcu7#$N$+S#PJ%I$dyP|DIcEbjjbF-} z3|nx_ry>8YGy_y4?A6YQxiOx<)Qm-09=(JMbZwp3q8r~8w}lc$un2=CSmsrnVMkS# z2w*mPdK&mwWBrt$Q9Y$|3K68ep5G2;8kWAH4Mg6Jx+3%sG z$vNU)9P|Ca=8m?9XtNvf&jjWs6(AlhhLC?zB~hOet71K@^J23ZD>2N$!pAMtlDg0G zZ|eRaVz&yh%9Jd@`L>Bq{FQ$a^8U9ipH!H)x_(vLui(+O)fW%gLZJk2eNb)>*;;uZ z)e~e3G+7D#0r4W?uv=Q|{<$ETk|RB()9{t!tiky^C}CfQmjG^3;#pAcuk8HycshbH ze@#zpBJ$@gFr>f-fh9IYnO&F2odDQK4v4#6D+sW2|~ia z17sn<$b3wfX_@KspIcU#FF%sBlPZ*a;{2hCzh&29%DRj3;PVM&m+UgaOw0Trp?fQ{ z;i`iCg_S&)zgx)%?clJ!<}cB(3rtI5*t0=o)elDXyff>tM7`>;ofN?W@=OM9{am{%S8&m1KWkT3Ny3khK{UiKreo6_M0pF^k(T_t%6Q7Pmj{g z4C2=U75O)|F7$2aR83#zJ9H7c@qm+9c4e+%YgBmU*uF5YIM3p0c@TzkF7 z;}%(N53|k5d{8m-3rT)|fIx@&1M{Ed-7h;S+m**39mh%JbTaF{c4@g+UOpC3zTpv) zt?`=p$o11e7TKFFbJe5mESKG-FkYO>Jc)dsTd5=VF!BED+!5OL{Zw+{J z{#ySUB4F!QMvhcP)`cau-T^|kz9B9!JCRVhapbPQP_O_J}Y%$qC7z-`(Wr zf0ObDvzPd& ziXpiBFdpec5V&Ne^E6M{l^ zNLhVAQa}C`2kSvcL@>R5buO!2%hYW$9bY1GD6|Fj)=Pygz2=m#4t#zPYf#5=%;yv| zWeHsfQzlm<7=JEHT^@=ngemQ|k`oF9+h0!@n$8ej94r$ipP8of1vb+_sDAEJUb4W; z;Kqs8tbVaaeXgc=%L1Y?BiQiQ2POGiVE84Ks^Q|!jHK4OT@{(5znUe!NYiA{eGKH0 zHw3-=ok{BN9F93^oqEu@Z&rVb-1+~DxVd`TbaCdBLJ@TnSud!Tk!HF2?a2QD?qSju diff --git a/data/reusables/code-quality/dismiss-irrelevant-findings.md b/data/reusables/code-quality/dismiss-irrelevant-findings.md deleted file mode 100644 index 32ee53002c5f..000000000000 --- a/data/reusables/code-quality/dismiss-irrelevant-findings.md +++ /dev/null @@ -1,7 +0,0 @@ -You can dismiss a finding if it isn’t relevant or actionable in the context of your codebase. Common reasons to dismiss a finding include: - -* The finding is in legacy code that’s no longer maintained. -* It’s a known exception to your team’s coding standards. -* It’s a false positive that doesn’t pose a real quality risk. - -Dismissing irrelevant alerts keeps your quality checks focused on meaningful issues. diff --git a/data/reusables/code-quality/fix-findings-with-copilot-autofix.md b/data/reusables/code-quality/fix-findings-with-copilot-autofix.md deleted file mode 100644 index 5eb0c961cd2d..000000000000 --- a/data/reusables/code-quality/fix-findings-with-copilot-autofix.md +++ /dev/null @@ -1,3 +0,0 @@ -Comments on the pull request include a suggested **autofix** that you can commit directly to your pull request. Carefully review the suggested autofix for logic, security, and style, then click **Commit suggestion**. - -You don't need a {% data variables.product.prodname_copilot_short %} license to apply these suggestions. diff --git a/data/reusables/code-quality/shared-workflow-preview.md b/data/reusables/code-quality/shared-workflow-preview.md deleted file mode 100644 index 16cb54d22753..000000000000 --- a/data/reusables/code-quality/shared-workflow-preview.md +++ /dev/null @@ -1 +0,0 @@ -During the {% data variables.release-phases.public_preview %}, {% data variables.product.prodname_code_quality_short %} uses the `{% data variables.code-quality.workflow_name_billing %}` workflow that is also used by {% data variables.product.prodname_code_scanning %}. diff --git a/data/reusables/copilot/create-managed-settings.md b/data/reusables/copilot/create-managed-settings.md deleted file mode 100644 index 16580384896a..000000000000 --- a/data/reusables/copilot/create-managed-settings.md +++ /dev/null @@ -1,3 +0,0 @@ -1. Create or update your enterprise managed settings file using your preferred deployment method. For a comparison of deployment methods, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/configure-enterprise-managed-settings#choosing-a-deployment-method). - - For server-managed deployment in a `.github-private` repository, create the file at `copilot/{% data variables.copilot.managed_setting_file %}`. The legacy path (`.github/copilot/settings.json`) is also supported. From 53b82e7900c12c5cd88cad696f9abbea21e097ba Mon Sep 17 00:00:00 2001 From: Laura Coursen Date: Tue, 21 Jul 2026 13:13:01 +0000 Subject: [PATCH 14/17] Add shared writing principles to always-on content instructions (#62306) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fcd81257-f535-4567-8ea8-72fb660a530b --- .../content-guidelines.instructions.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/instructions/content-guidelines.instructions.md b/.github/instructions/content-guidelines.instructions.md index 0efb2d4d2344..112bfc56d9c4 100644 --- a/.github/instructions/content-guidelines.instructions.md +++ b/.github/instructions/content-guidelines.instructions.md @@ -19,6 +19,20 @@ The strategic priority is simplification: create less content and remove content * Would a typical internet user figure this out on their own by exploring the UI? * Is the information presented at the moment the reader actually needs it? +## Give opinionated, actionable guidance + +This applies whenever you give the reader advice or present ways to accomplish a task. + +* Be opinionated when there is a better way: when several approaches exist, recommend the best one and explain why, rather than presenting all options as equally valid. When they are genuinely equivalent, stay neutral. +* Tell users the best practice AND how to follow it: whenever you state a best practice, pair it with concrete steps or an example so the reader can act on it, never the advice alone. + +## Focus on the reader's purpose, not the product + +Frame an article around what the reader is trying to accomplish, not the product or feature they use to do it. This applies when naming an article or deciding what a new or substantially reworked article should cover; do not use it to justify restructuring an article during a small edit. + +* Title articles by the reader's goal, not the product or feature. For example, "Secure your enterprise", not "Use GitHub Advanced Security". +* Scope articles around a task, not a product. When a task naturally spans multiple features or products, look for the opportunity to cover them together in one task-focused article or tutorial rather than splitting into per-product articles. Keep each article to a single purpose (the task): combine features only when they serve that same task, not to bundle unrelated capabilities. + ## Intros: pull people in This section applies mainly to the `intro` frontmatter field and, for conceptual articles, section openings. From 278206004c2312cc6c1b74180fb0fdf7df59e957 Mon Sep 17 00:00:00 2001 From: Sarita Iyer <66540150+saritai@users.noreply.github.com> Date: Tue, 21 Jul 2026 13:39:20 +0000 Subject: [PATCH 15/17] Refine Copilot app quickstart (#62323) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Copilot-Session: 29ffa301-8099-4901-bf9f-05f51b1b7c66 --- .../github-copilot-app/agent-sessions.md | 2 +- .../github-copilot-app/getting-started.md | 77 +++++++++---------- 2 files changed, 38 insertions(+), 41 deletions(-) diff --git a/content/copilot/how-tos/github-copilot-app/agent-sessions.md b/content/copilot/how-tos/github-copilot-app/agent-sessions.md index e631dd158188..72fd90d0bab8 100644 --- a/content/copilot/how-tos/github-copilot-app/agent-sessions.md +++ b/content/copilot/how-tos/github-copilot-app/agent-sessions.md @@ -18,7 +18,7 @@ category: Each session in the {% data variables.copilot.github_copilot_app %} runs in its own isolated workspace, so you can run multiple sessions in parallel and make progress on several tasks without conflicts. 1. In the sidebar next to **Sessions**, click **+** to start a new session. -1. Choose a repository—you can use a local folder, choose from {% data variables.product.github %}, or clone from a URL. +1. Choose a project—you can use a folder already on your machine, choose from {% data variables.product.github %}, or clone from a Git URL for repositories hosted outside {% data variables.product.github %} (for example, on Azure DevOps) or for private repositories without app access. 1. From the dropdown under the prompt box, choose where the session should run: in a new working tree, in your local repository, or in a cloud sandbox. Cloud sandboxes for {% data variables.product.prodname_copilot_short %} (public preview) are fully isolated environments hosted by {% data variables.product.github %}. 1. Select a session mode, model, and reasoning effort from the dropdowns below the prompt field. If you choose **Auto** for the model, the app selects the optimal model for your task based on task complexity. 1. Describe the task in the prompt field. You can reference issues with `#`, add files with `@`, or use `/` for commands. diff --git a/content/copilot/how-tos/github-copilot-app/getting-started.md b/content/copilot/how-tos/github-copilot-app/getting-started.md index e186f1fdff93..3d101036017d 100644 --- a/content/copilot/how-tos/github-copilot-app/getting-started.md +++ b/content/copilot/how-tos/github-copilot-app/getting-started.md @@ -2,7 +2,7 @@ title: Getting started with the GitHub Copilot app shortTitle: Quickstart allowTitleToDifferFromFilename: true -intro: 'Sign in to the {% data variables.copilot.github_copilot_app %}, ask your first question in a quick chat, and then create a full agent session to make changes to your code.' +intro: 'Sign in to the {% data variables.copilot.github_copilot_app %}, connect a repository or local folder, and create your first agent session to make code changes.' product: '{% data reusables.gated-features.github-app %}
    Download {% data variables.copilot.github_copilot_app %} {% octicon "link-external" height:16 %}' versions: feature: copilot @@ -16,12 +16,21 @@ category: For a conceptual overview of the {% data variables.copilot.github_copilot_app %}, see [AUTOTITLE](/copilot/concepts/agents/github-copilot-app). +In this quickstart, you will: + +1. Install and sign in to the {% data variables.copilot.github_copilot_app %}. +1. Connect a repository or local folder. +1. Make code changes in an agent session. + ## Prerequisites -* [Git](https://github.com/git-guides/install-git) installed on your computer. * A {% data variables.product.github %} account. -* A {% data variables.product.prodname_copilot_short %} plan. Alternatively, if using your own model provider, you will need required credentials such as an API key. For more information, see [AUTOTITLE](/copilot/how-tos/github-copilot-app/use-byok-models). -* If you use {% data variables.copilot.copilot_business_short %} or {% data variables.copilot.copilot_enterprise_short %}, your plan administrator must enable the **{% data variables.copilot.copilot_cli_short %}** policy. See [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-organization/manage-policies) or [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-enterprise-policies). +* Access to {% data variables.product.prodname_copilot_short %} or a configured model provider. + * If you use your own model provider, you will need provider credentials such as an API key. For setup steps, see [AUTOTITLE](/copilot/how-tos/github-copilot-app/use-byok-models). +* [Git](https://github.com/git-guides/install-git) installed on your computer. + +> [!NOTE] +> If you use {% data variables.copilot.copilot_business_short %} or {% data variables.copilot.copilot_enterprise_short %}, your plan administrator will need to enable the **{% data variables.copilot.copilot_cli_short %}** policy. For more information, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-organization/manage-policies) or [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-enterprise-policies). ## Installing the {% data variables.copilot.github_copilot_app %} @@ -34,56 +43,44 @@ For a conceptual overview of the {% data variables.copilot.github_copilot_app %} 1. Click **Sign in to {% data variables.product.github %}** and follow the prompts to authenticate. If you use {% data variables.product.prodname_ghe_server %}, choose **Use GitHub Enterprise** and enter your server address when prompted. 1. If you do not have a {% data variables.product.prodname_copilot_short %} plan, choose whether to sign up for a plan or continue with your own model provider. * If you choose to use your own model provider, select a provider, enter any required credentials, then click **Save and continue**. -1. When prompted, select one or more repositories based on your recent {% data variables.product.github %} activity. You can also add a local repository, or skip this step and add repositories later. +1. When prompted, select one or more repositories based on your recent {% data variables.product.github %} activity. You can also add a local folder or repository, or skip this step and add projects later. 1. Choose a theme, then complete onboarding to open the app. -## Connecting a repository +## Connecting a repository or folder -To work on code, you need at least one repository connected to the app. If you skipped repository setup during onboarding, or want to add more repositories later: +To work on code, you need at least one project connected to the app. A project can be a folder already on your machine, including a repository you've already cloned locally, or a repository you clone from {% data variables.product.github %} or another remote Git host such as Azure DevOps. Connecting a project unlocks the core app workflow: reading code, making edits, and opening pull requests from agent sessions. If you skipped project setup during onboarding, or want to add more projects later: 1. Click the **+** button in the sidebar next to "Sessions". 1. Under **Add project from**, choose one of the following: - * **Local folder or repository** — Select a folder already on your machine. - * **{% data variables.product.github %} repository** — Browse and clone a repository from {% data variables.product.github %}. - * **Repository URL** — Clone from any Git URL. - -## Orienting yourself - -The sidebar gives you access to the main areas of the app: - -* **[My work](https://github.com/copilot/app/launch?open=ghapp%3A%2F%2Fmywork)** — Browse and filter issues and pull requests from your repositories, check CI status, and leave reviews. -* **[Automations](https://github.com/copilot/app/launch?open=ghapp%3A%2F%2Fautomations)** — Saved agent tasks that run on a schedule or on demand. -* **Search** — Search across your repositories directly from the app. -* **Sessions** — Active agent sessions, grouped by repository. This also includes **Quick chats**, which are general chat conversations. - -## Starting a quick chat + * **Local folder or repository** — Select a folder already on your machine, including one that contains a repository you've already cloned locally. + * **{% data variables.product.github %} repository** — Browse and clone a repository from {% data variables.product.github %}. + * **Repository URL** — Clone from a Git URL for repositories hosted outside {% data variables.product.github %} (for example, on Azure DevOps) or for private repositories without app access. -The fastest way to try the {% data variables.copilot.github_copilot_app %} is with a quick chat. Quick chats let you ask questions and brainstorm without creating a branch or worktree. +## Making your first code changes -1. In the sidebar, click **+** next to "Quick chats" to open a new chat. -1. Type a question or prompt—for example, "Give me an overview of the octocat repository." -1. The agent responds in the conversation view. You can continue the conversation, ask follow-up questions, or start a new chat. - -## Creating your first session +1. Click **+** next to **Sessions**, then choose a connected folder or repository under **Start session in**. +1. Select a session mode from the dropdown below the prompt field—for example, **Interactive** to work collaboratively with the agent. +1. In the prompt box, paste this prompt: -When you are ready to make changes to code, create a session. You can start from an issue or describe a task directly. + ```copilot copy + Suggest a small low-risk code change in this repository, implement it, and explain the diff. + ``` -### Starting from an issue +1. Respond to any requests for input from the agent. After the agent makes changes, click **Changes** above the prompt box to view the diff. +1. Continue iterating in the same session until you are happy with the result. +1. If you want to keep the change, click **Create PR** to open a pull request for review. +1. If you create a pull request, click **PR** above the prompt box to view it directly in the app. -1. Click **[My work](https://github.com/copilot/app/launch?open=ghapp%3A%2F%2Fmywork)** in the sidebar. -1. Browse or filter to find an issue, then click it to view its details. -1. Click **New session**. The app creates a new session with the issue context already loaded. -1. Select a session mode from the dropdown below the prompt field—for example, **Plan** to have the agent propose a plan first, or **Interactive** to work collaboratively with the agent. -1. Prompt the agent with what you want it to do. If you chose **Plan** mode, the agent proposes a plan for you to review first; otherwise, the agent will start working on the issue and propose changes that you can iterate on. Follow along in the conversation view and provide feedback to steer the agent. +**Optional:** If you already have tasks you want to complete in your repository, you can start a session from an issue in **[My work](https://github.com/copilot/app/launch?open=ghapp%3A%2F%2Fmywork)**. For more information, see [AUTOTITLE](/copilot/how-tos/github-copilot-app/managing-issues-and-pull-requests). -### Starting from a task +## Orienting yourself -If you do not have an issue to work from, you can describe a task directly. +The sidebar gives you access to the main areas of the app: -1. In the sidebar, click **+** next to "Sessions" to start a new session, then select a repository. -1. Select a session mode from the dropdown below the prompt field—for example, **Interactive** to work collaboratively with the agent. -1. Describe a task—for example, "Fix the failing test in `utils.test.ts`" or "Add input validation to the signup form." -1. The agent will make changes based on your direction. Follow along in the conversation view and provide feedback to steer the agent. +* **[My work](https://github.com/copilot/app/launch?open=ghapp%3A%2F%2Fmywork)** — Browse and filter issues and pull requests from your repositories, check CI status, and leave reviews. +* **[Automations](https://github.com/copilot/app/launch?open=ghapp%3A%2F%2Fautomations)** — Saved agent tasks that run on a schedule or on demand. +* **Search** — Search across your repositories directly from the app. +* **Sessions** — Active agent sessions, grouped by project. This also includes **Quick chats**, which are general chat conversations. ## Next steps From 8d33368316f47044cce76bb7b89a085bd4374ecb Mon Sep 17 00:00:00 2001 From: Sophie <29382425+sophietheking@users.noreply.github.com> Date: Tue, 21 Jul 2026 13:53:09 +0000 Subject: [PATCH 16/17] Removes reusable articles from enterprise onboarding (#62354) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../organize-work.md | 38 +++++- .../use-innersource.md | 59 ++++++++- .../automations-in-your-enterprise.md | 2 + .../roles-in-an-enterprise.md | 28 ++++- .../teams-in-an-enterprise.md | 71 ++++++++++- .../audit-log-for-an-enterprise.md | 36 +++++- .../enterprise-policies.md | 7 +- ...ies-for-repositories-in-your-enterprise.md | 35 +++++- .../assign-roles.md | 43 ++++++- .../create-custom-roles.md | 32 ++++- .../identify-role-requirements.md | 76 ++++++++++- .../create-enterprise-teams.md | 59 ++++++++- ...reating-github-apps-for-your-enterprise.md | 40 +++++- .../index.md | 2 + ...talling-a-github-app-on-your-enterprise.md | 2 + .../automations-in-your-enterprise.md | 16 --- .../github-apps/create-enterprise-apps.md | 16 --- .../github-apps/index.md | 15 --- .../github-apps/install-enterprise-apps.md | 12 -- .../about-enterprise-policies.md | 18 --- .../create-custom-properties.md | 16 --- .../govern-people-and-repositories/index.md | 3 - ...using-the-audit-log-for-your-enterprise.md | 14 --- content/enterprise-onboarding/index.md | 29 +++-- .../about-roles-in-an-enterprise.md | 18 --- .../about-teams-in-an-enterprise.md | 18 --- .../assigning-roles-to-teams-and-users.md | 16 --- .../best-practices.md | 18 --- .../creating-custom-roles.md | 16 --- .../creating-teams.md | 18 --- .../identify-role-requirements.md | 16 --- .../index.md | 8 -- .../use-innersource.md | 17 --- .../enterprise-onboarding/about-audit-logs.md | 33 ----- .../enterprise-onboarding/about-policies.md | 5 - .../enterprise-onboarding/about-roles.md | 25 ---- .../enterprise-onboarding/about-teams.md | 68 ---------- .../enterprise-onboarding/assign-roles.md | 41 ------ .../enterprise-onboarding/automations.md | 119 ------------------ .../enterprise-onboarding/best-practices.md | 35 ------ .../create-custom-roles.md | 30 ----- .../create-enterprise-apps.md | 38 ------ .../create-enterprise-teams.md | 57 --------- .../creating-custom-properties.md | 32 ----- .../identify-role-requirements.md | 73 ----------- .../install-enterprise-apps.md | 59 --------- .../enterprise-onboarding/use-innersource.md | 52 -------- 47 files changed, 532 insertions(+), 949 deletions(-) delete mode 100644 content/enterprise-onboarding/github-apps/automations-in-your-enterprise.md delete mode 100644 content/enterprise-onboarding/github-apps/create-enterprise-apps.md delete mode 100644 content/enterprise-onboarding/github-apps/index.md delete mode 100644 content/enterprise-onboarding/github-apps/install-enterprise-apps.md delete mode 100644 content/enterprise-onboarding/govern-people-and-repositories/about-enterprise-policies.md delete mode 100644 content/enterprise-onboarding/govern-people-and-repositories/create-custom-properties.md delete mode 100644 content/enterprise-onboarding/govern-people-and-repositories/using-the-audit-log-for-your-enterprise.md delete mode 100644 content/enterprise-onboarding/setting-up-organizations-and-teams/about-roles-in-an-enterprise.md delete mode 100644 content/enterprise-onboarding/setting-up-organizations-and-teams/about-teams-in-an-enterprise.md delete mode 100644 content/enterprise-onboarding/setting-up-organizations-and-teams/assigning-roles-to-teams-and-users.md delete mode 100644 content/enterprise-onboarding/setting-up-organizations-and-teams/best-practices.md delete mode 100644 content/enterprise-onboarding/setting-up-organizations-and-teams/creating-custom-roles.md delete mode 100644 content/enterprise-onboarding/setting-up-organizations-and-teams/creating-teams.md delete mode 100644 content/enterprise-onboarding/setting-up-organizations-and-teams/identify-role-requirements.md delete mode 100644 content/enterprise-onboarding/setting-up-organizations-and-teams/use-innersource.md delete mode 100644 data/reusables/enterprise-onboarding/about-audit-logs.md delete mode 100644 data/reusables/enterprise-onboarding/about-policies.md delete mode 100644 data/reusables/enterprise-onboarding/about-roles.md delete mode 100644 data/reusables/enterprise-onboarding/about-teams.md delete mode 100644 data/reusables/enterprise-onboarding/assign-roles.md delete mode 100644 data/reusables/enterprise-onboarding/automations.md delete mode 100644 data/reusables/enterprise-onboarding/best-practices.md delete mode 100644 data/reusables/enterprise-onboarding/create-custom-roles.md delete mode 100644 data/reusables/enterprise-onboarding/create-enterprise-apps.md delete mode 100644 data/reusables/enterprise-onboarding/create-enterprise-teams.md delete mode 100644 data/reusables/enterprise-onboarding/creating-custom-properties.md delete mode 100644 data/reusables/enterprise-onboarding/identify-role-requirements.md delete mode 100644 data/reusables/enterprise-onboarding/install-enterprise-apps.md delete mode 100644 data/reusables/enterprise-onboarding/use-innersource.md diff --git a/content/admin/concepts/enterprise-best-practices/organize-work.md b/content/admin/concepts/enterprise-best-practices/organize-work.md index 2c74ddd45911..9136aba3368d 100644 --- a/content/admin/concepts/enterprise-best-practices/organize-work.md +++ b/content/admin/concepts/enterprise-best-practices/organize-work.md @@ -12,12 +12,48 @@ redirect_from: - /admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/best-practices-for-structuring-organizations-in-your-enterprise - /admin/concepts/best-practices-for-enterprises - /admin/concepts/best-practices + - /enterprise-onboarding/setting-up-organizations-and-teams/best-practices-for-organizations-in-your-enterprise + - /enterprise-onboarding/setting-up-organizations-and-teams/best-practices allowTitleToDifferFromFilename: true category: - Get started with GitHub Enterprise --- -{% data reusables.enterprise-onboarding.best-practices %} +## Use organizations for work or governance + +There are two main models of using organizations: + +* **Group related work projects**: Group repositories for a specific application and related services. Teams that work on that application will then be able to communicate effectively and contribute across the different repositories. +* **Group similar governance requirements**: Group repositories that require similar policies, security settings, or access restrictions. You will be able to apply the necessary settings to the organization at scale. For example, if you have highly confidential work projects or a specific data classification, group these in an organization where only a limited number of people have access. + +## Create organizations intentionally + +Creating organizations is a balance. While {% data variables.product.company_short %} continues to make organization management more scalable, you should be intentional about why you create an organization. It's always easier to add organizations than to remove them. + +Don't try to fit unnatural pieces of your company together into a single large organization. The administrative features of an enterprise account allow you to automate processes, manage access, and apply policies across multiple organizations at once. However, there are tradeoffs of segregating work into many different organizations: + +* It's easier for people to communicate within one organization, as @-mentions only work between members of the same organization. +* It's easier for people to find resources in one organization, as there's only one place to search. + +You may want to start with a small number of organizations as you develop your strategy. After you build confidence in what works well for your business, you can create additional organizations as the need arises. + +You should regularly evaluate your strategies for access, governance, and organization of work. Cleaning up legacy organizations is a part of that process. + +{% ifversion enterprise-teams %} + +## Use teams to organize people + +Enterprise teams are the best way to control access and permissions at scale. Create teams and manage their membership as your primary means of performing actions like adding users to organizations, granting licenses, and delegating access to enterprise settings. + +When you use teams in this way, controlling membership of teams is a sensitive action. Limit the permission to control teams and their membership to a small number of people. If you use an external identity provider (IdP), sync teams to IdP groups so that team membership can be controlled by a central administrator. + +Use roles to delegate administrative duties to teams. This allows you to limit the number of enterprise owners in your company and give people just the permissions they need to do their jobs effectively. For example, a team of auditors can receive access to the enterprise audit log without being able to access any other settings. + +{% endif %} + +## Collaborate in organization-owned repositories + +We recommend collaborating in organization-owned repositories whenever possible and minimizing collaboration in user-owned repositories. Organization-owned repositories have more sophisticated security and administrative features, and they remain accessible even as enterprise membership changes. ## Use innersource practices diff --git a/content/admin/concepts/enterprise-best-practices/use-innersource.md b/content/admin/concepts/enterprise-best-practices/use-innersource.md index d50090d1d057..93470ed98edb 100644 --- a/content/admin/concepts/enterprise-best-practices/use-innersource.md +++ b/content/admin/concepts/enterprise-best-practices/use-innersource.md @@ -6,9 +6,66 @@ versions: ghec: '*' ghes: '*' contentType: concepts +redirect_from: + - /enterprise-onboarding/setting-up-organizations-and-teams/use-innersource allowTitleToDifferFromFilename: true category: - Get started with GitHub Enterprise --- -{% data reusables.enterprise-onboarding.use-innersource %} +You can use innersource practices to drive collaboration and productivity in your enterprise. Innersource makes it easy for all employees to discover and reuse work. This allows development teams to learn from each other's work, share their expertise, and avoid duplicating effort to recreate common services. + +## Make repositories discoverable + +Unless they contain sensitive information, you should aim to make repositories visible to all employees. + +To do this, encourage employees to use **internal** visibility whenever possible. Internal visibility allows any member of any organization in the enterprise to view the repository, regardless of whether the user is a member of the organization that owns the repository. + +You should also set permissive **base permissions** for organizations. An organization's base permission policy determines the default level of access that members of that organization have to all the organization's repositories. Generally, organizations should have at least a "Read" base permission so that all organization members can see any repository. Organization owners can then use teams to grant people greater levels of access in specific repositories. + +If you have more sensitive repositories that should not be widely visible, you can set up a dedicated organization with a more restrictive base permission and add specific teams to this organization. + +For more information, see [AUTOTITLE](/repositories/creating-and-managing-repositories/about-repositories#about-internal-repositories) and [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/setting-base-permissions-for-an-organization). + +## Document projects + +Organize and document your repositories so that people can search for work across the enterprise. + +Repository **READMEs** are effective because they're defined in files in the repository, so users can search for them like code. You can also create READMEs at the level of an organization or enterprise account to provide a higher-level overview of where to find different projects. For more formal internal documentation, consider setting up a **{% data variables.product.prodname_pages %} site** or **wikis**. + +You can use **repository topics** to group repositories that contain a certain programming language, are owned by a certain team, and so on. This is another way of making repositories easier to find. + +For more information, see: + +* [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-readmes), [AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/customizing-your-organizations-profile#adding-a-member-only-organization-profile-readme), and [AUTOTITLE](/admin/managing-your-enterprise-account/creating-a-readme-for-an-enterprise) +* [AUTOTITLE](/pages/getting-started-with-github-pages/creating-a-github-pages-site) +* [AUTOTITLE](/communities/documenting-your-project-with-wikis/adding-or-editing-wiki-pages) +* [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/classifying-your-repository-with-topics) + +## Set up a culture for sharing work + +Encourage teams to publicize their work and share resources with other teams. {% data variables.product.github %} has a number of features that make this easier. For example, teams can: + +* Use **discussions** to make their work more visible to other teams. See [AUTOTITLE](/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion). +* Create a dedicated internal repository for sharing **actions and reusable {% data variables.product.prodname_actions %} workflows**, which anyone can reference when they write a workflow within the enterprise. See [AUTOTITLE](/actions/how-tos/reuse-automations/share-with-your-enterprise). +* Share reusable pieces of code in internal packages with **{% data variables.product.prodname_registry %}** registries. For enhanced security, you can give {% data variables.product.github %}'s security features access to these registries. See [AUTOTITLE](/packages/learn-github-packages/introduction-to-github-packages). +* Set up common templates and frameworks as **template repositories** that other people can copy to get started with a project. See [AUTOTITLE](/repositories/creating-and-managing-repositories/creating-a-template-repository). + +Like with an open source project, you should ensure shared projects have a support model and a clearly defined team of maintainers, especially for services that many parts of your enterprise rely on. Ideally the maintainers team will contain representatives from the different teams that use the service. + +## Hide content from external collaborators + +If you have external contractors or collaborators who need access to your enterprise's projects, you can grant them a different level of access from regular employees. + +Specifically, you may want to hide internal repositories from an external collaborator. To do this: + +* If you use {% data variables.product.prodname_emus %}, provision an account for the user with the **guest collaborator** role. Guest collaborators don't have access to internal repositories by default, but they receive base permissions in organizations where they're added as members. They can also be added as repository collaborators in repositories. +* If you do not use {% data variables.product.prodname_emus %}, add the user as an **outside collaborator** in the required repositories, but ensure they are not added as a member of any organization. + +Outside collaborators (called **repository collaborators** if you use {% data variables.product.prodname_emus %}) only have access to a specific repository. These users are not full organization members, so they do not receive the base level of access for the organization, and they cannot automatically see internal repositories in the enterprise unless they are a member of another organization. + +For more information, see {% ifversion ghec %}[AUTOTITLE](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/enabling-guest-collaborators) and{% endif %} [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-outside-collaborators/adding-outside-collaborators-to-repositories-in-your-organization). + +## Next steps + +Now that you've set up organizations and teams, learn how to stay compliant and secure by setting up governance policies for your users and repositories. See [AUTOTITLE](/admin/concepts/security-and-compliance/enterprise-policies). diff --git a/content/admin/concepts/enterprise-fundamentals/automations-in-your-enterprise.md b/content/admin/concepts/enterprise-fundamentals/automations-in-your-enterprise.md index 2515ac336e74..a7b16eda1cf6 100644 --- a/content/admin/concepts/enterprise-fundamentals/automations-in-your-enterprise.md +++ b/content/admin/concepts/enterprise-fundamentals/automations-in-your-enterprise.md @@ -5,6 +5,8 @@ intro: Learn how {% data variables.product.prodname_github_apps %}, external ser versions: feature: enterprise-apps-public-beta contentType: concepts +redirect_from: + - /enterprise-onboarding/github-apps/automations-in-your-enterprise category: - Get started with GitHub Enterprise --- diff --git a/content/admin/concepts/enterprise-fundamentals/roles-in-an-enterprise.md b/content/admin/concepts/enterprise-fundamentals/roles-in-an-enterprise.md index 043426f25e3a..521307212d67 100644 --- a/content/admin/concepts/enterprise-fundamentals/roles-in-an-enterprise.md +++ b/content/admin/concepts/enterprise-fundamentals/roles-in-an-enterprise.md @@ -6,12 +6,38 @@ versions: shortTitle: Roles redirect_from: - /admin/overview/about-roles + - /enterprise-onboarding/feature-enhancements/about-access-permissions-on-github + - /enterprise-onboarding/setting-up-organizations-and-teams/about-roles-in-an-enterprise contentType: concepts category: - Get started with GitHub Enterprise --- -{% data reusables.enterprise-onboarding.about-roles %} +## What are roles? + +Roles allow you to delegate administrative duties and manage access securely at every level of your enterprise. + +A role is a **set of permissions** that you can assign to individuals or teams. A permission is the ability to perform a specific action, such as changing billing settings. + +A user in an enterprise has roles for both the enterprise account and organizations where they have access. + +* The enterprise-level roles define the user's access to enterprise settings. +* Organization-level roles define the user's access to organization settings and repositories in an organization. + +## Predefined and custom roles + +Organization and enterprise roles can be **predefined** or **custom**. Enterprise custom roles are in {% data variables.release-phases.public_preview %}. + +* Predefined roles, such as enterprise owner, organization owner, or billing manager, are available for all accounts. They grant a predefined set of permissions to users or teams and may contain more permissions than someone needs to do their job. +* Custom roles include your choice of fine-grained permissions. They can include access to account settings and (for organization custom roles) repository access, allowing you to provide teams with just the access they need to do their jobs. For example, you could allow a team to view your enterprise's audit logs without allowing them to change any settings. + +To follow the principle of least privilege access, we recommend using custom roles if they allow for the permissions you require. However, not all capabilities of predefined roles can currently be replicated in custom roles. + +## Who manages roles? + +Enterprise owners can create custom enterprise roles and assign enterprise roles to users and teams. They can also create custom organization roles to be used across organizations, but these roles can only be assigned by organization owners. + +Organization owners can grant organization roles and create custom organization roles, but cannot edit roles or change role assignments that are defined at the enterprise level. ## Next steps diff --git a/content/admin/concepts/enterprise-fundamentals/teams-in-an-enterprise.md b/content/admin/concepts/enterprise-fundamentals/teams-in-an-enterprise.md index 2cb2e078124f..2b7e09f9c847 100644 --- a/content/admin/concepts/enterprise-fundamentals/teams-in-an-enterprise.md +++ b/content/admin/concepts/enterprise-fundamentals/teams-in-an-enterprise.md @@ -6,12 +6,81 @@ versions: shortTitle: Teams redirect_from: - /admin/overview/about-teams + - /enterprise-onboarding/setting-up-organizations-and-teams/managing-organization-members + - /enterprise-onboarding/setting-up-organizations-and-teams/about-teams-in-an-enterprise contentType: concepts category: - Get started with GitHub Enterprise --- -{% data reusables.enterprise-onboarding.about-teams %} +## What are teams? + +Teams are **groups of users** in an enterprise or organization. By creating teams, you can manage users at scale and simplify access, licensing, and communication. For example, you could create an auditor team for users who need access to audit logs{% ifversion copilot %}, or a {% data variables.product.prodname_copilot_short %} team for users who receive {% data variables.product.prodname_copilot_short %} licenses{% endif %}. + +**Enterprise teams** are managed at the enterprise level and can include users from across the enterprise and its organizations. With enterprise teams, you can centralize administration and manage organization access, roles, and licensing at scale. + +**Organization teams** are managed at the organization level and can only include members of a single organization. There are certain features of organization teams that are not currently supported for enterprise teams, such as CODEOWNER status. + +## Can I manage teams from an identity provider? + +{% ifversion ghes %}If you have enabled SCIM user provisioning on {% data variables.product.prodname_ghe_server %}{% else %}If you have integrated {% data variables.product.github %} with an identity provider (IdP){% endif %}, you can link teams on {% data variables.product.github %} with groups in your IdP. When membership of the IdP group changes, the change is reflected in the {% data variables.product.github %} team, allowing you to centralize access management. + +{% ifversion not ghes %} +The capabilities of this feature depend on whether you use {% data variables.product.prodname_emus %} or personal accounts. + +### {% data variables.product.prodname_emus %} + +{% endif %} + +You can make changes to IdP groups to manage repository access, add or remove users from organizations, or grant or remove {% data variables.product.prodname_copilot %} licenses. For example, if a new user is added to an IdP group that is linked to a team with access to an organization, the user receives access to that organization. For more information, see [AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/managing-team-memberships-with-identity-provider-groups). + +This feature is available with both enterprise and organization teams. + +{% ifversion not ghes %} + +### Personal accounts + +Team synchronization allows you to centrally manage any privileges linked to an organization team, such as repository access and CODEOWNER status. However, team sync cannot be used to add users to organizations where they don't already have access. For more information, see [AUTOTITLE](/admin/managing-iam/using-saml-for-enterprise-iam/managing-team-synchronization-for-organizations-in-your-enterprise). + +Team sync with personal accounts is only available with organization teams, and you must use Entra ID or Okta as an IdP. + +{% endif %} + +## What kind of team should I use? + +To simplify administration at scale, {% data variables.product.company_short %} recommends using enterprise teams for any use cases that apply to the enterprise account or to multiple organizations. Organization teams are useful when the need for the team is scoped to a single organization and the team can be managed by an organization administrator. + +You may need to create organization teams if the functionality you need is not covered by enterprise teams. The limitations listed below reflect the current capabilities of enterprise teams and may change over time. + +{% data reusables.enterprise.enterprise-teams-can %} + +{%- ifversion enterprise-teams-ga %} + +To @-mention an enterprise team, or request a review from the team, use the team's slug in the format `@/ent:TEAM-SLUG`. {% data variables.product.github %} generates the slug from the team's name and adds the `ent:` prefix, so an enterprise team named `Platform SRE` has the slug `ent:platform-sre`. + +To mention the team from an organization it is assigned to, such as `octo-org`, use `@octo-org/ent:platform-sre`. You can mention an enterprise team from any organization the team is assigned to. + +{%- endif %} + +However, unlike organization teams, enterprise teams currently do **not** support: + +{%- ifversion enterprise-teams-ga %} +{%- else %} +* `@-mentions` of the team name in organizations +* Review requests of the team in pull requests +{%- endif %} +* Adding the team to a project board +{%- ifversion not ghes %} +* Team sync if you use {% data variables.product.prodname_ghe_cloud %} with personal accounts +{%- endif %} +* CODEOWNER status +* Secret teams +* Nested teams +* Team maintainers + +{% data reusables.enterprise.enterprise-teams-limits %} + +For more information about the capabilities of organization teams, see [AUTOTITLE](/organizations/organizing-members-into-teams/about-teams). ## Next steps diff --git a/content/admin/concepts/security-and-compliance/audit-log-for-an-enterprise.md b/content/admin/concepts/security-and-compliance/audit-log-for-an-enterprise.md index 0ae676f46dc8..feae403c0956 100644 --- a/content/admin/concepts/security-and-compliance/audit-log-for-an-enterprise.md +++ b/content/admin/concepts/security-and-compliance/audit-log-for-an-enterprise.md @@ -12,6 +12,8 @@ redirect_from: - /admin/authentication/managing-your-enterprise-users-with-your-identity-provider/auditing-activity-in-your-enterprise - /admin/identity-and-access-management/managing-iam-with-enterprise-managed-users/auditing-activity-in-your-enterprise - /admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/about-the-audit-log-for-your-enterprise + - /enterprise-onboarding/feature-enhancements/about-the-audit-log-for-your-enterprise + - /enterprise-onboarding/govern-people-and-repositories/using-the-audit-log-for-your-enterprise versions: ghes: '*' ghec: '*' @@ -20,7 +22,39 @@ category: - Secure and govern your enterprise --- -{% data reusables.enterprise-onboarding.about-audit-logs %} +## What are audit logs? + +> [!NOTE] +> {% data reusables.webhooks.webhooks-as-audit-log-alternative %} + +{% data reusables.audit_log.retention-periods %} + +{% data reusables.audit_log.audit-log-search-list-info-about-action %} + +{% ifversion ghes %}Site administrators can review the audit log for an instance, which contains a wider range of events including system administrative events. To access the instance-level audit log: + +{% data reusables.enterprise_site_admin_settings.access-settings %} +1. In the left menu, click **Audit log**.{% endif %} + +In addition to viewing your audit log, you can monitor activity in your enterprise in other ways, such as {% ifversion ghes %}viewing push logs and {% endif %}managing global webhooks. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/exploring-user-activity-in-your-enterprise). You can also use the audit log, and other tools, to monitor the actions taken in response to security alerts. For more information, see [AUTOTITLE](/code-security/concepts/security-at-scale/audit-security-alerts). + +## How to use audit logs + +As an enterprise owner{% ifversion ghes %} or site administrator{% endif %}, you can interact with the audit log data for your enterprise in several ways: +* You can view the audit log for your enterprise. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/accessing-the-audit-log-for-your-enterprise). +* You can search the audit log for specific events{% ifversion ghec %} and export audit log data{% endif %}. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/searching-the-audit-log-for-your-enterprise){% ifversion ghec %} and [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/exporting-audit-log-activity-for-your-enterprise){% endif %}. +* You can identify all events that were performed by a specific access token. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/identifying-audit-log-events-performed-by-an-access-token).{% ifversion ghes %} +* You can configure settings, such as the retention period for audit log events and whether Git events are included. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/configuring-the-audit-log-for-your-enterprise).{% endif %} +{%- ifversion enterprise-audit-log-ip-addresses %} +* You can display the IP address associated with events in the audit log. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/displaying-ip-addresses-in-the-audit-log-for-your-enterprise). +{%- endif %} +* You can stream audit and Git events data from {% data variables.product.prodname_dotcom %} to an external data management system. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise). +{%- ifversion ghes %} +* You can forward audit and system logs from your enterprise to a third-party hosted monitoring system. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/exploring-user-activity-in-your-enterprise/log-forwarding). +{%- endif %} +* You can use the Audit log API to view actions performed in your enterprise. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/using-the-audit-log-api-for-your-enterprise). + +For a full list of audit log actions that may appear in your enterprise audit log, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/audit-log-events-for-your-enterprise). ## Further reading diff --git a/content/admin/concepts/security-and-compliance/enterprise-policies.md b/content/admin/concepts/security-and-compliance/enterprise-policies.md index 310061aad17b..a0ae3313a179 100644 --- a/content/admin/concepts/security-and-compliance/enterprise-policies.md +++ b/content/admin/concepts/security-and-compliance/enterprise-policies.md @@ -9,13 +9,18 @@ contentType: concepts redirect_from: - /admin/policies/enforcing-policies-for-your-enterprise/about-enterprise-policies - /admin/enforcing-policies/enforcing-policies-for-your-enterprise/about-enterprise-policies + - /enterprise-onboarding/govern-people-and-repositories/about-enterprise-policies category: - Secure and govern your enterprise --- ## What are enterprise policies and why are they important? -{% data reusables.enterprise-onboarding.about-policies %} +To help you enforce business rules and regulatory compliance, policies provide a single point of management for all the organizations owned by an enterprise account. + +{% data reusables.enterprise.about-policies %} + +For example, with the "Base permissions" policy, you can allow organization owners to configure the "Base permissions" policy for their organization, or you can enforce a specific base permissions level, such as "Read", for all organizations within the enterprise. ## What are the steps to enforce enterprise policies? diff --git a/content/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/managing-custom-properties-for-repositories-in-your-enterprise.md b/content/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/managing-custom-properties-for-repositories-in-your-enterprise.md index fb46a31defa7..82cba0f09cbb 100644 --- a/content/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/managing-custom-properties-for-repositories-in-your-enterprise.md +++ b/content/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/managing-custom-properties-for-repositories-in-your-enterprise.md @@ -2,6 +2,8 @@ title: Managing custom properties for repositories in your enterprise intro: 'Create custom properties to give organizations a consistent way to categorize repositories.' permissions: Enterprise owners +redirect_from: + - /enterprise-onboarding/govern-people-and-repositories/create-custom-properties versions: feature: custom-properties-enterprise shortTitle: Custom properties @@ -9,7 +11,38 @@ category: - Manage accounts and repositories --- -{% data reusables.enterprise-onboarding.creating-custom-properties %} +Custom properties allow you to decorate your repositories with information such as compliance frameworks, data sensitivity, or project details. Custom properties are private and can only be viewed by people with read permissions to the repository. An enterprise can have up to 100 property definitions. An allowed value list can have up to 200 items. + +Defining custom properties at the enterprise level allows you to create consistent values that users can apply to repositories. With custom properties in place, you can apply consistent governance across repositories in your enterprise by creating a ruleset or repository policy targeting repositories with certain properties. + +## Allowed characters + +{% data reusables.repositories.custom-property-allowed-characters %} + +## Who can set and view values for custom properties I define? + +After you define a custom property, users can set a value for that property in repositories in the enterprise. See [AUTOTITLE](/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization#setting-values-for-repositories-in-your-organization). + +* As an enterprise owner, you can set a default value for required properties. +* Organization owners can set values in their organization, either across repositories or at the repository level. +* If enabled, people with repository access, or the `custom properties` fine-grained permission, can set and update the property value for their repository. + +People with read permissions to a repository can view the custom property values for that repository. + +Additionally, organization owners can search for repositories in their organization by custom property values. See [AUTOTITLE](/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization#searching-and-filtering-repositories-by-custom-property-values). + +## Adding custom properties + +You can add custom properties to your enterprise to make those properties available in all of your organizations. + +{% data reusables.enterprise-accounts.access-enterprise %} +1. In the left sidebar, under "Policies", click **Custom properties**. +1. To add a new custom property, in the upper-right corner, click **New property**. +1. Enter a name, description, and type for the custom property. The name must be unique across all of your organizations, can't contain spaces, and cannot exceed 75 characters in length. +1. Optionally, select **Allow repository actors to set this property**. When enabled, repository users and apps with the repository-level `custom properties` fine-grained permission will be able to set and update the property value for their repository. Additionally, any actor creating a repository can set the property on the repository. +1. Optionally, select **Require this property for all repositories** and add a default value. This means that you require that all repositories in your enterprise have a value for this property. Repositories that don’t have an explicit value for this property will inherit the default value. +{% data reusables.organizations.custom-properties-required-values %} +1. Click **Save property**. ## Promoting organization properties to enterprise properties diff --git a/content/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/assign-roles.md b/content/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/assign-roles.md index 7e4a8a210929..84af307320d4 100644 --- a/content/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/assign-roles.md +++ b/content/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/assign-roles.md @@ -6,9 +6,50 @@ versions: shortTitle: Assign roles redirect_from: - /admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/assign-roles + - /enterprise-onboarding/setting-up-organizations-and-teams/assigning-roles-to-teams-and-users contentType: how-tos category: - Manage accounts and repositories --- -{% data reusables.enterprise-onboarding.assign-roles %} +Enterprise owners can assign custom and predefined **enterprise roles** to users and teams. Some roles can be assigned to enterprise teams, whereas other roles are only available for individual users. Find the section below for the role you want to assign. + +For more information about using roles effectively, see [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/identify-role-requirements). + +## Assigning app managers, security managers, and custom roles + +> [!NOTE] These roles are in public preview and subject to change. + +These roles can be assigned to existing users and teams in your enterprise settings, including {% ifversion ghes %}users whose accounts were provisioned with SCIM{% else %}{% data variables.enterprise.prodname_managed_users %}{% endif %}. + +Before you assign a role, you may need to create a team. Teams are the best way to manage role assignments at scale. The enterprise security manager role can **only** be assigned to a team, not to individual users. See [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/create-enterprise-teams). + +{% data reusables.enterprise-accounts.access-enterprise %} +{% data reusables.enterprise-accounts.people-tab %} +1. In the left sidebar, click **{% octicon "globe" aria-hidden="true" aria-label="globe" %} Enterprise roles**, then click **Role assignments**. +1. Click **Assign role**. +1. Choose the user or team and the role they should receive, then click **Assign role**. + +## Assigning enterprise owners{% ifversion not ghes %}, billing managers, and guest collaborators{% endif %} + +{% ifversion ghes %}This role{% else %}These roles{% endif %}: + +* Can be chosen when you invite a user to your enterprise or provision a user from your identity provider (IdP) +* Cannot currently be assigned to enterprise teams +* Can be changed for existing users + +### Assigning to new users + +* If you {% ifversion ghes %}have enabled SCIM provisioning{% else %}use **{% data variables.product.prodname_emus %}**{% endif %}, roles are assigned from your IdP via the SCIM `roles` attribute. +* Otherwise, you can invite someone as {% ifversion ghes %}an enterprise owner. See {% else %}a user or administrator. See [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/invite-users-directly) or {% endif %}[AUTOTITLE](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/inviting-people-to-manage-your-enterprise). + +### Assigning to existing administrators + +You can change an administrator's role or convert them to a regular member once they have joined your enterprise. + +* If you {% ifversion ghes %}provisioned the user via SCIM{% else %}use **{% data variables.product.prodname_emus %}**{% endif %}, you must do this from your IdP via the SCIM `roles` attribute. +* {% ifversion ghes %}For all other accounts{% else %}If you use an **enterprise with personal accounts**{% endif %}, you can change the role on your enterprise's "Administrators" page, using the **{% octicon "kebab-horizontal" aria-label="Administrator" %}** menu next to the user's name. See [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/viewing-people-in-your-enterprise#viewing-enterprise-administrators). + +## Assigning roles in an organization + +Enterprise owners cannot assign organization-level roles from the enterprise settings. An organization administrator must do this. See [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles#assigning-an-organization-role). diff --git a/content/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/create-custom-roles.md b/content/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/create-custom-roles.md index 44947f3773ec..4abeb67722a9 100644 --- a/content/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/create-custom-roles.md +++ b/content/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/create-custom-roles.md @@ -6,12 +6,42 @@ versions: shortTitle: Create custom roles redirect_from: - /admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/custom-organization-roles + - /enterprise-onboarding/setting-up-organizations-and-teams/creating-custom-roles contentType: how-tos category: - Manage accounts and repositories --- -{% data reusables.enterprise-onboarding.create-custom-roles %} +To tailor access management to your company's needs, you can create custom roles for your{% ifversion enterprise-custom-roles %} enterprise account and{% endif %} organizations. + +Custom roles are sets of permissions for settings and resources that you can assign to users and teams.{% ifversion enterprise-custom-roles %} To learn best practices for using roles on {% data variables.product.github %}, see [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/identify-role-requirements).{% endif %} + +{% ifversion enterprise-custom-roles %} + +## Creating enterprise custom roles + +> [!NOTE] This feature is in {% data variables.release-phases.public_preview %} and subject to change. + +Enterprise custom roles grant access to a subset of enterprise settings, such as viewing audit logs and creating organizations. {% data variables.product.github %} plans to expand the list of available permissions over time. + +{% data reusables.enterprise-accounts.start-creating-custom-role %} +1. Enter the details, then click **Create role**. + +{% endif %} + +## Creating organization custom roles + +Organization custom roles grant access to organization settings and repositories. Custom organization roles created at the enterprise level use the same permissions and base roles as roles created at the organization level. For more information, see [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/permissions-of-custom-organization-roles). + +Enterprise owners can create and edit custom organization roles, but cannot assign them. Organization owners can assign custom roles in an organization. + +> [!NOTE] An enterprise can create up to 20 custom organization roles. This limit applies to the enterprise: each organization can also create up to 20 custom organization roles. + +{% data reusables.enterprise-accounts.access-enterprise %} +{% data reusables.enterprise-accounts.people-tab %} +1. In the left sidebar, select **Organization roles**. +1. Click **Create custom role**. +1. Enter the details, then click **Create role**. {% ifversion enterprise-teams %} diff --git a/content/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/identify-role-requirements.md b/content/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/identify-role-requirements.md index 5d98949b915e..e773b746c2be 100644 --- a/content/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/identify-role-requirements.md +++ b/content/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/identify-role-requirements.md @@ -6,11 +6,85 @@ versions: feature: enterprise-custom-roles allowTitleToDifferFromFilename: true contentType: tutorials +redirect_from: + - /enterprise-onboarding/setting-up-organizations-and-teams/identify-role-requirements category: - Manage accounts and repositories --- -{% data reusables.enterprise-onboarding.identify-role-requirements %} +Roles control people's access to settings and resources in your enterprise and organizations. For an introduction to roles, see [AUTOTITLE](/admin/concepts/enterprise-fundamentals/roles-in-an-enterprise). + +By using roles effectively, you can: + +* Delegate administrative duties and manage access securely at every level of your enterprise. +* Harden security by reducing the number of people with blanket administrative access in your enterprise. +* Ensure everyone has the permissions they need to be independent and productive. + +## 1. Review available roles and permissions + +This guide helps you understand best practices for roles, so you can plan which roles are required in your enterprise and organizations. You will then be able to create a team structure that uses roles effectively. + +As you think about tasks that would benefit from a specific role, refer to the available predefined roles and custom permissions to see if a granular role for this task is currently possible. If not, you will need to rely on a role with more blanket access, such as enterprise owner. + +> [!NOTE] Enterprise custom roles currently only cover a limited subset of enterprise settings, but {% data variables.product.company_short %} plans to expand the list of permissions over time. + +| Role type | More information | +| --------- | ---------------- | +| Predefined enterprise roles | [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/abilities-of-roles) | +| Predefined organization roles | [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization) | +| Custom enterprise roles | Review the list of available permissions at `{% data variables.product.product_url %}/enterprises/ENTERPRISE/enterprise_roles/new`, where ENTERPRISE is the name of your enterprise account. | +| Custom organization roles | [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/permissions-of-custom-organization-roles) | + +## 2. Identify two owners per account + +Decide who will serve as enterprise owners and organization owners. The "owner" role has full administrative access to an enterprise or organization account. + +We recommend having at least two owners per account. Although it is good practice to limit the number of people with this level of access, if an account only has one owner, the account's resources can become inaccessible if the owner is unreachable. + +## 3. Identify roles for administrative duties + +Identify predefined or custom roles that will help you delegate time-consuming administrative duties to other teams. This will help enterprise owners to focus on urgent or strategic work. + +It is unlikely that you can granularly assign every administrative duty in your enterprise to a specific team, so we recommend focusing on the most frequent and time-consuming tasks. Some examples of how you might use roles to delegate common tasks are: + +* **Auditing**: Use a custom role to give a team access to your audit logs without allowing them to access any other settings. +* **Authentication**: Use a custom role to give your identity provider administrators permission to manage SSO settings on {% data variables.product.github %}, so they can configure authentication independently. +{%- ifversion ent-security-manager %} +* **Security**: Use the enterprise security manager role to give security teams access to alerts and security data across the enterprise and organizations. +{%- endif %} + +Some administrative tasks are more sensitive than others. For example, if your enterprise uses enterprise teams to manage licensing, access, and roles, then being able to change membership of a team is a powerful action that you may want to restrict to a small group of people. + +## 4. Identify base permissions for non-administrators + +Consider if there are permissions that every member of your enterprise would benefit from. These can be added to a custom role that you assign to everyone. + +For example, regular users have limited visibility of your enterprise account by default. If you want more transparency, you may want to allow all employees to: + +* View other enterprise members and administrators so they know where to go for help +* View audit logs to see what people are doing in the enterprise + +## 5. Delegate work to apps + +Not all tasks are best-suited to humans. Identify frequent, time-consuming, and easily automated tasks, and plan to delegate these tasks to {% data variables.product.prodname_github_apps %}. + +{% data variables.product.prodname_github_apps %} provide scoped tokens for use in scripts and workflows. Although they use a different permissions system from the roles you assign to users, you can think about apps like humans with a role on {% data variables.product.github %}: + +* They have fine-grained permissions for specific tasks. +* They have scoped access to specific repositories and accounts. +* They have their own identity, which you can trace in audit logs. + +For more information about what apps can do, see [AUTOTITLE](/apps/creating-github-apps/about-creating-github-apps/about-creating-github-apps#understanding-what-type-of-github-app-to-build). + +{% ifversion copilot %} + +## 6. Assign tasks to agents + +Another way to delegate frequent, time-consuming tasks is to assign work to {% data variables.copilot.copilot_cloud_agent %}. You can define custom agents for specific roles in your enterprise. Custom agents are created using Markdown files called "agent profiles," which define the instructions and tools the agent needs to perform a task. For example, you could create a {% data variables.copilot.copilot_custom_agent_short %} for writing README files or generating unit tests. + +For more information, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/prepare-for-custom-agents). + +{% endif %} ## Next steps diff --git a/content/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/create-enterprise-teams.md b/content/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/create-enterprise-teams.md index 59ec5b72739f..4aaffb82d6d0 100644 --- a/content/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/create-enterprise-teams.md +++ b/content/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/create-enterprise-teams.md @@ -8,6 +8,7 @@ permissions: Enterprise owners redirect_from: - /admin/user-management/managing-users-in-your-enterprise/managing-organization-members-in-your-enterprise - /admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/managing-organization-members-in-your-enterprise + - /enterprise-onboarding/setting-up-organizations-and-teams/creating-teams contentType: how-tos category: - Manage accounts and repositories @@ -20,7 +21,63 @@ Adding a user to a team grants them the privileges associated with the team. Rem {% data reusables.enterprise.enterprise-teams-limits %} -{% data reusables.enterprise-onboarding.create-enterprise-teams %} +## 1. Navigate to the enterprise teams page + +{% data reusables.enterprise-accounts.access-enterprise %} +{% data reusables.enterprise-accounts.people-tab %} +1. In the left sidebar, click **{% octicon "people" aria-hidden="true" aria-label="people" %} Enterprise teams**. + +## 2. Create a team + +1. On the enterprise teams page, click **Create Enterprise team**. +1. Choose the team's name, description, and organization access. + + When you give a team access to organizations, members of the team are added directly to those organizations, without an invitation, and receive the same access as other organization members. + + * Outside collaborators{% ifversion not ghes %} and unaffiliated users{% endif %} in the team become standard enterprise members, meaning they have access to your enterprise's internal repositories{% ifversion not ghes %} and consume a {% data variables.product.prodname_enterprise %} license{% endif %}. + * Team members receive the base level of repository permissions for the organization. + * Organization administrators can give the team additional repository access and assign them organization-level roles, but **cannot** remove any permissions granted by enterprise administrators. + +1. Click **Create Enterprise team**. + +## 3. Add users + +There are multiple ways to add users to an enterprise team. + +* [Adding users manually](#adding-users-manually) +* [Syncing with an IdP group](#syncing-with-an-idp-group) ({% data variables.product.prodname_emus %} only) +* Using the [AUTOTITLE](/rest/enterprise-teams/enterprise-team-members) + +{% ifversion ghec %} +Enterprise teams can contain organization members, unaffiliated users, and outside collaborators. +{% endif %} + +### Adding users manually + +1. On the enterprise teams page, click the team you want to add users to. +1. Click **Add members**, then search for and select the users you want to add. +1. Click **Add**. + +### Syncing with an IdP group + +If you {% ifversion ghes %}have enabled SCIM on {% data variables.product.prodname_ghe_server %}{% else %}use {% data variables.product.prodname_emus %}{% endif %}, you can sync membership of an enterprise team to a group in your identity provider. That way, any changes made to the group in the IdP (such as adding or removing a user) will be synced to the enterprise team via SCIM. For details and requirements, see [AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/managing-team-memberships-with-identity-provider-groups). + +1. On the enterprise teams page, click the team you want to sync. +1. Ensure the team contains no manually assigned users. You can remove users by using the **{% octicon "kebab-horizontal" aria-hidden="true" aria-label="More member actions" %}** menu next to the user's name in the member list. +1. Next to the team's name, click **{% octicon "pencil" aria-hidden="true" aria-label="pencil" %} Edit**. +1. Under "Manage members", click **Identity provider group**. +1. Click **Select group**, then choose the external IdP group to sync to the team. Members from the IdP group will display in the team's member list. +1. Click **Update team**. + +#### Limits on IdP group sizes + +If an IdP group goes over the team size limit of 5,000 users, the team will stop being synced. + +For example: + +* An enterprise team is initially synced with an IdP group of 5 users. +* 5,000 more users are added to the IdP group. Because the IdP group now has 5,005 users, the group isn't synced and the enterprise team remains at 5 members. +* 5 users are removed from the IdP group to bring it to 5,000 users. Syncing resumes and the enterprise team now contains the same 5,000 users as the IdP group. {% ifversion ghes %} diff --git a/content/admin/managing-github-apps-for-your-enterprise/creating-github-apps-for-your-enterprise.md b/content/admin/managing-github-apps-for-your-enterprise/creating-github-apps-for-your-enterprise.md index 203721183325..94a66e9e5fba 100644 --- a/content/admin/managing-github-apps-for-your-enterprise/creating-github-apps-for-your-enterprise.md +++ b/content/admin/managing-github-apps-for-your-enterprise/creating-github-apps-for-your-enterprise.md @@ -7,12 +7,50 @@ permissions: Enterprise owners. shortTitle: Create a GitHub App redirect_from: - /admin/managing-your-enterprise-account/creating-github-apps-for-your-enterprise + - /enterprise-onboarding/github-apps/create-enterprise-apps contentType: how-tos category: - Enable GitHub features for your enterprise --- -{% data reusables.enterprise-onboarding.create-enterprise-apps %} +You can create a {% data variables.product.prodname_github_app %} under your enterprise account. The app can only be installed on{% ifversion enterprise-installed-apps %} your enterprise or{% endif %} organizations within your enterprise, and can only be authorized by members of your enterprise. The app can't be installed on user accounts. + +## Step 1: Registering a {% data variables.product.prodname_github_app %} + +To create a {% data variables.product.prodname_github_app %}, you must first register the app. See [AUTOTITLE](/apps/creating-github-apps/registering-a-github-app/registering-a-github-app). + +Apps can also be transferred to an enterprise from a member or organization. To transfer an app, see [AUTOTITLE](/apps/maintaining-github-apps/transferring-ownership-of-a-github-app). +{%- ifversion enterprise-app-manager %} + +### Step 1a: Adding an enterprise app manager + +Enterprise owners can add enterprise members to an app as an app manager. App managers can manage the app's settings and credentials, but cannot install the app. For more information, see [AUTOTITLE](/apps/maintaining-github-apps/about-github-app-managers).{% endif %} + +## Step 2: Building a {% data variables.product.prodname_github_app %} + +After registering a {% data variables.product.prodname_github_app %}, you will want to write code to make your {% data variables.product.prodname_github_app %} do something. For examples of how to write code, see: + +* [AUTOTITLE](/apps/creating-github-apps/writing-code-for-a-github-app/quickstart) +* [AUTOTITLE](/apps/creating-github-apps/writing-code-for-a-github-app/building-a-github-app-that-responds-to-webhook-events) +* [AUTOTITLE](/apps/creating-github-apps/writing-code-for-a-github-app/building-a-login-with-github-button-with-a-github-app) +* [AUTOTITLE](/apps/creating-github-apps/writing-code-for-a-github-app/building-a-cli-with-a-github-app) +* [AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/making-authenticated-api-requests-with-a-github-app-in-a-github-actions-workflow) + +You should aim to follow best practices. See [AUTOTITLE](/apps/creating-github-apps/about-creating-github-apps/best-practices-for-creating-a-github-app). + +## Step 3: Authorizing or installing your {% data variables.product.prodname_github_app %} + +Once your {% data variables.product.prodname_github_app %} is registered, you'll need to make it available for use, either through **authorization** or **installation**, depending on the app’s purpose. + +Enterprise owners {% ifversion enterprise-app-manager %}and app managers {% endif %}can modify the permissions for apps owned by their enterprise at any time. Permissions changes will be automatically accepted by organizations in the enterprise{% ifversion enterprise-app-manager %} if the change was made by the enterprise owner. Otherwise, the changes will be accepted only where the app manager is also an organization owner, and an organization owner must accept the update request for all other organizations{% endif %}. + +### Step 3a: Authorizing your {% data variables.product.prodname_github_app %} + +Some {% data variables.product.prodname_github_apps %}, like {% data variables.product.prodname_copilot_short %} extensions, require **authorization** but do not need to be installed on an organization. Users in your enterprise can authorize the app to access resources within organizations. However, the app will only have access to {% data variables.product.github %} resources where it is installed. See [AUTOTITLE](/apps/using-github-apps/authorizing-github-apps). + +### Step 3b: Sharing your {% data variables.product.prodname_github_app %} via an installation link + +For apps that require installation to function, you can provide organization owners with an installation link. Once the app is installed, it will have access to the organization's resources. See [AUTOTITLE](/apps/sharing-github-apps/sharing-your-github-app#sharing-your-github-app-via-an-install-link). ## Step 4: Installing your {% data variables.product.prodname_github_app %} (if required) diff --git a/content/admin/managing-github-apps-for-your-enterprise/index.md b/content/admin/managing-github-apps-for-your-enterprise/index.md index 89e91d127d10..a081642133d0 100644 --- a/content/admin/managing-github-apps-for-your-enterprise/index.md +++ b/content/admin/managing-github-apps-for-your-enterprise/index.md @@ -6,6 +6,8 @@ children: - /creating-github-apps-for-your-enterprise - /adding-and-removing-github-app-managers-in-your-enterprise - /automate-installations +redirect_from: + - /enterprise-onboarding/github-apps shortTitle: GitHub Apps versions: feature: enterprise-apps-public-beta diff --git a/content/apps/using-github-apps/installing-a-github-app-on-your-enterprise.md b/content/apps/using-github-apps/installing-a-github-app-on-your-enterprise.md index 598243ed08b6..a95614d6c0a4 100644 --- a/content/apps/using-github-apps/installing-a-github-app-on-your-enterprise.md +++ b/content/apps/using-github-apps/installing-a-github-app-on-your-enterprise.md @@ -4,6 +4,8 @@ intro: 'You can install {% data variables.product.prodname_github_apps %} on you versions: feature: enterprise-installed-apps shortTitle: Install apps on your enterprise +redirect_from: + - /enterprise-onboarding/github-apps/install-enterprise-apps permissions: 'Enterprise owners can install {% data variables.product.prodname_github_apps %} on their enterprise. App managers cannot install apps at the enterprise level.' category: - Install and authorize apps diff --git a/content/enterprise-onboarding/github-apps/automations-in-your-enterprise.md b/content/enterprise-onboarding/github-apps/automations-in-your-enterprise.md deleted file mode 100644 index c597789f9f4c..000000000000 --- a/content/enterprise-onboarding/github-apps/automations-in-your-enterprise.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Automations in your enterprise -shortTitle: Automations -intro: Learn how {% data variables.product.prodname_github_apps %}, external services, and {% data variables.product.prodname_actions %} work together to automate processes in your enterprise. -versions: - ghec: '*' -contentType: concepts -docsTeamMetrics: - - enterprise-onboarding ---- - -{% data reusables.enterprise-onboarding.automations %} - -## Next steps - -To create {% data variables.product.prodname_github_apps %} that can access enterprise-level resources and automate workflows, see [AUTOTITLE](/enterprise-onboarding/github-apps/create-enterprise-apps). diff --git a/content/enterprise-onboarding/github-apps/create-enterprise-apps.md b/content/enterprise-onboarding/github-apps/create-enterprise-apps.md deleted file mode 100644 index 193e78f954a1..000000000000 --- a/content/enterprise-onboarding/github-apps/create-enterprise-apps.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Creating enterprise apps -shortTitle: Create enterprise apps -intro: Create GitHub Apps that can access enterprise-level resources and automate workflows. -versions: - ghec: '*' -contentType: how-tos -docsTeamMetrics: - - enterprise-onboarding ---- - -{% data reusables.enterprise-onboarding.create-enterprise-apps %} - -## Next steps - -If your app uses enterprise permissions, you can install it on your enterprise. See [AUTOTITLE](/enterprise-onboarding/github-apps/install-enterprise-apps). diff --git a/content/enterprise-onboarding/github-apps/index.md b/content/enterprise-onboarding/github-apps/index.md deleted file mode 100644 index deee4ae77fa1..000000000000 --- a/content/enterprise-onboarding/github-apps/index.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Automating processes with GitHub Apps -shortTitle: Automate with apps -intro: Automate processes across your enterprise. -versions: - ghec: '*' -children: - - /automations-in-your-enterprise - - /create-enterprise-apps - - /install-enterprise-apps -contentType: concepts -docsTeamMetrics: - - enterprise-onboarding ---- - diff --git a/content/enterprise-onboarding/github-apps/install-enterprise-apps.md b/content/enterprise-onboarding/github-apps/install-enterprise-apps.md deleted file mode 100644 index ef266ea27245..000000000000 --- a/content/enterprise-onboarding/github-apps/install-enterprise-apps.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Installing enterprise apps -shortTitle: Install enterprise apps -intro: Install GitHub Apps to build automations for the enterprise account. -versions: - ghec: '*' -contentType: how-tos -docsTeamMetrics: - - enterprise-onboarding ---- - -{% data reusables.enterprise-onboarding.install-enterprise-apps %} diff --git a/content/enterprise-onboarding/govern-people-and-repositories/about-enterprise-policies.md b/content/enterprise-onboarding/govern-people-and-repositories/about-enterprise-policies.md deleted file mode 100644 index 4a772c51668f..000000000000 --- a/content/enterprise-onboarding/govern-people-and-repositories/about-enterprise-policies.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: About enterprise policies -shortTitle: About enterprise policies -intro: Understand what policies are and why they are useful. -versions: - ghec: '*' -contentType: concepts -docsTeamMetrics: - - enterprise-onboarding ---- - -{% data reusables.enterprise-onboarding.about-policies %} - -You can view the policies available to your enterprise on the **Policies** tab in your enterprise settings. - -## Next steps - -You can apply governance policies to repositories at scale with custom properties. See [AUTOTITLE](/enterprise-onboarding/govern-people-and-repositories/create-custom-properties). diff --git a/content/enterprise-onboarding/govern-people-and-repositories/create-custom-properties.md b/content/enterprise-onboarding/govern-people-and-repositories/create-custom-properties.md deleted file mode 100644 index 454317d1712c..000000000000 --- a/content/enterprise-onboarding/govern-people-and-repositories/create-custom-properties.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Creating custom properties for repositories in your enterprise -shortTitle: Create custom properties -intro: Create and apply custom properties to categorize and manage repositories across your enterprise. -versions: - ghec: '*' -contentType: how-tos -docsTeamMetrics: - - enterprise-onboarding ---- - -{% data reusables.enterprise-onboarding.creating-custom-properties %} - -## Next steps - -Apply policies to repositories based on their custom properties. See [AUTOTITLE](/enterprise-onboarding/govern-people-and-repositories/create-repository-policies). diff --git a/content/enterprise-onboarding/govern-people-and-repositories/index.md b/content/enterprise-onboarding/govern-people-and-repositories/index.md index ea8c8ec6661b..51da6a28942e 100644 --- a/content/enterprise-onboarding/govern-people-and-repositories/index.md +++ b/content/enterprise-onboarding/govern-people-and-repositories/index.md @@ -5,11 +5,8 @@ intro: Implement policies, custom properties, and rulesets to govern users and r versions: ghec: '*' children: - - /about-enterprise-policies - - /create-custom-properties - /create-repository-policies - /protect-branches - - /using-the-audit-log-for-your-enterprise contentType: concepts docsTeamMetrics: - enterprise-onboarding diff --git a/content/enterprise-onboarding/govern-people-and-repositories/using-the-audit-log-for-your-enterprise.md b/content/enterprise-onboarding/govern-people-and-repositories/using-the-audit-log-for-your-enterprise.md deleted file mode 100644 index 624e857eb724..000000000000 --- a/content/enterprise-onboarding/govern-people-and-repositories/using-the-audit-log-for-your-enterprise.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Using the audit log for your enterprise -intro: Use the audit log to monitor activity in your enterprise. -versions: - ghec: '*' -shortTitle: Use the audit log -redirect_from: - - /enterprise-onboarding/feature-enhancements/about-the-audit-log-for-your-enterprise -contentType: concepts -docsTeamMetrics: - - enterprise-onboarding ---- - -{% data reusables.enterprise-onboarding.about-audit-logs %} diff --git a/content/enterprise-onboarding/index.md b/content/enterprise-onboarding/index.md index 0c17233ff213..e0906b0ceb90 100644 --- a/content/enterprise-onboarding/index.md +++ b/content/enterprise-onboarding/index.md @@ -16,38 +16,37 @@ journeyTracks: title: 'Setting up organizations and teams in your enterprise' description: 'Organize work effectively and ensure people have the access they need to resources and administrative settings.' guides: - - href: '/enterprise-onboarding/setting-up-organizations-and-teams/best-practices' + - href: '/admin/concepts/enterprise-best-practices/organize-work' - href: '/enterprise-onboarding/setting-up-organizations-and-teams/setting-up-an-organization' - - href: '/enterprise-onboarding/setting-up-organizations-and-teams/about-roles-in-an-enterprise' - - href: '/enterprise-onboarding/setting-up-organizations-and-teams/identify-role-requirements' - - href: '/enterprise-onboarding/setting-up-organizations-and-teams/creating-custom-roles' - - href: '/enterprise-onboarding/setting-up-organizations-and-teams/about-teams-in-an-enterprise' - - href: '/enterprise-onboarding/setting-up-organizations-and-teams/creating-teams' - - href: '/enterprise-onboarding/setting-up-organizations-and-teams/assigning-roles-to-teams-and-users' - - href: '/enterprise-onboarding/setting-up-organizations-and-teams/use-innersource' + - href: '/admin/concepts/enterprise-fundamentals/roles-in-an-enterprise' + - href: '/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/identify-role-requirements' + - href: '/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/create-custom-roles' + - href: '/admin/concepts/enterprise-fundamentals/teams-in-an-enterprise' + - href: '/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/create-enterprise-teams' + - href: '/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/assign-roles' + - href: '/admin/concepts/enterprise-best-practices/use-innersource' - id: 'govern_people_and_repositories' title: 'Governing people and repositories' description: 'Implement policies, custom properties, and rulesets to govern users and repositories across your enterprise.' guides: - - href: '/enterprise-onboarding/govern-people-and-repositories/about-enterprise-policies' - - href: '/enterprise-onboarding/govern-people-and-repositories/create-custom-properties' + - href: '/admin/concepts/security-and-compliance/enterprise-policies' + - href: '/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/managing-custom-properties-for-repositories-in-your-enterprise' - href: '/enterprise-onboarding/govern-people-and-repositories/create-repository-policies' - href: '/enterprise-onboarding/govern-people-and-repositories/protect-branches' - - href: '/enterprise-onboarding/govern-people-and-repositories/using-the-audit-log-for-your-enterprise' + - href: '/admin/concepts/security-and-compliance/audit-log-for-an-enterprise' - id: 'github_apps' title: 'Automating processes with GitHub Apps' description: 'Create and install apps to automate processes securely in your enterprise and organizations.' guides: - - href: '/enterprise-onboarding/github-apps/automations-in-your-enterprise' - - href: '/enterprise-onboarding/github-apps/create-enterprise-apps' - - href: '/enterprise-onboarding/github-apps/install-enterprise-apps' + - href: '/admin/concepts/enterprise-fundamentals/automations-in-your-enterprise' + - href: '/admin/managing-github-apps-for-your-enterprise/creating-github-apps-for-your-enterprise' + - href: '/apps/using-github-apps/installing-a-github-app-on-your-enterprise' versions: ghec: '*' children: - /getting-started-with-your-enterprise - /setting-up-organizations-and-teams - /govern-people-and-repositories - - /github-apps redirect_from: - /enterprise-onboarding/feature-enhancements docsTeamMetrics: diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/about-roles-in-an-enterprise.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/about-roles-in-an-enterprise.md deleted file mode 100644 index 99a6430e1db3..000000000000 --- a/content/enterprise-onboarding/setting-up-organizations-and-teams/about-roles-in-an-enterprise.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: About roles in an enterprise -shortTitle: About roles -intro: Understand the different role types in an enterprise and how they control access and permissions. -versions: - ghec: '*' -redirect_from: - - /enterprise-onboarding/feature-enhancements/about-access-permissions-on-github -contentType: concepts -docsTeamMetrics: - - enterprise-onboarding ---- - -{% data reusables.enterprise-onboarding.about-roles %} - -## Next steps - -Now that you understand roles, plan which roles will be required for your teams to do their jobs on {% data variables.product.github %}. See [AUTOTITLE](/enterprise-onboarding/setting-up-organizations-and-teams/identify-role-requirements). diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/about-teams-in-an-enterprise.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/about-teams-in-an-enterprise.md deleted file mode 100644 index 16e189693cd2..000000000000 --- a/content/enterprise-onboarding/setting-up-organizations-and-teams/about-teams-in-an-enterprise.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: About teams in an enterprise -shortTitle: About teams -intro: Discover how teams help organize users, manage repository access, and streamline collaboration across your enterprise. -versions: - ghec: '*' -redirect_from: - - /enterprise-onboarding/setting-up-organizations-and-teams/managing-organization-members -contentType: concepts -docsTeamMetrics: - - enterprise-onboarding ---- - -{% data reusables.enterprise-onboarding.about-teams %} - -## Next steps - -To get started with teams, see [AUTOTITLE](/enterprise-onboarding/setting-up-organizations-and-teams/creating-teams). diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/assigning-roles-to-teams-and-users.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/assigning-roles-to-teams-and-users.md deleted file mode 100644 index d2d418789a87..000000000000 --- a/content/enterprise-onboarding/setting-up-organizations-and-teams/assigning-roles-to-teams-and-users.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Assigning roles to teams and users -shortTitle: Assign roles -intro: Assign enterprise roles to manage access and permissions. -versions: - ghec: '*' -contentType: how-tos -docsTeamMetrics: - - enterprise-onboarding ---- - -{% data reusables.enterprise-onboarding.assign-roles %} - -## Next steps - -Learn how to set up a culture of innersource in your enterprise to allow teams to collaborate and work efficiently. See [AUTOTITLE](/enterprise-onboarding/setting-up-organizations-and-teams/use-innersource). diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/best-practices.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/best-practices.md deleted file mode 100644 index 34e0bc9a2199..000000000000 --- a/content/enterprise-onboarding/setting-up-organizations-and-teams/best-practices.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Best practices for organizing work in your enterprise -intro: Structure your enterprise and organizations for the best developer experience. -versions: - ghec: '*' -shortTitle: Best practices -redirect_from: - - /enterprise-onboarding/setting-up-organizations-and-teams/best-practices-for-organizations-in-your-enterprise -contentType: how-tos -docsTeamMetrics: - - enterprise-onboarding ---- - -{% data reusables.enterprise-onboarding.best-practices %} - -## Next steps - -Create the organizations you need to divide up work effectively. See [AUTOTITLE](/enterprise-onboarding/setting-up-organizations-and-teams/setting-up-an-organization). diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/creating-custom-roles.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/creating-custom-roles.md deleted file mode 100644 index 6b07613cdf8f..000000000000 --- a/content/enterprise-onboarding/setting-up-organizations-and-teams/creating-custom-roles.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Creating custom roles -shortTitle: Create custom roles -intro: Create custom organization roles with fine-grained permissions tailored to your enterprise needs. -versions: - ghec: '*' -contentType: how-tos -docsTeamMetrics: - - enterprise-onboarding ---- - -{% data reusables.enterprise-onboarding.create-custom-roles %} - -## Next steps - -You can manage role assignments at scale using teams. Learn about teams in your enterprise and organizations in [AUTOTITLE](/enterprise-onboarding/setting-up-organizations-and-teams/about-teams-in-an-enterprise). diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/creating-teams.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/creating-teams.md deleted file mode 100644 index 8e0b17bd7297..000000000000 --- a/content/enterprise-onboarding/setting-up-organizations-and-teams/creating-teams.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Creating enterprise teams -intro: Use teams to manage permissions and access. -versions: - ghec: '*' -shortTitle: Create teams -permissions: Enterprise owners or organization owners -allowTitleToDifferFromFilename: true -contentType: how-tos -docsTeamMetrics: - - enterprise-onboarding ---- - -{% data reusables.enterprise-onboarding.create-enterprise-teams %} - -## Next steps - -Next, assign roles to teams to manage their access to settings and resources. See [AUTOTITLE](/enterprise-onboarding/setting-up-organizations-and-teams/assigning-roles-to-teams-and-users). diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/identify-role-requirements.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/identify-role-requirements.md deleted file mode 100644 index e285c59dca31..000000000000 --- a/content/enterprise-onboarding/setting-up-organizations-and-teams/identify-role-requirements.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Identifying the roles required by your enterprise -intro: Use teams to manage permissions, notifications, and code ownership in your organizations. -versions: - ghec: '*' -shortTitle: Identify role requirements -contentType: how-tos -docsTeamMetrics: - - enterprise-onboarding ---- - -{% data reusables.enterprise-onboarding.identify-role-requirements %} - -## Next steps - -Now that you've planned which roles will help your teams be productive and secure on GitHub, create custom roles for the permissions you need. Later, you will create teams to manage role assignments at scale. [AUTOTITLE](/enterprise-onboarding/setting-up-organizations-and-teams/creating-custom-roles). diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/index.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/index.md index 50eff93e503e..1b897ca84b39 100644 --- a/content/enterprise-onboarding/setting-up-organizations-and-teams/index.md +++ b/content/enterprise-onboarding/setting-up-organizations-and-teams/index.md @@ -5,15 +5,7 @@ versions: ghec: '*' shortTitle: Set up organizations and teams children: - - /best-practices - /setting-up-an-organization - - /about-roles-in-an-enterprise - - /identify-role-requirements - - /creating-custom-roles - - /about-teams-in-an-enterprise - - /creating-teams - - /assigning-roles-to-teams-and-users - - /use-innersource docsTeamMetrics: - enterprise-onboarding --- diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/use-innersource.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/use-innersource.md deleted file mode 100644 index 92eecb7b719e..000000000000 --- a/content/enterprise-onboarding/setting-up-organizations-and-teams/use-innersource.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Using innersource in your enterprise -shortTitle: Use innersource -intro: Help dispersed teams to collaborate by setting up open source–style workflows in your enterprise, without compromising on security. -versions: - ghec: '*' -contentType: concepts -allowTitleToDifferFromFilename: true -docsTeamMetrics: - - enterprise-onboarding ---- - -{% data reusables.enterprise-onboarding.use-innersource %} - -## Next steps - -Now that you've set up organizations and teams, learn how to stay compliant and secure by setting up governance policies for your users and repositories. See [AUTOTITLE](/enterprise-onboarding/govern-people-and-repositories/about-enterprise-policies). diff --git a/data/reusables/enterprise-onboarding/about-audit-logs.md b/data/reusables/enterprise-onboarding/about-audit-logs.md deleted file mode 100644 index 6b50fee9f55e..000000000000 --- a/data/reusables/enterprise-onboarding/about-audit-logs.md +++ /dev/null @@ -1,33 +0,0 @@ -## What are audit logs? - -> [!NOTE] -> {% data reusables.webhooks.webhooks-as-audit-log-alternative %} - -{% data reusables.audit_log.retention-periods %} - -{% data reusables.audit_log.audit-log-search-list-info-about-action %} - -{% ifversion ghes %}Site administrators can review the audit log for an instance, which contains a wider range of events including system administrative events. To access the instance-level audit log: - -{% data reusables.enterprise_site_admin_settings.access-settings %} -1. In the left menu, click **Audit log**.{% endif %} - -In addition to viewing your audit log, you can monitor activity in your enterprise in other ways, such as {% ifversion ghes %}viewing push logs and {% endif %}managing global webhooks. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/exploring-user-activity-in-your-enterprise). You can also use the audit log, and other tools, to monitor the actions taken in response to security alerts. For more information, see [AUTOTITLE](/code-security/concepts/security-at-scale/audit-security-alerts). - -## How to use audit logs - -As an enterprise owner{% ifversion ghes %} or site administrator{% endif %}, you can interact with the audit log data for your enterprise in several ways: -* You can view the audit log for your enterprise. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/accessing-the-audit-log-for-your-enterprise). -* You can search the audit log for specific events{% ifversion ghec %} and export audit log data{% endif %}. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/searching-the-audit-log-for-your-enterprise){% ifversion ghec %} and [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/exporting-audit-log-activity-for-your-enterprise){% endif %}. -* You can identify all events that were performed by a specific access token. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/identifying-audit-log-events-performed-by-an-access-token).{% ifversion ghes %} -* You can configure settings, such as the retention period for audit log events and whether Git events are included. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/configuring-the-audit-log-for-your-enterprise).{% endif %} -{%- ifversion enterprise-audit-log-ip-addresses %} -* You can display the IP address associated with events in the audit log. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/displaying-ip-addresses-in-the-audit-log-for-your-enterprise). -{%- endif %} -* You can stream audit and Git events data from {% data variables.product.prodname_dotcom %} to an external data management system. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise). -{%- ifversion ghes %} -* You can forward audit and system logs, from your enterprise to an third-party hosted monitoring system. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/exploring-user-activity-in-your-enterprise/log-forwarding). -{%- endif %} -* You can use the Audit log API to view actions performed in your enterprise. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/using-the-audit-log-api-for-your-enterprise). - -For a full list of audit log actions that may appear in your enterprise audit log, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/audit-log-events-for-your-enterprise). diff --git a/data/reusables/enterprise-onboarding/about-policies.md b/data/reusables/enterprise-onboarding/about-policies.md deleted file mode 100644 index 2a3b779e7bed..000000000000 --- a/data/reusables/enterprise-onboarding/about-policies.md +++ /dev/null @@ -1,5 +0,0 @@ -To help you enforce business rules and regulatory compliance, policies provide a single point of management for all the organizations owned by an enterprise account. - -{% data reusables.enterprise.about-policies %} - -For example, with the "Base permissions" policy, you can allow organization owners to configure the "Base permissions" policy for their organization, or you can enforce a specific base permissions level, such as "Read", for all organizations within the enterprise. diff --git a/data/reusables/enterprise-onboarding/about-roles.md b/data/reusables/enterprise-onboarding/about-roles.md deleted file mode 100644 index 5a0764635164..000000000000 --- a/data/reusables/enterprise-onboarding/about-roles.md +++ /dev/null @@ -1,25 +0,0 @@ -## What are roles? - -Roles allow you to delegate administrative duties and manage access securely at every level of your enterprise. - -A role is a **set of permissions** that you can assign to individuals or teams. A permission is the ability to perform a specific action, such as changing billing settings. - -A user in an enterprise has roles for both the enterprise account and organizations where they have access. - -* The enterprise-level roles define the user's access to enterprise settings. -* Organization-level roles define the user's access to organization settings and repositories in an organization. - -## Predefined and custom roles - -Organization and enterprise roles can be **predefined** or **custom**. Enterprise custom roles are in {% data variables.release-phases.public_preview %}. - -* Predefined roles, such as enterprise owner, organization owner, or billing manager, are available for all accounts. They grant a predefined set of permissions to users or teams and may contain more permissions than someone needs to do their job. -* Custom roles include your choice of fine-grained permissions. They can include access to account settings and (for organization custom roles) repository access, allowing you to provide teams with just the access they need to do their jobs. For example, you could allow a team to view your enterprise's audit logs without allowing them to change any settings. - -To follow the principle of least privilege access, we recommend using custom roles if they allow for the permissions you require. However, not all capabilities of predefined roles can currently be replicated in custom roles. - -## Who manages roles? - -Enterprise owners can create custom enterprise roles and assign enterprise roles to users and teams. They can also create custom organization roles to be used across organizations, but these roles can only be assigned by organization owners. - -Organization owners can grant organization roles and create custom organization roles, but cannot edit roles or change role assignments that are defined at the enterprise level. diff --git a/data/reusables/enterprise-onboarding/about-teams.md b/data/reusables/enterprise-onboarding/about-teams.md deleted file mode 100644 index 1902cd7a839b..000000000000 --- a/data/reusables/enterprise-onboarding/about-teams.md +++ /dev/null @@ -1,68 +0,0 @@ -## What are teams? - -Teams are **groups of users** in an enterprise or organization. By creating teams, you can manage users at scale and simplify access, licensing, and communication. For example, you could create an auditor team for users who need access to audit logs{% ifversion copilot %}, or a {% data variables.product.prodname_copilot_short %} team for users who receive {% data variables.product.prodname_copilot_short %} licenses{% endif %}. - -**Enterprise teams** are managed at the enterprise level and can include users from across the enterprise and its organizations. With enterprise teams, you can centralize administration and manage organization access, roles, and licensing at scale. - -**Organization teams** are managed at the organization level and can only include members of a single organization. There are certain features of organization teams that are not currently supported for enterprise teams, such as CODEOWNER status. - -## Can I manage teams from an identity provider? - -{% ifversion ghes %}If you have enabled SCIM user provisioning on {% data variables.product.prodname_ghe_server %}{% else %}If you have integrated {% data variables.product.github %} with an identity provider (IdP){% endif %}, you can link teams on {% data variables.product.github %} with groups in your IdP. When membership of the IdP group changes, the change is reflected in the {% data variables.product.github %} team, allowing you to centralize access management. - -{% ifversion not ghes %} -The capabilities of this feature depend on whether you use {% data variables.product.prodname_emus %} or personal accounts. - -### {% data variables.product.prodname_emus %} - -{% endif %} - -You can make changes to IdP groups to manage repository access, add or remove users from organizations, or grant or remove {% data variables.product.prodname_copilot %} licenses. For example, if a new user is added to an IdP group that is linked to a team with access to an organization, the user receives access to that organization. For more information, see [AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/managing-team-memberships-with-identity-provider-groups). - -This feature is available with both enterprise and organization teams. - -{% ifversion not ghes %} - -### Personal accounts - -Team synchronization allows you to centrally manage any privileges linked to an organization team, such as repository access and CODEOWNER status. However, team sync cannot be used to add users to organizations where they don't already have access. For more information, see [AUTOTITLE](/admin/managing-iam/using-saml-for-enterprise-iam/managing-team-synchronization-for-organizations-in-your-enterprise). - -Team sync with personal accounts is only available with organization teams, and you must use Entra ID or Okta as an IdP. - -{% endif %} - -## What kind of team should I use? - -To simplify administration at scale, {% data variables.product.company_short %} recommends using enterprise teams for any use cases that apply to the enterprise account or to multiple organizations. Organization teams are useful when the need for the team is scoped to a single organization and the team can be managed by an organization administrator. - -You may need to create organization teams if the functionality you need is not covered by enterprise teams. The limitations listed below reflect the current capabilities of enterprise teams and may change over time. - -{% data reusables.enterprise.enterprise-teams-can %} - -{%- ifversion enterprise-teams-ga %} - -To @-mention an enterprise team, or request a review from the team, use the team's slug in the format `@/ent:TEAM-SLUG`. {% data variables.product.github %} generates the slug from the team's name and adds the `ent:` prefix, so an enterprise team named `Platform SRE` has the slug `ent:platform-sre`. - -To mention the team from an organization it is assigned to, such as `octo-org`, use `@octo-org/ent:platform-sre`. You can mention an enterprise team from any organization the team is assigned to. - -{%- endif %} - -However, unlike organization teams, enterprise teams currently do **not** support: - -{%- ifversion enterprise-teams-ga %} -{%- else %} -* `@-mentions` of the team name in organizations -* Review requests of the team in pull requests -{%- endif %} -* Adding the team to a project board -{%- ifversion not ghes %} -* Team sync if you use {% data variables.product.prodname_ghe_cloud %} with personal accounts -{%- endif %} -* CODEOWNER status -* Secret teams -* Nested teams -* Team maintainers - -{% data reusables.enterprise.enterprise-teams-limits %} - -For more information about the capabilities of organization teams, see [AUTOTITLE](/organizations/organizing-members-into-teams/about-teams). diff --git a/data/reusables/enterprise-onboarding/assign-roles.md b/data/reusables/enterprise-onboarding/assign-roles.md deleted file mode 100644 index cb8cdc8080b2..000000000000 --- a/data/reusables/enterprise-onboarding/assign-roles.md +++ /dev/null @@ -1,41 +0,0 @@ -Enterprise owners can assign custom and predefined **enterprise roles** to users and teams. Some roles can be assigned to enterprise teams, whereas other roles are only available for individual users. Find the section below for the role you want to assign. - -For more information about using roles effectively, see [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/identify-role-requirements). - -## Assigning app managers, security managers, and custom roles - ->[!NOTE] These roles are in public preview and subject to change. - -These roles can be assigned to existing users and teams in your enterprise settings, including {% ifversion ghes %}users whose accounts were provisioned with SCIM{% else %}{% data variables.enterprise.prodname_managed_users %}{% endif %}. - -Before you assign a role, you may need to create a team. Teams are the best way to manage role assignments at scale. The enterprise security manager role can **only** be assigned to a team, not to individual users. See [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/create-enterprise-teams). - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.people-tab %} -1. In the left sidebar, click **{% octicon "globe" aria-hidden="true" aria-label="globe" %} Enterprise roles**, then click **Role assignments**. -1. Click **Assign role**. -1. Choose the user or team and the role they should receive, then click **Assign role**. - -## Assigning enterprise owners{% ifversion not ghes %}, billing managers, and guest collaborators{% endif %} - -{% ifversion ghes %}This role{% else %}These roles{% endif %}: - -* Can be chosen when you invite a user to your enterprise or provision a user from your identity provider (IdP) -* Cannot currently be assigned to enterprise teams -* Can be changed for existing users - -### Assigning to new users - -* If you {% ifversion ghes %}have enabled SCIM provisioning{% else %}use **{% data variables.product.prodname_emus %}**{% endif %}, roles are assigned from your IdP via the SCIM `roles` attribute. -* Otherwise, you can invite someone as {% ifversion ghes %}an enterprise owner. See {% else %}a user or administrator. See [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/invite-users-directly) or {% endif %}[AUTOTITLE](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/inviting-people-to-manage-your-enterprise). - -### Assigning to existing administrators - -You can change an administrator's role or convert them to a regular member once they have joined your enterprise. - -* If you {% ifversion ghes %}provisioned the user via SCIM{% else %}use **{% data variables.product.prodname_emus %}**{% endif %}, you must do this from your IdP via the SCIM `roles` attribute. -* {% ifversion ghes %}For all other accounts{% else %}If you use an **enterprise with personal accounts**{% endif %}, you can change the role on your enterprise's "Administrators" page, using the **{% octicon "kebab-horizontal" aria-label="Administrator" %}** menu next to the user's name. See [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/viewing-people-in-your-enterprise#viewing-enterprise-administrators). - -## Assigning roles in an organization - -Enterprise owners cannot assign organization-level roles from the enterprise settings. An organization administrator must do this. See [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles#assigning-an-organization-role). diff --git a/data/reusables/enterprise-onboarding/automations.md b/data/reusables/enterprise-onboarding/automations.md deleted file mode 100644 index e7d8b700fdc4..000000000000 --- a/data/reusables/enterprise-onboarding/automations.md +++ /dev/null @@ -1,119 +0,0 @@ -Automation on {% data variables.product.github %} typically involves multiple components working together. The most important {% data variables.product.github %} native components are: - -* **{% data variables.product.prodname_actions %} workflows**, which provide a runtime for executing automation logic. Out of the box, they work within a single repository, but they can be extended to automate across or even outside of repositories. -* **{% data variables.product.prodname_github_apps %}**, which do not have a runtime. Instead, they provide identity, permissions, and event delivery so your automations, whether external services or workflows, can authenticate and act securely. - -Most enterprise automation use {% data variables.product.prodname_github_apps %} and {% data variables.product.prodname_actions %} together. For example, a workflow running in {% data variables.product.prodname_actions %} may use a {% data variables.product.prodname_github_app %} to obtain a short-lived token that allows it to perform tasks across repositories or organizations. - -This guide explains how {% data variables.product.prodname_github_apps %}, external automations, and {% data variables.product.prodname_actions %} complement each other, and when to use each in your enterprise. - -## {% data variables.product.prodname_github_apps %} - -A {% data variables.product.prodname_github_app %} provides the **identity, permissions, and webhook events** required for automation on or across repositories, organizations, or your enterprise. {% data variables.product.prodname_github_apps %} themselves do **not** execute logic, they enable other systems to do so. - -{% data variables.product.prodname_github_apps %} support enterprise automation by offering: - -* **Granular permissions** to follow least-privilege principles -* **Scoped installations** at the enterprise, organization, or repository level -* **Short-lived tokens** for secure access -* **Distinct identities** with full auditability -* **Delegated administration** through the {% data variables.product.prodname_github_app %} manager role -* **Consistency at scale** when owned by the enterprise account - -### What do {% data variables.product.prodname_github_apps %} enable? - -{% data variables.product.prodname_github_apps %} allow **automations you write elsewhere**—such as external services or workflow steps—to act on {% data variables.product.github %} APIs within the permissions you grant. For example: - -* Receiving webhook events and triggering external services -* Enabling a workflow to act outside its default repository scope -* Integrating {% data variables.product.github %} with third-party systems -* Coordinating changes across many repositories -* Running long-lived bots or services that monitor enterprise-level activity - -{% ifversion enterprise-installed-apps %} - -> [!NOTE] -> Enterprise-installed {% data variables.product.prodname_github_apps %} cannot call every API endpoint. See [AUTOTITLE](/apps/using-github-apps/installing-a-github-app-on-your-enterprise#what-enterprise-installed-apps-can-do). - -{% endif %} - -## {% data variables.product.prodname_actions %} - -{% data variables.product.prodname_actions %} provide {% data variables.product.github %}’s built-in **runtime** for executing automation logic inside repositories. Workflows run on hosted or self-hosted runners and are ideal for tasks tied to code changes or repository events. - -Use {% data variables.product.prodname_actions %} for: - -* CI/CD (build, test, deploy) -* Pull request checks and validations -* Repository-level maintenance tasks -* Event-driven workflows responding to pushes, tags, or issue updates -* Scheduled jobs with cron - -### How {% data variables.product.prodname_actions %} uses {% data variables.product.prodname_github_apps %} - -{% data variables.product.prodname_actions %} and {% data variables.product.prodname_github_apps %} are deeply connected: - -* Workflow permissions map directly to {% data variables.product.prodname_github_app %} permissions. -* Workflows can authenticate as a specific {% data variables.product.prodname_github_app %} using `actions/create-github-app-token`. -* {% data variables.product.prodname_github_apps %} can trigger workflows through events such as `repository_dispatch`. - -## External automations and services - -External automations run outside {% data variables.product.github %} on your own infrastructure. These services typically: - -* Receive webhook events from a {% data variables.product.prodname_github_app %} -* Use the {% data variables.product.prodname_github_app %} to request short-lived installation tokens -* Execute long-running or cross-enterprise logic -* Integrate with external business systems - -Examples include: - -* Organization-wide configuration management -* Policy enforcement services -* Multi-repository code or metadata synchronization -* Compliance report generation -* Cross-organization issue or pull request management - -All of these rely on {% data variables.product.prodname_github_apps %} for authentication, identity, and events—**not** for execution. - -## How these components work together - -Most enterprise automation uses a combination of {% data variables.product.prodname_github_apps %}, external services, and {% data variables.product.prodname_actions %} to achieve robust, scalable workflows. - -For example: - -1. An enterprise {% data variables.product.prodname_github_app %} receives a webhook when a new repository is created, and sends the webhook payload to a server where an external service is running. -1. The external service standardizes required settings and provisions resources. -1. The service triggers a {% data variables.product.prodname_actions %} workflow in the repository. -1. The workflow performs CI, deploys templates, or configures scanning. - -Each component handles a different layer of automation. - -## When to use each type of automation - -Use **a {% data variables.product.prodname_github_app %}** when you need: - -* Authentication or permission to act across many repositories -* Integration with external systems -* Webhook-driven automations -* Long-lived or enterprise-wide workflows -* Auditability and identity separation - -Use **external automations** when you need: - -* Logic that runs continuously or outside {% data variables.product.github %} -* Integration with internal systems - -Use **{% data variables.product.prodname_actions %}** when you need: - -* CI/CD pipelines -* Repository-scoped automation -* Automated checks tied to repository events -* Execution of logic using {% data variables.product.github %}’s runner infrastructure - -Use **{% data variables.product.prodname_github_apps %} and {% data variables.product.prodname_actions %} together** when: - -* A workflow must act beyond the repository’s default permissions -* A {% data variables.product.prodname_github_app %} needs to trigger a workflow -* External logic orchestrates in-repo execution -* Enterprise-wide policies or workflows require both identity and runtime diff --git a/data/reusables/enterprise-onboarding/best-practices.md b/data/reusables/enterprise-onboarding/best-practices.md deleted file mode 100644 index 045f4243e618..000000000000 --- a/data/reusables/enterprise-onboarding/best-practices.md +++ /dev/null @@ -1,35 +0,0 @@ -## Use organizations for work or governance - -There are two main models of using organizations: - -* **Group related work projects**: Group repositories for a specific application and related services. Teams that work on that application will then be able to communicate effectively and contribute across the different repositories. -* **Group similar governance requirements**: Group repositories that require similar policies, security settings, or access restrictions. You will be able to apply the necessary settings to the organization at scale. For example, if you have highly confidential work projects or a specific data classification, group these in an organization where only a limited number of people have access. - -## Create organizations intentionally - -Creating organizations is a balance. While {% data variables.product.company_short %} continues to make organization management more scalable, you should be intentional about why you create an organization. It's always easier to add organizations than to remove them. - -Don't try to fit unnatural pieces of your company together into a single large organization. The administrative features of an enterprise account allow you to automate processes, manage access, and apply policies across multiple organizations at once. However, there are tradeoffs of segregating work into many different organizations: - -* It's easier for people to communicate within one organization, as @-mentions only work between members of the same organization. -* It's easier for people to find resources in one organization, as there's only one place to search. - -You may want to start with a small number of organizations as you develop your strategy. After you build confidence in what works well for your business, you can create additional organizations as the need arises. - -You should regularly evaluate your strategies for access, governance, and organization of work. Cleaning up legacy organizations is a part of that process. - -{% ifversion enterprise-teams %} - -## Use teams to organize people - -Enterprise teams are the best way to control access and permissions at scale. Create teams and manage their membership as your primary means of performing actions like adding users to organizations, granting licenses, and delegating access to enterprise settings. - -When you use teams in this way, controlling membership of teams is a sensitive action. Limit the permission to control teams and their membership to a small number of people. If you use an external identity provider (IdP), sync teams to IdP groups so that team membership can be controlled by a central administrator. - -Use roles to delegate administrative duties to teams. This allows you to limit the number of enterprise owners in your company and give people just the permissions they need to do their jobs effectively. For example, a team of auditors can receive access to the enterprise audit log without being able to access any other settings. - -{% endif %} - -## Collaborate in organization-owned repositories - -We recommend collaborating in organization-owned repositories whenever possible and minimizing collaboration in user-owned repositories. Organization-owned repositories have more sophisticated security and administrative features, and they remain accessible even as enterprise membership changes. diff --git a/data/reusables/enterprise-onboarding/create-custom-roles.md b/data/reusables/enterprise-onboarding/create-custom-roles.md deleted file mode 100644 index 50442b812e2e..000000000000 --- a/data/reusables/enterprise-onboarding/create-custom-roles.md +++ /dev/null @@ -1,30 +0,0 @@ -To tailor access management to your company's needs, you can create custom roles for your{% ifversion enterprise-custom-roles %} enterprise account and{% endif %} organizations. - -Custom roles are sets of permissions for settings and resources that you can assign to users and teams.{% ifversion enterprise-custom-roles %} To learn best practices for using roles on {% data variables.product.github %}, see [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/identify-role-requirements).{% endif %} - -{% ifversion enterprise-custom-roles %} - -## Creating enterprise custom roles - ->[!NOTE] This feature is in {% data variables.release-phases.public_preview %} and subject to change. - -Enterprise custom roles grant access to a subset of enterprise settings, such as viewing audit logs and creating organizations. {% data variables.product.github %} plans to expand the list of available permissions over time. - -{% data reusables.enterprise-accounts.start-creating-custom-role %} -1. Enter the details, then click **Create role**. - -{% endif %} - -## Creating organization custom roles - -Organization custom roles grant access to organization settings and repositories. Custom organization roles created at the enterprise level use the same permissions and base roles as roles created at the organization level. For more information, see [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/permissions-of-custom-organization-roles). - -Enterprise owners can create and edit custom organization roles, but cannot assign them. Organization owners can assign custom roles in an organization. - ->[!NOTE] An enterprise can create up to 20 custom organization roles. This limit applies to the enterprise: each organization can also create up to 20 custom organization roles. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.people-tab %} -1. In the left sidebar, select **Organization roles**. -1. Click **Create custom role**. -1. Enter the details, then click **Create role**. diff --git a/data/reusables/enterprise-onboarding/create-enterprise-apps.md b/data/reusables/enterprise-onboarding/create-enterprise-apps.md deleted file mode 100644 index d84e825c0ff3..000000000000 --- a/data/reusables/enterprise-onboarding/create-enterprise-apps.md +++ /dev/null @@ -1,38 +0,0 @@ -You can create a {% data variables.product.prodname_github_app %} under your enterprise account. The app can only be installed on{% ifversion enterprise-installed-apps %} your enterprise or{% endif %} organizations within your enterprise, and can only be authorized by members of your enterprise. The app can't be installed on user accounts. - -## Step 1: Registering a {% data variables.product.prodname_github_app %} - -To create a {% data variables.product.prodname_github_app %}, you must first register the app. See [AUTOTITLE](/apps/creating-github-apps/registering-a-github-app/registering-a-github-app). - -Apps can also be transferred to an enterprise from a member or organization. To transfer an app, see [AUTOTITLE](/apps/maintaining-github-apps/transferring-ownership-of-a-github-app). -{%- ifversion enterprise-app-manager %} - -### Step 1a: Adding an enterprise app manager - -Enterprise owners can add enterprise members to an app as an app manager. App managers can manage the app's settings and credentials, but cannot install the app. For more information, see [AUTOTITLE](/apps/maintaining-github-apps/about-github-app-managers).{% endif %} - -## Step 2: Building a {% data variables.product.prodname_github_app %} - -After registering a {% data variables.product.prodname_github_app %}, you will want to write code to make your {% data variables.product.prodname_github_app %} do something. For examples of how to write code, see: - -* [AUTOTITLE](/apps/creating-github-apps/writing-code-for-a-github-app/quickstart) -* [AUTOTITLE](/apps/creating-github-apps/writing-code-for-a-github-app/building-a-github-app-that-responds-to-webhook-events) -* [AUTOTITLE](/apps/creating-github-apps/writing-code-for-a-github-app/building-a-login-with-github-button-with-a-github-app) -* [AUTOTITLE](/apps/creating-github-apps/writing-code-for-a-github-app/building-a-cli-with-a-github-app) -* [AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/making-authenticated-api-requests-with-a-github-app-in-a-github-actions-workflow) - -You should aim to follow best practices. See [AUTOTITLE](/apps/creating-github-apps/about-creating-github-apps/best-practices-for-creating-a-github-app). - -## Step 3: Authorizing or installing your {% data variables.product.prodname_github_app %} - -Once your {% data variables.product.prodname_github_app %} is registered, you'll need to make it available for use, either through **authorization** or **installation**, depending on the app’s purpose. - -Enterprise owners {% ifversion enterprise-app-manager %}and app managers {% endif %}can modify the permissions for apps owned by their enterprise at any time. Permissions changes will be automatically accepted by organizations in the enterprise{% ifversion enterprise-app-manager %} if the change was made by the enterprise owner. Otherwise, the changes will be accepted only where the app manager is also an organization owner, and an organization owner must accept the update request for all other organizations{% endif %}. - -### Step 3a: Authorizing your {% data variables.product.prodname_github_app %} - -Some {% data variables.product.prodname_github_apps %}, like {% data variables.product.prodname_copilot_short %} extensions, require **authorization** but do not need to be installed on an organization. Users in your enterprise can authorize the app to access resources within organizations. However, the app will only have access to {% data variables.product.github %} resources where it is installed. See [AUTOTITLE](/apps/using-github-apps/authorizing-github-apps). - -### Step 3b: Sharing your {% data variables.product.prodname_github_app %} via an installation link - -For apps that require installation to function, you can provide organization owners with an installation link. Once the app is installed, it will have access to the organization's resources. See [AUTOTITLE](/apps/sharing-github-apps/sharing-your-github-app#sharing-your-github-app-via-an-install-link). diff --git a/data/reusables/enterprise-onboarding/create-enterprise-teams.md b/data/reusables/enterprise-onboarding/create-enterprise-teams.md deleted file mode 100644 index 4dc2ff204495..000000000000 --- a/data/reusables/enterprise-onboarding/create-enterprise-teams.md +++ /dev/null @@ -1,57 +0,0 @@ -## 1. Navigate to the enterprise teams page - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.people-tab %} -1. In the left sidebar, click **{% octicon "people" aria-hidden="true" aria-label="people" %} Enterprise teams**. - -## 2. Create a team - -1. On the enterprise teams page, click **Create Enterprise team**. -1. Choose the team's name, description, and organization access. - - When you give a team access to organizations, members of the team are added directly to those organizations, without an invitation, and receive the same access as other organization members. - - * Outside collaborators{% ifversion not ghes %} and unaffiliated users{% endif %} in the team become standard enterprise members, meaning they have access to your enterprise's internal repositories{% ifversion not ghes %} and consume a {% data variables.product.prodname_enterprise %} license{% endif %}. - * Team members receive the base level of repository permissions for the organization. - * Organization administrators can give the team additional repository access and assign them organization-level roles, but **cannot** remove any permissions granted by enterprise administrators. - -1. Click **Create Enterprise team**. - -## 3. Add users - -There are multiple ways to add users to an enterprise team. - -* [Adding users manually](#adding-users-manually) -* [Syncing with an IdP group](#syncing-with-an-idp-group) ({% data variables.product.prodname_emus %} only) -* Using the [AUTOTITLE](/rest/enterprise-teams/enterprise-team-members) - -{% ifversion ghec %} -Enterprise teams can contain organization members, unaffiliated users, and outside collaborators. -{% endif %} - -### Adding users manually - -1. On the enterprise teams page, click the team you want to add users to. -1. Click **Add members**, then search for and select the users you want to add. -1. Click **Add**. - -### Syncing with an IdP group - -If you {% ifversion ghes %}have enabled SCIM on {% data variables.product.prodname_ghe_server %}{% else %}use {% data variables.product.prodname_emus %}{% endif %}, you can sync membership of an enterprise team to a group in your identity provider. That way, any changes made to the group in the IdP (such as adding or removing a user) will be synced to the enterprise team via SCIM. For details and requirements, see [AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/managing-team-memberships-with-identity-provider-groups). - -1. On the enterprise teams page, click the team you want to sync. -1. Ensure the team contains no manually assigned users. You can remove users by using the **{% octicon "kebab-horizontal" aria-hidden="true" aria-label="More member actions" %}** menu next to the user's name in the member list. -1. Next to the team's name, click **{% octicon "pencil" aria-hidden="true" aria-label="pencil" %} Edit**. -1. Under "Manage members", click **Identity provider group**. -1. Click **Select group**, then choose the external IdP group to sync to the team. Members from the IdP group will display in the team's member list. -1. Click **Update team**. - -#### Limits on IdP group sizes - -If an IdP group goes over the team size limit of 5,000 users, the team will stop being synced. - -For example: - -* An enterprise team is initially synced with an IdP group of 5 users. -* 5,000 more users are added to the IdP group. Because the IdP group now has 5,005 users, the group isn't synced and the enterprise team remains at 5 members. -* 5 users are removed from the IdP group to bring it to 5,000 users. Syncing resumes and the enterprise team now contains the same 5,000 users as the IdP group. diff --git a/data/reusables/enterprise-onboarding/creating-custom-properties.md b/data/reusables/enterprise-onboarding/creating-custom-properties.md deleted file mode 100644 index d090a71424ff..000000000000 --- a/data/reusables/enterprise-onboarding/creating-custom-properties.md +++ /dev/null @@ -1,32 +0,0 @@ -Custom properties allow you to decorate your repositories with information such as compliance frameworks, data sensitivity, or project details. Custom properties are private and can only be viewed by people with read permissions to the repository. An enterprise can have up to 100 property definitions. An allowed value list can have up to 200 items. - -Defining custom properties at the enterprise level allows you to create consistent values that users can apply to repositories. With custom properties in place, you can apply consistent governance across repositories in your enterprise by creating a ruleset or repository policy targeting repositories with certain properties. - -## Allowed characters - -{% data reusables.repositories.custom-property-allowed-characters %} - -## Who can set and view values for custom properties I define? - -After you define a custom property, users can set a value for that property in repositories in the enterprise. See [AUTOTITLE](/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization#setting-values-for-repositories-in-your-organization). - -* As an enterprise owner, you can set a default value for required properties. -* Organization owners can set values in their organization, either across repositories or at the repository level. -* If enabled, people with repository access, or the `custom properties` fine-grained permission, can set and update the property value for their repository. - -People with read permissions to a repository can view the custom property values for that repository. - -Additionally, organization owners can search for repositories in their organization by custom property values. See [AUTOTITLE](/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization#searching-and-filtering-repositories-by-custom-property-values). - -## Adding custom properties - -You can add custom properties to your enterprise to make those properties available in all of your organizations. - -{% data reusables.enterprise-accounts.access-enterprise %} -1. In the left sidebar, under "Policies", click **Custom properties**. -1. To add a new custom property, in the upper-right corner, click **New property**. -1. Enter a name, description, and type for the custom property. The name must be unique across all of your organizations, can't contain spaces, and cannot exceed 75 characters in length. -1. Optionally, select **Allow repository actors to set this property**. When enabled, repository users and apps with the repository-level `custom properties` fine-grained permission will be able to set and update the property value for their repository. Additionally, any actor creating a repository can set the property on the repository. -1. Optionally, select **Require this property for all repositories** and add a default value. This means that you require that all repositories in your enterprise have a value for this property. Repositories that don’t have an explicit value for this property will inherit the default value. -{% data reusables.organizations.custom-properties-required-values %} -1. Click **Save property**. diff --git a/data/reusables/enterprise-onboarding/identify-role-requirements.md b/data/reusables/enterprise-onboarding/identify-role-requirements.md deleted file mode 100644 index 1cfd2ff15415..000000000000 --- a/data/reusables/enterprise-onboarding/identify-role-requirements.md +++ /dev/null @@ -1,73 +0,0 @@ -Roles control people's access to settings and resources in your enterprise and organizations. For an introduction to roles, see [AUTOTITLE](/admin/concepts/enterprise-fundamentals/roles-in-an-enterprise). - -By using roles effectively, you can: - -* Delegate administrative duties and manage access securely at every level of your enterprise. -* Harden security by reducing the number of people with blanket administrative access in your enterprise. -* Ensure everyone has the permissions they need to be independent and productive. - -## 1. Review available roles and permissions - -This guide helps you understand best practices for roles, so you can plan which roles are required in your enterprise and organizations. You will then be able to create a team structure that uses roles effectively. - -As you think about tasks that would benefit from a specific role, refer to the available predefined roles and custom permissions to see if a granular role for this task is currently possible. If not, you will need to rely on a role with more blanket access, such as enterprise owner. - ->[!NOTE] Enterprise custom roles currently only cover a limited subset of enterprise settings, but {% data variables.product.company_short %} plans to expand the list of permissions over time. - -| Role type | More information | -| --------- | ---------------- | -| Predefined enterprise roles | [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/abilities-of-roles) | -| Predefined organization roles | [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization) | -| Custom enterprise roles | Review the list of available permissions at `{% data variables.product.product_url %}/enterprises/ENTERPRISE/enterprise_roles/new`, where ENTERPRISE is the name of your enterprise account. | -| Custom organization roles | [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/permissions-of-custom-organization-roles) | - -## 2. Identify two owners per account - -Decide who will serve as enterprise owners and organization owners. The "owner" role has full administrative access to an enterprise or organization account. - -We recommend having at least two owners per account. Although it is good practice to limit the number of people with this level of access, if an account only has one owner, the account's resources can become inaccessible if the owner is unreachable. - -## 3. Identify roles for administrative duties - -Identify predefined or custom roles that will help you delegate time-consuming administrative duties to other teams. This will help enterprise owners to focus on urgent or strategic work. - -It is unlikely that you can granularly assign every administrative duty in your enterprise to a specific team, so we recommend focusing on the most frequent and time-consuming tasks. Some examples of how you might use roles to delegate common tasks are: - -* **Auditing**: Use a custom role to give a team access to your audit logs without allowing them to access any other settings. -* **Authentication**: Use a custom role to give your identity provider administrators permission to manage SSO settings on {% data variables.product.github %}, so they can configure authentication independently. -{%- ifversion ent-security-manager %} -* **Security**: Use the enterprise security manager role to give security teams access to alerts and security data across the enterprise and organizations. -{%- endif %} - -Some administrative tasks are more sensitive than others. For example, if your enterprise uses enterprise teams to manage licensing, access, and roles, then being able to change membership of a team is a powerful action that you may want to restrict to a small group of people. - -## 4. Identify base permissions for non-administrators - -Consider if there are permissions that every member of your enterprise would benefit from. These can be added to a custom role that you assign to everyone. - -For example, regular users have limited visibility of your enterprise account by default. If you want more transparency, you may want to allow all employees to: - -* View other enterprise members and administrators so they know where to go for help -* View audit logs to see what people are doing in the enterprise - -## 5. Delegate work to apps - -Not all tasks are best-suited to humans. Identify frequent, time-consuming, and easily automated tasks, and plan to delegate these tasks to {% data variables.product.prodname_github_apps %}. - -{% data variables.product.prodname_github_apps %} provide scoped tokens for use in scripts and workflows. Although they use a different permissions system from the roles you assign to users, you can think about apps like humans with a role on {% data variables.product.github %}: - -* They have fine-grained permissions for specific tasks. -* They have scoped access to specific repositories and accounts. -* They have their own identity, which you can trace in audit logs. - -For more information about what apps can do, see [AUTOTITLE](/apps/creating-github-apps/about-creating-github-apps/about-creating-github-apps#understanding-what-type-of-github-app-to-build). - -{% ifversion copilot %} - -## 6. Assign tasks to agents - -Another way to delegate frequent, time-consuming tasks is to assign work to {% data variables.copilot.copilot_cloud_agent %}. You can define custom agents for specific roles in your enterprise. Custom agents are created using Markdown files called "agent profiles," which define the instructions and tools the agent needs to perform a task. For example, you could create a {% data variables.copilot.copilot_custom_agent_short %} for writing README files or generating unit tests. - -For more information, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/prepare-for-custom-agents). - -{% endif %} diff --git a/data/reusables/enterprise-onboarding/install-enterprise-apps.md b/data/reusables/enterprise-onboarding/install-enterprise-apps.md deleted file mode 100644 index 0519d4a611ee..000000000000 --- a/data/reusables/enterprise-onboarding/install-enterprise-apps.md +++ /dev/null @@ -1,59 +0,0 @@ -> [!NOTE] -> Enterprise-installed {% data variables.product.prodname_github_apps %} are in {% data variables.release-phases.public_preview %} and subject to change. - -## About installing {% data variables.product.prodname_github_apps %} on your enterprise - -Enterprise-installed {% data variables.product.prodname_github_apps %} are apps that request enterprise-level permissions and can perform operations on your enterprise account. Unlike organization or user installations, they do not have access to any organization or repository permissions—they only manage the enterprise itself. - -When an enterprise owner installs a {% data variables.product.prodname_github_app %} on your enterprise, the app will be granted the enterprise permissions it requested. These permissions allow the app to perform operations such as creating organizations in the enterprise, installing applications across organizations, and managing SCIM provisioning. - -## Requirements to install a {% data variables.product.prodname_github_app %} on your enterprise - -The {% data variables.product.prodname_github_app %} must request enterprise-level permissions. It can request other permissions as well, but only the enterprise permissions will be granted during installation. - -The app must be owned by your enterprise or an organization within your enterprise. You cannot install apps owned by an account outside your enterprise. - -## Installing a {% data variables.product.prodname_github_app %} on your enterprise - -To install an app on your enterprise, navigate to the {% data variables.product.prodname_github_app %} installation page. This may be provided by the app developer as an installation link, or you can find it in the app's registration. The URL will look something like `{% data variables.product.oauth_host_code %}/apps/APP-NAME/installations/new`, where `APP-NAME` is the name of the {% data variables.product.prodname_github_app %}. - -If the app can be installed, the list of available installation locations will include your enterprise. You can select your enterprise to install the app. - -After installation, the app will be able to create an installation token for your enterprise or sign in enterprise members in order to act on their behalf at the enterprise level. Acting on a user's behalf requires the user to be able to perform the desired operations within the enterprise. For example, if the app needs to invite a user to an enterprise, the user must have permission to invite members to the enterprise as well. - -## What enterprise-installed apps can do - -Enterprise-installed {% data variables.product.prodname_github_apps %} cannot call every enterprise API, but several APIs have already been updated to support GitHub Apps. These APIs and GraphQL mutations include: - -* [List and create organizations in your enterprise](/graphql/reference/enterprise-admin#mutation-createenterpriseorganization) -* [Manage users in your enterprise](/graphql/reference#enterprise) -* Create and manage {% data variables.product.prodname_github_app %} installations in your organizations -* Manage enterprise custom repository properties -* Call the enterprise SCIM APIs - -Check the [changelog](https://github.blog/changelog/) for updates on new APIs and permissions for {% data variables.product.prodname_github_apps %}. - -For more information about available permissions and API endpoints, see [AUTOTITLE](/rest/authentication/permissions-required-for-github-apps). - -{% ifversion not ghes %} - -## Rate limits for enterprise-installed {% data variables.product.prodname_github_apps %} - -The installation token for an enterprise-installed {% data variables.product.prodname_github_apps %} has the same rate limit as a {% data variables.product.prodname_ghe_cloud %} organization. Rate limits are per installation. For example, if an app is installed on an enterprise and two organizations, it will require 3 installation tokens to access them and have a full, independent rate limit budget for each installation. For more information, see [AUTOTITLE](/rest/using-the-rest-api/rate-limits-for-the-rest-api) and [AUTOTITLE](/graphql/overview/rate-limits-and-query-limits-for-the-graphql-api). -{% endif %} - -## Current limitations - -Enterprise-installed {% data variables.product.prodname_github_apps %} are currently in {% data variables.release-phases.public_preview %} with the following limitations. - -### API support - -Not all APIs support enterprise-installed {% data variables.product.prodname_github_apps %} yet. As more permissions are built and APIs updated, support will become broader. For more information about the APIs and permissions that support enterprise-installed {% data variables.product.prodname_github_apps %}, see [AUTOTITLE](/rest/authentication/permissions-required-for-github-apps). - -### Webhook support - -Enterprise installations do not currently support webhooks. Apps installed at the enterprise level cannot receive webhook events for enterprise-level activities. Install them on organizations or repositories to receive webhook events for those resources. - -### Organization access - -Enterprise installations are not granted access to organizations or repositories within your enterprise, with the exception of the organization installations API. To access organization or repository resources, you must install the app separately on each organization where access is needed. diff --git a/data/reusables/enterprise-onboarding/use-innersource.md b/data/reusables/enterprise-onboarding/use-innersource.md deleted file mode 100644 index 51ef77ecbcc5..000000000000 --- a/data/reusables/enterprise-onboarding/use-innersource.md +++ /dev/null @@ -1,52 +0,0 @@ -You can use innersource practices to drive collaboration and productivity in your enterprise. Innersource makes it easy for all employees to discover and reuse work. This allows development teams to learn from each other's work, share their expertise, and avoid duplicating effort to recreate common services. - -## Make repositories discoverable - -Unless they contain sensitive information, you should aim to make repositories visible to all employees. - -To do this, encourage employees to use **internal** visibility whenever possible. Internal visibility allows any member of any organization in the enterprise to view the repository, regardless of whether the user is a member of the organization that owns the repository. - -You should also set permissive **base permissions** for organizations. An organization's base permission policy determines the default level of access that members of that organization have to all the organization's repositories. Generally, organizations should have at least a "Read" base permission so that all organization members can see any repository. Organization owners can then use teams to grant people greater levels of access in specific repositories. - -If you have more sensitive repositories that should not be widely visible, you can set up a dedicated organization with a more restrictive base permission and add specific teams to this organization. - -For more information, see [AUTOTITLE](/repositories/creating-and-managing-repositories/about-repositories#about-internal-repositories) and [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/setting-base-permissions-for-an-organization). - -## Document projects - -Organize and document your repositories so that people can search for work across the enterprise. - -Repository **READMEs** are effective because they're defined in files in the repository, so users can search for them like code. You can also create READMEs at the level of an organization or enterprise account to provide a higher-level overview of where to find different projects. For more formal internal documentation, consider setting up a **{% data variables.product.prodname_pages %} site** or **wikis**. - -You can use **repository topics** to group repositories that contain a certain programming language, are owned by a certain team, and so on. This is another way of making repositories easier to find. - -For more information, see: - -* [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-readmes), [AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/customizing-your-organizations-profile#adding-a-member-only-organization-profile-readme), and [AUTOTITLE](/admin/managing-your-enterprise-account/creating-a-readme-for-an-enterprise) -* [AUTOTITLE](/pages/getting-started-with-github-pages/creating-a-github-pages-site) -* [AUTOTITLE](/communities/documenting-your-project-with-wikis/adding-or-editing-wiki-pages) -* [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/classifying-your-repository-with-topics) - -## Set up a culture for sharing work - -Encourage teams to publicize their work and share resources with other teams. {% data variables.product.github %} has a number of features that make this easier. For example, teams can: - -* Use **discussions** to make their work more visible to other teams. See [AUTOTITLE](/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion). -* Create a dedicated internal repository for sharing **actions and reusable {% data variables.product.prodname_actions %} workflows**, which anyone can reference when they write a workflow within the enterprise. See [AUTOTITLE](/actions/how-tos/reuse-automations/share-with-your-enterprise). -* Share reusable pieces of code in internal packages with **{% data variables.product.prodname_registry %}** registries. For enhanced security, you can give {% data variables.product.github %}'s security features access to these registries. See [AUTOTITLE](/packages/learn-github-packages/introduction-to-github-packages). -* Set up common templates and frameworks as **template repositories** that other people can copy to get started with a project. See [AUTOTITLE](/repositories/creating-and-managing-repositories/creating-a-template-repository). - -Like with an open source project, you should ensure shared projects have a support model and a clearly defined team of maintainers, especially for services that many parts of your enterprise rely on. Ideally the maintainers team will contain representatives from the different teams that use the service. - -## Hide content from external collaborators - -If you have external contractors or collaborators who need access to your enterprise's projects, you can grant them a different level of access from regular employees. - -Specifically, you may want to hide internal repositories from an external collaborator. To do this: - -* If you use {% data variables.product.prodname_emus %}, provision an account for the user with the **guest collaborator** role. Guest collaborators don't have access to internal repositories by default, but they receive base permissions in organizations where they're added as members. They can also be added as repository collaborators in repositories. -* If you do not use {% data variables.product.prodname_emus %}, add the user as an **outside collaborator** in the required repositories, but ensure they are not added as a member of any organization. - -Outside collaborators (called **repository collaborators** if you use {% data variables.product.prodname_emus %}) only have access to a specific repository. These users are not full organization members, so they do not receive the base level of access for the organization, and they cannot automatically see internal repositories in the enterprise unless they are a member of another organization. - -For more information, see {% ifversion ghec %}[AUTOTITLE](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/enabling-guest-collaborators) and{% endif %} [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-outside-collaborators/adding-outside-collaborators-to-repositories-in-your-organization). From ab54742cd30fa19cea8db286337f5e1893be8836 Mon Sep 17 00:00:00 2001 From: Ted Chambers Date: Tue, 21 Jul 2026 14:00:46 +0000 Subject: [PATCH 17/17] Revise Azure private networking IP details (#62247) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../network-details-for-ghecom.md | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/content/admin/data-residency/network-details-for-ghecom.md b/content/admin/data-residency/network-details-for-ghecom.md index ffeb60ace714..9ab6e88c3692 100644 --- a/content/admin/data-residency/network-details-for-ghecom.md +++ b/content/admin/data-residency/network-details-for-ghecom.md @@ -132,11 +132,17 @@ Actions IPs: EU region: * 108.143.197.176/28 +* 108.143.197.160/28 * 20.123.213.96/28 +* 20.123.214.144/28 * 20.224.46.144/28 +* 20.224.46.160/28 * 20.240.194.240/28 +* 20.240.194.224/28 * 20.240.220.192/28 +* 20.240.220.176/28 * 20.240.211.208/28 +* 20.240.211.224/28 #### Australia @@ -145,22 +151,26 @@ Actions IPs: * 20.53.114.78 Australia region: +* 4.237.73.144/28 * 4.237.73.192/28 +* 20.5.226.96/28 * 20.5.226.112/28 +* 20.248.163.160/28 * 20.248.163.176/28 #### Japan Actions IPs: - * 20.63.233.164 * 172.192.153.164 Japan region: - -74.226.88.241 -40.81.176.225 -4.190.169.240 +* 74.226.88.240/28 +* 74.226.88.224/28 +* 40.81.176.224/28 +* 40.81.178.160/28 +* 4.190.169.240/28 +* 4.190.170.0/28 #### Required for all regions