<commit_before># Git(三) 命令备忘

> 可视化工具只是命令行的一个子集，可视化能做的命令行都能做，但是到目前为止还没有一个可视化工具实现了全部命令行，这里收集常用的命令，同时添加一些我的使用经验。

## 命令备忘

全部命令在[官方文档](https://git-scm.com/docs/)查到，这里翻译和记录一些常用命令。

### git clone

`git clone 项目地址`，克隆一个项目到本地。

### git status

`git status`，查看哪些文件被改变了，需要在被 git 托管的文件夹下使用。下面是几个一级标题对应的含义：
- Untracked files: 没有被托管的文件；
- Changes not staged for commit: 被托管了但是没有被添加到推送队列；
- Changes to be committed: 可被提交的文件，从上一个状态到这个状态需要下面的 `git add` 命令；
下面是 "Changes to be committed" 状态下文件的一些状态：
- modified: 修改的文件；
- new file: 新添加的文件;
- deleted: 删除文件
	
### git add
	
`git add dir/files`，添加托管文件，因为新建文件不会自动被 git 托管，所以需要手动添加

	// 添加全部文件
	git add .

### git rm
	
	// 移除托管文件
	git rm --cached 文件名

### git commit
	
	// 提交到本地的一个版本 ---- https://git-scm.com/docs/git-commit
	git commit -m "提交的描述信息"
	// 提交全部更改和删除的文件
	git commit -a -m "提交的描述信息" 

### git log	

	// 查看 commit日志
	git log

### git push<commit_msg>【文章内容添加】【git-3】【git commit --amend 命令用法】<commit_after># Git(三) 命令备忘

> 可视化工具只是命令行的一个子集，可视化能做的命令行都能做，但是到目前为止还没有一个可视化工具实现了全部命令行，这里收集常用的命令，同时添加一些我的使用经验。

## 命令备忘

全部命令在[官方文档](https://git-scm.com/docs/)查到，这里翻译和记录一些常用命令。

### git clone

`git clone 项目地址`，克隆一个项目到本地。

### git status

`git status`，查看哪些文件被改变了，需要在被 git 托管的文件夹下使用。下面是几个一级标题对应的含义：
- Untracked files: 没有被托管的文件；
- Changes not staged for commit: 被托管了但是没有被添加到推送队列；
- Changes to be committed: 可被提交的文件，从上一个状态到这个状态需要下面的 `git add` 命令；
下面是 "Changes to be committed" 状态下文件的一些状态：
- modified: 修改的文件；
- new file: 新添加的文件;
- deleted: 删除文件
	
### git add
	
`git add dir/files`，添加托管文件，因为新建文件不会自动被 git 托管，所以需要手动添加

	// 添加全部文件
	git add .

### git rm
	
	// 移除托管文件
	git rm --cached 文件名

### git commit
	
	// 提交到本地的一个版本 ---- https://git-scm.com/docs/git-commit
	git commit -m "提交的描述信息"
	// 提交全部更改和删除的文件
	git commit -a -m "提交的描述信息" 
	// 合并缓存区的修改和最近的一次commit, 然后用生成的新的commit替换掉老的. 
	// 如果缓存区没有内容, 那么利用amend可以修改上一次commit的描述.
	git commit --amend

开发过程中很容易忘记stage某个文件或填写了不够准确的commit描述. --amend就是用来fix这些错误的.

不要对一个公共的commit使用amend，amend后生成的commit是一个全新的commit, 之前的老的commit会从项目历史中被删除. 如果你amend了一个被其他开发者使用的commit, 会严重影响其他开发者。

另外你可能需要一些命令行的技巧：

    // 插入文字，你会发现默认是不让输入的
    i
    // 提交编辑后的文本
    esc
    :wq!

### git log	

	// 查看 commit日志
	git log

### git push
{'fraction_non_alphanumeric': 0.12597701149425286, 'fraction_numerical': 0.0004597701149425287, 'mean_word_length': 4.002298850574713, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '329473', 'n_tokens_mistral': 1421, 'n_tokens_neox': 1580, 'n_words': 193}