Git 常用命令

初始化

  • 首次安装后设置名字和 email 地址。
1
2
3
git config --global user.name "YourName"

git config --global user.email "email@example.com"
  • 创建 ssh Key。
1
ssh-keygen -t rsa -C "email@example.com"
  • 进入目录并初始化为 git 仓库。
1
git init

文件更改

  • 放弃文件在工作区的修改。
1
git checkout -- <文件名>
  • 添加文件到暂存区。
1
git add <文件/路径名>
  • 撤销存放到暂存区的文件。
1
git reset HEAD <文件/路径名>
  • 查看文件修改部分。
1
git diff HEAD -- <文件/路径名>
  • 提交文件至仓库。
1
2
1. 提交并添加注释。
git commit -m "注释"
1
2
2. 修改最近的提交注释。
git commit -amend
  • 删除并添加到缓存区。
1
git rm <文件名>

仓库状态

  • 查看当前仓库状态。
1
git status
  • 查看提交日志。
1
git log [--pretty=oneline] (参数为简化为单行显示)
  • 查看命令执行历史记录。
1
git reflog

版本控制

  • 回退版本, ^ 表示回退到上一个版本, ^^ 表示上上一个,以此类推。
1
git reset --hard HEAD^

分支管理

  • 创建并切换到目标分支。
1
git checkout -b <分支>
  • 切换到目标分支。
1
git branch <分支>
  • 查看分支。
1
git branch
  • 查看分支合并图
1
git log --graph
  • 整理分支提交历史为直线。
1
git rebase
  • 合并目标分支到当前分支,相当于指针直接指向目标分支。
1
git merge <分支>
  • 合并目标分支到当前分支
    并禁用 Fast forward 模式(非指针指向,而是提交和目标分支同样的内容)。
1
git merge --no-ff -m "合并注释" <分支>
  • 删除目标分支。
1
git branch -d <分支>

现场保存

  • 保存当前工作现场。
1
git stash
  • 查看保存的 stash。
1
git stash list
  • 恢复同时删除 stash 内容。
1
git stash pop
  • 恢复 stash 内容。
1
git stash apply <stash id>
  • 删除 stash 内容。
1
git stash drop

标签使用

  • 为当前提交创建标签。
1
git tag <标签>
  • 为目标提交记录(通过指定 commit id)创建标签。
1
2
1. 为 id 是 <commit id> 的提交记录创建标签。
git tag <标签> <commit id>
1
2
2. 创建标签的同时附加注释。
git tag -a <标签> -m "标签注释" <commit id>
  • 列出所有 tag。
1
git tag
  • 查看目标 tag 详情。
1
git show <标签>
  • 删除标签。
1
git tag -d <标签>
  • 推送标签至远程库
1
2
1. 推送标签 myTag 至远程库。
git push origin <标签>
1
2
2. 推送所有标签至远程库。
git push origin --tags
  • 从远程库删除标签。
1
2
3
4
5
1. 先从本地删除。
git tag -d <标签>

2. 然后从远程库删除。
git push origin :refs/tags/<标签>

远程库

  • 添加本地库到远程库。
1
git remote add origin <远程库地址>
  • 首次推送到远程库。
1
git push -u origin <分支名>
  • 推送到远程库。
1
git push origin <分支名>
  • 克隆远程库到本地。
1
git clone <远程库地址>

忽略规则

GitHub 提供:https://github.com/github/gitignore

  • android.gitignore
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# Built application files
*.apk
*.ap_
*.aab

# Files for the ART/Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/
out/
release/

# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Android Studio Navigation editor temp files
.navigation/

# Android Studio captures folder
captures/

# IntelliJ
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
# Android Studio 3 in .gitignore file.
.idea/caches
.idea/modules.xml
# Comment next line if keeping position of elements in Navigation Editor is relevant for you
.idea/navEditor.xml

# Keystore files
# Uncomment the following lines if you do not want to check your keystore files in.
#*.jks
#*.keystore

# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild

# Google Services (e.g. APIs or Firebase)
# google-services.json

# Freeline
freeline.py
freeline/
freeline_project_description.json

# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md

# Version control
vcs.xml

# lint
lint/intermediates/
lint/generated/
lint/outputs/
lint/tmp/
# lint/reports/
作者

l0neman

发布于

2020-06-05

更新于

2020-06-05

许可协议

评论