2019-07-30 01:02:59 -04:00
---
2020-07-29 08:09:45 -04:00
stage: Create
group: Source Code
2021-12-29 13:13:42 -05:00
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
2019-07-30 01:02:59 -04:00
---
2016-10-10 16:18:06 -04:00
2021-02-09 13:09:59 -05:00
# Edit files through the command line **(FREE)**
2015-06-25 11:45:37 -04:00
2020-11-06 13:09:07 -05:00
When [working with Git from the command line ](start-using-git.md ), you need to
2019-07-30 01:02:59 -04:00
use more than just the Git commands. There are several basic commands that you should
2021-12-29 13:13:42 -05:00
learn to make full use of the command line.
2016-10-10 16:18:06 -04:00
2019-07-30 01:02:59 -04:00
## Start working on your project
2015-06-25 11:45:37 -04:00
2019-08-27 04:44:07 -04:00
To work on a Git project locally (from your own computer), with the command line,
2020-11-06 13:09:07 -05:00
first you need to [clone (copy) it ](start-using-git.md#clone-a-repository ) to
2019-07-30 01:02:59 -04:00
your computer.
2016-10-10 16:18:06 -04:00
2019-07-30 01:02:59 -04:00
## Working with files on the command line
2015-06-30 15:45:21 -04:00
2019-07-30 01:02:59 -04:00
This section has examples of some basic shell commands that you might find useful.
For more information, search the web for _bash commands_ .
2018-06-12 03:51:11 -04:00
2019-07-30 01:02:59 -04:00
Alternatively, you can edit files using your choice of editor (IDE), or the GitLab user
interface (not locally).
2018-06-12 03:51:11 -04:00
2019-07-30 01:02:59 -04:00
### Common commands
2018-06-12 03:51:11 -04:00
2019-07-30 01:02:59 -04:00
The list below is not exhaustive, but contains many of the most commonly used commands.
2018-06-12 03:51:11 -04:00
2019-07-30 01:02:59 -04:00
| Command | Description |
|--------------------------------|---------------------------------------------|
| `cd NAME-OF-DIRECTORY` | Go into a directory to work in it |
| `cd ..` | Go back one directory |
2021-03-17 11:09:03 -04:00
| `ls` | List what's in the current directory |
| `ls a*` | List what's in the current directory that starts with `a` |
| `ls *.md` | List what's in the current directory that ends with `.md` |
2019-07-30 01:02:59 -04:00
| `mkdir NAME-OF-YOUR-DIRECTORY` | Create a new directory |
| `cat README.md` | Display the contents of a [text file you created previously ](#create-a-text-file-in-the-current-directory ) |
| `pwd` | Show the current directory |
| `clear` | Clear the shell window |
2016-10-10 16:18:06 -04:00
2019-07-30 01:02:59 -04:00
### Create a text file in the current directory
2015-06-30 15:45:21 -04:00
2019-07-30 01:02:59 -04:00
To create a text file from the command line, for example `README.md` , follow these
steps:
2016-10-10 16:18:06 -04:00
2020-03-23 23:09:28 -04:00
```shell
2015-06-30 15:45:21 -04:00
touch README.md
nano README.md
#### ADD YOUR INFORMATION
#### Press: control + X
#### Type: Y
#### Press: enter
```
2019-07-30 01:02:59 -04:00
### Remove a file or directory
2018-06-12 03:51:11 -04:00
2020-11-06 13:09:07 -05:00
It's easy to delete (remove) a file or directory, but be careful:
2016-10-10 16:18:06 -04:00
2020-12-07 19:09:45 -05:00
WARNING:
2019-07-30 01:02:59 -04:00
This will **permanently** delete a file.
2019-06-27 13:53:48 -04:00
2020-03-23 23:09:28 -04:00
```shell
2015-06-30 15:45:21 -04:00
rm NAME-OF-FILE
```
2020-12-07 19:09:45 -05:00
WARNING:
2019-07-30 01:02:59 -04:00
This will **permanently** delete a directory and **all** of its contents.
2019-06-27 13:53:48 -04:00
2020-03-23 23:09:28 -04:00
```shell
2018-03-27 10:12:20 -04:00
rm -r NAME-OF-DIRECTORY
2015-06-30 15:45:21 -04:00
```
2019-07-30 01:02:59 -04:00
### View and Execute commands from history
You can view the history of all the commands you executed from the command line,
and then execute any of them again, if needed.
First, list the commands you executed previously:
2016-10-10 16:18:06 -04:00
2020-03-23 23:09:28 -04:00
```shell
2015-06-30 15:45:21 -04:00
history
```
2019-07-30 01:02:59 -04:00
Then, choose a command from the list and check the number next to the command (`123`,
for example) . Execute the same full command with:
2018-06-12 03:51:11 -04:00
2020-03-23 23:09:28 -04:00
```shell
2018-06-12 03:51:11 -04:00
!123
```
2015-07-09 18:33:42 -04:00
### Carry out commands for which the account you are using lacks authority
2016-10-10 16:18:06 -04:00
2019-07-30 01:02:59 -04:00
Not all commands can be executed from a basic user account on a computer, you may
need administrator's rights to execute commands that affect the system, or try to access
protected data, for example. You can use `sudo` to execute these commands, but you
2020-11-06 13:09:07 -05:00
might be asked for an administrator password.
2016-10-10 16:18:06 -04:00
2020-03-23 23:09:28 -04:00
```shell
2019-07-30 01:02:59 -04:00
sudo RESTRICTED-COMMAND
2015-06-30 15:45:21 -04:00
```
2015-08-26 00:57:10 -04:00
2020-12-04 16:09:29 -05:00
WARNING:
2019-06-27 13:53:48 -04:00
Be careful of the commands you run with `sudo` . Certain commands may cause
2019-07-30 01:02:59 -04:00
damage to your data or system.
2019-06-27 13:53:48 -04:00
2021-01-22 19:08:46 -05:00
## Sample Git task flow
2016-10-10 16:18:06 -04:00
2021-01-22 19:08:46 -05:00
If you're completely new to Git, looking through some [sample task flows ](https://rogerdudler.github.io/git-guide/ )
2020-11-06 13:09:07 -05:00
may help you understand the best practices for using these commands as you work.
2018-06-12 03:51:11 -04:00
2019-07-30 01:02:59 -04:00
<!-- ## Troubleshooting
2019-07-12 04:09:23 -04:00
2019-07-30 01:02:59 -04:00
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
one might have when setting this up, or when something is changed, or on upgrading, it's
important to describe those, too. Think of things that may go wrong and include them here.
This is important to minimize requests for support, and to avoid doc comments with
questions that you know someone might ask.
2018-09-14 19:13:39 -04:00
2019-07-30 01:02:59 -04:00
Each scenario can be a third-level heading, e.g. `### Getting error message X` .
If you have none to add when creating a doc, leave this section in place
but commented out to help encourage others to add to it in the future. -->