Git Flashcards

1
Q

To Create a branch

A

git checkout -b feature/newLocalbranch origin /originBranch

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

.gitkeep

A

.gitkeep isn’t documented, because it’s not a feature of Git.

Git cannot add a completely empty directory. People who want to track empty directories in Git have created the convention of putting files called .gitkeep in these directories. The file could be called anything; Git assigns no special significance to this name.

There is a competing convention of adding a .gitignore file to the empty directories to get them tracked, but some people see this as confusing since the goal is to keep the empty directories, not ignore them; .gitignore is also used to list files that should be ignored by Git when looking for untracked files.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

To create a new branch and push the changes

A

create your feature branch from origin/develop, it should have the angular changes
The Git commands for your reference:
git fetch -a (fetch all the remote branch changes to your local remotes)
git checkout -b feature/yourFeatureBranchname origin/develop (to create a new feature branch from origin/develop)
git branch –unset-upsteam origin/develop (to remove linking to origin/develop upstream branch )
git push –set-upstrem origin feature/yourFeatureBranchname (to set remote branch and push your changes to VSTS)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Git commands to merge from develop branch

A

Git commands to merge from develop branch , just for your reference:
git fetch -a (to get all the remote changes into your local remote)
git merge origin/develop (to merge your local branch with origin develop; Note: you might need to commit your local changes before merging)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

git rm –cache

A

git rm –cache =If we want to remove a file from the repository but keep it on disk, say we forgot to add it to our .gitignore file then use –cache:

  • to unstage from the staging directory
  • this also moves the file to untracked status ; it means it is removing the file from the directory
  • but the file still exists in the Repostity (local commits)
  • we need to commit to add the changes of deleted file in the staging of the repository into the local repo commits
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

git reset 7digitSHA

A

to go to previous commits

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Creating an upstream branch and Push your branch to the remote repository

A

git push -u origin feature_branch_name

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

git fetch –prune

A

to delete the local remote branches that are deleted in VSTS

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Untrack files already added to git repository based on .gitignore
Have gitignore chagnes first commited and pushed. Then work on removing the files

Do not do gitignore changes and removing files from remote simultaneously

A

Let’s say you have already added/committed some files to your git repository and you then add them to your .gitignore; these files will still be present in your repository index. This article we will see how to get rid of them.

Step 1: Commit all your changes
Before proceeding, make sure all your changes are committed, including your .gitignore file.

Step 2: Remove everything from the repository
To clear your repo, use:

git rm -r –cached .
rm is the remove command
-r will allow recursive removal
–cached will only remove files from the index. Your files will still be there.
The . indicates that all files will be untracked. You can untrack a specific file with git rm –cached foo.txt (thanks @amadeann).
The rm command can be unforgiving. If you wish to try what it does beforehand, add the -n or –dry-run flag to test things out.

Step 3: Re add everything
git add .
Step 4: Commit
git commit -m ".gitignore fix"
Your repository is clean :)

Push the changes to your remote to see the changes effective there as well.

http://www.codeblocq.com/2016/01/Untrack-files-already-added-to-git-repository-based-on-gitignore/

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

gitignore tutorial

A

https://www.atlassian.com/git/tutorials/saving-changes/gitignore
git add git commit git diff git stash .gitignore
Git sees every file in your working copy as one of three things:

tracked - a file which has been previously staged or committed;
untracked - a file which has not been staged or committed; or
ignored - a file which Git has been explicitly told to ignore.
Ignored files are usually build artifacts and machine generated files that can be derived from your repository source or should otherwise not be committed. Some common examples are:

dependency caches, such as the contents of /node_modules or /packages
compiled code, such as .o, .pyc, and .class files
build output directories, such as /bin, /out, or /target
files generated at runtime, such as .log, .lock, or .tmp
hidden system files, such as .DS_Store or Thumbs.db
personal IDE config files, such as .idea/workspace.xml
Ignored files are tracked in a special file named .gitignore that is checked in at the root of your repository. There is no explicit git ignore command: instead the .gitignore file must be edited and committed by hand when you have new files that you wish to ignore. .gitignore files contain patterns that are matched against file names in your repository to determine whether or not they should be ignored.

Ignoring files in Git
Git ignore patterns
Shared .gitignore files in your repository
Personal Git ignore rules
Global Git ignore rules
Ignoring a previously committed file
Committing an ignored file
Stashing an ignored file
Debugging .gitignore files
Git ignore patterns
.gitignore uses globbing patterns to match against file names. You can construct your patterns using various symbols:
Pattern	Example matches	Explanation*
**/logs	logs/debug.log
logs/monday/foo.bar
build/logs/debug.log	You can prepend a pattern with a double asterisk to match directories anywhere in the repository.
**/logs/debug.log	logs/debug.log
build/logs/debug.log
but not
logs/build/debug.log	You can also use a double asterisk to match files based on their name and the name of their parent directory.
*.log	debug.log
foo.log
.log
logs/debug.log	An asterisk is a wildcard that matches zero or more characters.
*.log
!important.log	debug.log
trace.log
but not
important.log
logs/important.log	Prepending an exclamation mark to a pattern negates it. If a file matches a pattern, but also matches a negating pattern defined later in the file, it will not be ignored.
*.log
!important/*.log
trace.*	debug.log
important/trace.log
but not
important/debug.log	Patterns defined after a negating pattern will re-ignore any previously negated files.
/debug.log	debug.log
but not
logs/debug.log	Prepending a slash matches files only in the repository root.
debug.log	debug.log
logs/debug.log	By default, patterns match files in any directory
debug?.log	debug0.log
debugg.log
but not
debug10.log	A question mark matches exactly one character.
debug[0-9].log	debug0.log
debug1.log
but not
debug10.log	Square brackets can also be used to match a single character from a specified range.
debug[01].log	debug0.log
debug1.log
but not
debug2.log
debug01.log	Square brackets match a single character form the specified set.
debug[!01].log	debug2.log
but not
debug0.log
debug1.log
debug01.log	An exclamation mark can be used to match any character except one from the specified set.
debug[a-z].log	debuga.log
debugb.log
but not
debug1.log	Ranges can be numeric or alphabetic.
logs	logs
logs/debug.log
logs/latest/foo.bar
build/logs
build/logs/debug.log	If you don't append a slash, the pattern will match both files and the contents of directories with that name. In the example matches on the left, both directories and files named logs are ignored
logs/	logs/debug.log
logs/latest/foo.bar
build/logs/foo.bar
build/logs/latest/debug.log	Appending a slash indicates the pattern is a directory. The entire contents of any directory in the repository matching that name – including all of its files and subdirectories – will be ignored
logs/
!logs/important.log	logs/debug.log
logs/important.log	Wait a minute! Shouldn't logs/important.log be negated in the example on the left

Nope! Due to a performance-related quirk in Git, you can not negate a file that is ignored due to a pattern matching a directory
logs//debug.log logs/debug.log
logs/monday/debug.log
logs/monday/pm/debug.log A double asterisk matches zero or more directories.
logs/
day/debug.log logs/monday/debug.log
logs/tuesday/debug.log
but not
logs/latest/debug.log Wildcards can be used in directory names as well.
logs/debug.log logs/debug.log
but not
debug.log
build/logs/debug.log Patterns specifying a file in a particular directory are relative to the repository root. (You can prepend a slash if you like, but it doesn’t do anything special.)
** these explanations assume your .gitignore file is in the top level directory of your repository, as is the convention. If your repository has multiple .gitignore files, simply mentally replace “repository root” with “directory containing the .gitignore file” (and consider unifying them, for the sanity of your team).

In addition to these characters, you can use # to include comments in your .gitignore file:

# ignore all logs
*.log
You can use \ to escape .gitignore pattern characters if you have files or directories containing them:

ignore the file literally named foo[01].txt
foo[01].txt
Shared .gitignore files in your repository
Git ignore rules are usually defined in a .gitignore file at the root of your repository. However, you can choose to define multiple .gitignore files in different directories in your repository. Each pattern in a particular .gitignore file is tested relative to the directory containing that file. However the convention, and simplest approach, is to define a single .gitignore file in the root. As your .gitignore file is checked in, it is versioned like any other file in your repository and shared with your teammates when you push. Typically you should only include patterns in .gitignore that will benefit other users of the repository.

Personal Git ignore rules
You can also define personal ignore patterns for a particular repository in a special file at .git/info/exclude. These are not versioned, and not distributed with your repository, so it’s an appropriate place to include patterns that will likely only benefit you. For example if you have a custom logging setup, or special development tools that produce files in your repository’s working directory, you could consider adding them to .git/info/exclude to prevent them from being accidentally committed to your repository.

Global Git ignore rules
In addition, you can define global Git ignore patterns for all repositories on your local system by setting the Git core.excludesFile property. You’ll have to create this file yourself. If you’re unsure where to put your global .gitignore file, your home directory isn’t a bad choice (and makes it easy to find later). Once you’ve created the file, you’ll need to configure its location with git config:

$ touch ~/.gitignore
$ git config –global core.excludesFile ~/.gitignore
You should be careful what patterns you choose to globally ignore, as different file types are relevant for different projects. Special operating system files (e.g. .DS_Store and thumbs.db) or temporary files created by some developer tools are typical candidates for ignoring globally.

Ignoring a previously committed file
If you want to ignore a file that you’ve committed in the past, you’ll need to delete the file from your repository and then add a .gitignore rule for it. Using the –cached option with git rm means that the file will be deleted from your repository, but will remain in your working directory as an ignored file.

$ echo debug.log&raquo_space; .gitignore
$ git rm –cached debug.log
rm ‘debug.log’
$ git commit -m “Start ignoring debug.log”
You can omit the –cached option if you want to delete the file from both the repository and your local file system.

Committing an ignored file
It is possible to force an ignored file to be committed to the repository using the -f (or –force) option with git add:

$ cat .gitignore
*.log
$ git add -f debug.log
$ git commit -m "Force adding debug.log"
You might consider doing this if you have a general pattern (like *.log) defined, but you want to commit a specific file. However a better solution is to define an exception to the general rule:
$ echo !debug.log >> .gitignore
$ cat .gitignore
*.log
!debug.log
$ git add debug.log
$ git commit -m "Adding debug.log"
This approach is more obvious, and less confusing, for your teammates.

Stashing an ignored file
git stash is a powerful Git feature for temporarily shelving and reverting local changes, allowing you to re-apply them later on. As you’d expect, by default git stash ignores ignored files and only stashes changes to files that are tracked by Git. However, you can invoke git stash with the –all option to stash changes to ignored and untracked files as well.

Debugging .gitignore files
If you have complicated .gitignore patterns, or patterns spread over multiple .gitignore files, it can be difficult to track down why a particular file is being ignored. You can use the git check-ignore command with the -v (or –verbose) option to determine which pattern is causing a particular file to be ignored:

$ git check-ignore -v debug.log.gitignore:3:*.log debug.logThe output shows:
: :

You can pass multiple file names to git check-ignore if you like, and the names themselves don’t even have to correspond to files that exist in your repository.

Ready to learn Git?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

gitignore vscode

A

add below lines to gitignore file:
#ignore all the .vscode files
.vscode/

--
commit the code and push to repo
--
git rm -r "specifyfolderstucture/\vscode" --cache
rm = to remove from remote
-r = to remove whole folder
--cache = to maintain the files locally with out tracking
-------------
git commit the changes
--
git push --set-upstream origin feature/yourbranch
the gitignore takes into effect
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Debugging .gitignore files

A

If you have complicated .gitignore patterns, or patterns spread over multiple .gitignore files, it can be difficult to track down why a particular file is being ignored. You can use the git check-ignore command with the -v (or –verbose) option to determine which pattern is causing a particular file to be ignored:

$ git check-ignore -v debug.log
.gitignore:3:*.log debug.log

The output shows:
: :

You can pass multiple file names to git check-ignore if you like, and the names themselves don't even have to correspond to files that exist in your repository.
git check-ignore -v .vs .vscode
output:
.gitignore:35:.vs/      .vs
.gitignore:360:.vscode/ .vscode
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Personal Git ignore rules

.git/info/exclude

A

You can also define personal ignore patterns for a particular repository in a special file at .git/info/exclude. These are not versioned, and not distributed with your repository, so it’s an appropriate place to include patterns that will likely only benefit you. For example if you have a custom logging setup, or special development tools that produce files in your repository’s working directory, you could consider adding them to .git/info/exclude to prevent them from being accidentally committed to your repository.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

git subject and git body

A

git commit -m “Title” -m “Description ……….”;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Build Expired and not able to complete the pull request to merge the changes

A

“Build Expired” is a feature of branch policies. Set a build expiration to make sure that updates to your protected branch don’t break changes in open pull requests.

Always require a new build

This option sets the build policy status in a pull request to “failed” when the protected branch is updated. You must re-queue a build to refresh the build status. This setting ensures that the changes in pull requests build successfully even as the protected branch changes. This option is best for teams that have important branches with a lower volume of changes. Teams working in busy development branches may find it disruptive to wait for a build to complete every time the protected branch is updated.

Require a new build if older than … hours

This option expires the current policy status when the protected branch updates if the passing build is older than the threshold entered. This option is a compromise between always requiring a build when the protected branch updates and never requiring one. This choice is excellent for reducing the number of builds when your protected branch has frequent updates.

Don’t require a new build

Updates to the protected branch do not change the policy status. This reduces the number of builds for your branch, but can cause problems when closing pull requests that haven’t been updated recently.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Where system, global and local Windows Git config files are saved

A

https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/Where-system-global-and-local-Windows-Git-config-files-are-saved

One of the five basic Git commands beginners need to learn is git config, if for no other reason than they can perform a commit without the Git tool pestering them for a username and email address.

But the required git config command that sets up a username and email address typically employs a –global switch, which tends to have Git beginners start to ponder about alternate scopes and asking questions about where all of these Windows git configuration files are saved.

System, global and local Git config files
Git provides three different scopes for storing configuration data. Accordingly, when using the git config command, one of these three scopes can be specified:

Local
Global
System
The scopes are cascading, so system scope trumps global scope and local scope trumps global scope.

Names of Windows Git config files
Just to make life a bit more complicated, the Git configuration files all have different names. Furthermore, Windows Git config files are each stored in different locations.

The extensionless system Git config file is named gitconfig.
The global Git config file has no name, but is instead just an extension. The global Windows Git config file is named .gitconfig.
The local Windows Git configuration file is simply named config, and like the system Git config file, it has no extension.
Where are Git config files stored?
As for the location of these three Windows Git configuration files, here is where you’ll find them:

The system Git config file is found in the mingw32\etc folder of the Git installation.
The global Git configuration file is found in the root of the user’s local profile or home directory (C:\Users\git-user).
The local Git config file is stored inside the .git directory of the repository in which you are working.
Can’t find the global git config file .gitconfig?
Sometimes users go looking for the global git config file, .gitconfig, and can’t find it. That’s because Git doesn’t actually create it until it’s used for the first time. Even just asking Git to edit the file will force its creation, but until that happens, efforts to find the .gitconfig file will be fruitless.

A quick command to force the creation of the .gitconfig file follows:

/c/ global/windows git config files (master)
$ git config –edit –global

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Editing Windows Git config files

A

Editing Windows Git config files
If you are interested in viewing or editing Git config files, simply use the git config command, specify the scope and add an –edit switch.

/c/ windows git config  (tutorial)
$ git config --global --edit
$ git config --system --edit
$ git config --local --edit
Each of these Git commands will open the corresponding Windows Git config file in the configuration specified editor. Just be careful, because if you incorrectly edit any of these files, you just might ruin your entire Windows Git config.
18
Q

updating the git global config file for short cut under [aliases] section

A

C:\Users\ambo5c.gitconfig
[user]
name = Uday Kumar Ambarapu
email = UdayKumar.Ambarapu@cchmc.org

[alias]
cob = checkout -b
s= status

19
Q

Git productivity with aliasing and multiple commands

A

https://bardoloi.com/blog/2015/10/29/git-aliases/

If you use Git for version control, then committing, branching, merging and rebasing are some of the most common tasks you perform. Multiple times a day, sometimes multiple times an hour. Why not speed them up a bit?
Git Aliases
The quickest way to do this is via git aliases. There are several gains we can make:

Fewer keystrokes: like git ci instead of git commit, git co for git checkout etc. It all adds up.
Combining repetitive commands: if you frequently perform the same sequence of steps, why not combine them all into a single alias?
e.g. git cop to combine checkout and pull operations
e.g. git rbs to combine all the steps needed to rebase from master into your current branch: git checkout master, git pull, git checkout - (check out previous branch), git rebase master, git push.
Here’s a look at the aliases I use most frequently (each alias should be a row under the [alias] section of your .gitconfig file):

ci = commit
st = status
co = checkout
di = diff --color-words
br = branch
cob = checkout -b
cm = !git add -A && git commit -m
fc = !git fetch && git checkout
save = !git add -A && git commit -m 'SAVEPOINT'
wip = commit -am "WIP"
Creating custom git commands
Aliases are just one way. My colleague Jeremy Jordan prefers creating custom commands for git, like so:

Navigate to C:\Program Files(x86)\Git\libexec\git-core\
Create a new file with no file extension
Name this file git-[YOUR_COMMAND_NAME]. e.g.: git-customCommand
Edit the file (see the attached example)
The first line of the file should be how the file will be interpreted. Ex. ‘#!/bin/bash’ to execute the scrip in bash. You can also create scripts using Ruby or Python but this line would need to change.
The reset of the script is your command so enter the commands that would accomplish the above scenario
Example Git Command File:
#!/bin/bash

git checkout master
git pull
git checkout -
git rebase master
Notes:
The alias defines and calls a bash function, that chains git commands using &&.
The quotes (“) around the function definition & call are not necessary for *nix environments, only for Windows.
Interestingly, commands such as “git rebase” are actually shell commands.

20
Q

adding comments to gitconfig file

A

you can comment lines out of Git config files using # or ;

[user]
name = Uday Kumar Ambarapu
email = UdayKumar.Ambarapu@cchmc.org

[alias]
cob = checkout -b # git checkout -b feature/yourbranch origin/develop - to create a branch from origin/develop
ups =branch –unset-upstream # to remove the upstream branch for your local branch
s= status # to get the status of the current branch
f= fetch -a # to get all the remote branches into your local remotes
m = merge origin/develop #merge from your current

21
Q

apply stash with out popping out of the stash list

A

git stash apply stash@{0}

22
Q

Microsoft-Require branches to be created in folders

A

for setting branch folder rules like releases/ or feature/ or users/

https://docs.microsoft.com/en-us/azure/devops/repos/git/require-branch-folders?view=azure-devops&tabs=browser

23
Q

Microsoft -Keep your branch strategy simple

A

Keep your branch strategy simple. Build your strategy from these three concepts:

Use feature branches for all new features and bug fixes.
Merge feature branches into the master branch using pull requests.
Keep a high quality, up-to-date master branch.
A strategy that extends these concepts and avoids contradictions will result in a version control workflow for your team that is consistent and easy to follow.

24
Q

Microsoft -Name your feature branches by convention

A

Use a consistent naming convention for your feature branches to identify the work done in the branch. You can also include other information in the branch name, such as who created the branch.

Some suggestions for naming your feature branches:

users/username/description
users/username/workitem
bugfix/description
features/feature-name
features/feature-area/feature-name
hotfix/description
25
Q

Feature Toggles (aka Feature Flags)

A

https: //martinfowler.com/articles/feature-toggles.html
https: //www.youtube.com/watch?v=UwrJaOtS4ys

to rollout only few features from the master branch code, into production. this could be set by having config file where you define which feature to push and which feature to not push

26
Q

Microsoft - Review and merge code with pull requests

A

The review that takes place in a pull request is critical for improving code quality. Only merge branches through pull requests that pass your review process. Avoid merging branches to the master branch without a pull request.

Reviews in pull requests take time to complete. Your team should agree on what’s expected from pull request creators and reviewers. Distribute reviewer responsibilities to share ideas across your team and spread out knowledge of your codebase.

Some suggestions for successful pull requests:

Two reviewers is an optimal number based on research.
If your team already has a code review process, bring pull requests into what you’re already doing.
Take care assigning the same reviewers to a large number of pull requests. Pull requests work better when reviewer responsibilities are shared across the team.
Provide enough detail in the description to quickly bring reviewers up to speed with your changes.
Include a build or linked version of your changes running in a staged environment with your pull request. Others can easily test the changes.

27
Q

Microsoft-Keep a high quality, up-to-date master branch

A

The code in your master branch should pass tests, build cleanly, and always be current. Your master branch needs these qualities so that feature branches created by your team start from a known good version of code.

Set up a branch policy for your master branch that:

Requires a pull request to merge code. This approach prevents direct pushes to the master branch and ensures discussion of proposed changes.
Automatically adds reviewers when a pull request is created. The added team members review the code and comment on the changes in the pull request.
Requires a successful build to complete a pull request. Code merged into the master branch should build cleanly.
Tip

The build pipeline for your pull requests should be quick to complete, so it doesn’t interfere with the review process.

28
Q

Cherry Pick and Revert in VSTS

A

https: //www.youtube.com/watch?v=9PClfHIUDng
https: //www.srcmake.com/home/git-cherry-picking

Git Cherry-Picking (Copying Commits From One Branch To Another) Tutorial + Demo

Cherry pick - to create a new branch off of existing branch with out directly merging into master
Revert - to revert the chages that the Pull request got completed, it creates a new branch with changes removed. we need to submit another pull request from this new branch

When you work with multiple branches, sometimes there are commits in one branch that you want to copy to another branch, but you can’t merge/rebase branches because you only want specific commits.

29
Q

Microsoft - Manage releases

A

Use release branches to coordinate and stabilize changes in a release of your code. This branch is long-lived and isn’t merged back into the master branch in a pull request, unlike the feature branches. Create as many release branches as you need. Keep in mind that each active release branch represents another version of the code you need to support. Lock release branches when you’re ready to stop supporting a particular release.

Use release branches
Create a release branch from the master branch when you get close to your release or other milestone, such as the end of a sprint. Give this branch a clear name associating it with the release, for example release/20.

Create branches to fix bugs from the release branch and merge them back into the release branch in a pull request.

30
Q

Microsoft - Port changes back to the master branch

A

Bring over changes made in your release branch into your master branch to prevent regression in your code. Port your changes from your release branch into a new feature branch to bring them back into the master branch. Use cherry-picking instead of merging so that you have exact control over which commits are ported back to the master branch. Merging the feature branch into the master branch can bring over release-specific changes you don’t want in the master branch.

Update the master branch with a change made in the release branch with these steps:

Create a new feature branch off the master branch to port the changes.
Cherry-pick the changes from the release branch to your new feature branch.
Merge the feature branch back into the master branch in a second pull request.

This release branch workflow keeps the pillars of the basic workflow intact: feature branches, pull requests, and a strong master branch that always has the latest version of the code.

31
Q

Microsoft Trunk-based Development

A
Code Close to master
Small, simple changes
-Fewer merge conflicts
-Easy to code review
-Encourages pull requests
-Simpler to ship; faster velocity
32
Q

Microsoft if my feature is not ready ; then user feature flag

A

if your code is not ready and you do not want to push it. but you need to push it and have feature flags

instead of keeping your code isolated from the other developers you work with, keep your features isolated from end users untill you are ready to release them using feature flags

33
Q

git fetch

A

fetches the remote into your local

34
Q

git checkout branchName

A

it checkouts the remote branch and creates a local copy

35
Q

cmd:>code readme.md

A

this opens the readme.md file in vs code

36
Q

git push origin update_readme

A

this pushes to the server

37
Q

Microsoft conflicting thoughts about Release Flow

A
  • in one articles it says that we create branch off master and push the chagnes back to master for issues and then cherry pick to release branch
    https: //docs.microsoft.com/en-us/azure/devops/learn/devops-at-microsoft/use-git-microsoft
  • in another article it says that we create a branch off release and hotfix them and push to production and then cherry pick them to master
    https: //docs.microsoft.com/en-us/azure/devops/repos/git/git-branching-guidance?view=azure-devops
38
Q

Feature Flag

A

https://docs.microsoft.com/en-us/azure/devops/learn/devops-at-microsoft/progressive-experimentation-feature-flags

39
Q

Feature management overview

A

https://docs.microsoft.com/en-us/azure/azure-app-configuration/concept-feature-management

40
Q

git messages should be imperative

Use the Imperative
Inkeeping with the standard output of git itself, all commit subject lines must be written using the imperative:

Good

Refactor subsystem X for readability
Update getting started documentation
Remove deprecated methods
Release version 1.0.0
Bad

Fixed bug with Y
Changing behavior of X
Very Bad

More fixes for broken stuff
Sweet new API methods
42

A

https://gist.github.com/turbo/efb8d57c145e00dc38907f9526b60f17

Use the Imperative
Inkeeping with the standard output of git itself, all commit subject lines must be written using the imperative:

Good

Refactor subsystem X for readability
Update getting started documentation
Remove deprecated methods
Release version 1.0.0
Bad

Fixed bug with Y
Changing behavior of X
Very Bad

More fixes for broken stuff
Sweet new API methods
42