Git配置

设置用户名和邮箱

  用于设置提交记录中的用户名和邮箱,这些信息会出现在每一次提交中。

1
2
git config --global user.name "your name"
git config --global user.email "your email"

示例

1
2
git config --global user.name "John Doe"
git config --global user.email "john.doe@example.com"

配置SSH

Git通过SSH连接Github,详情可见 SSH配置

创建仓库

初始化git仓库

  在当前目录下创建一个新的Git仓库,生成一个隐藏的.git目录用于存放Git的所有版本控制信息。

1
git init

示例

1
2
3
4
5
6
7
8
9
10
11
mkdir myproject
cd myproject

echo "# MyExample" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/cnlicm/MyExample.git
git push -u origin main

克隆git仓库

  从远程仓库复制一个完整的Git仓库到本地。

1
git clone <url> [localRepositoryName]
  • url(必填) :Git仓库地址
  • localRepositoryName(可选) :克隆后本地仓库的名称,若未指定默认采用远程仓库的名字

  克隆时,可以用不同的协议,包括sshgithttps等,其中最常用的是ssh,因为速度较快,还可以配置公钥免输入密码,各种写法格式如下:

1
2
3
git clone git@github.com/example/example.git            --SSH协议
git clone git://github.com/example/example.git --GIT协议
git clone https://github.com/example/example.git --HTTPS协议

示例

1
git clone https://github.com/user/repo.git

基本操作

添加文件到暂存区

  将指定文件的改动添加到暂存区。可以使用.添加所有改动的文件。

1
2
3
4
git add <文件名>

# 添加所有文件
git add .

示例

1
2
git add README.md
git add .

查看文件的状态

  显示当前工作目录和暂存区的状态,显示哪些文件发生了变化但还未暂存,哪些文件已经暂存但未提交。

1
git status

查看更新的详细信息

   执行 git diff 来查看更新的详细信息,与git status不同的是,git status只显示更新的状态,而 git diff 可以显示已写入缓存与已修改但尚未写入缓存的改动的区别具体的详细信息。

1
git diff

提交暂存区文件到本地仓库

  将暂存区的所有内容提交到本地仓库,并附带一条提交信息。

1
git commit -m "提交信息"

示例

1
git commit -m "Initial commit"

查看日志

  使用git log可查看提交历史

1
git log

撤销暂存区的改动

  将文件从暂存区移除,但保留工作目录的改动。

1
git reset HEAD <file-name>

示例

1
git reset HEAD README.md

撤销工作区的改动

  将文件恢复到最近一次提交的状态。

1
git checkout -- <file-name>

示例

1
git checkout -- README.md

删除文件

  如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit 的提示。要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除,然后提交。可以如下使用:

1
2
3
4
5
6
7
8
git rm <file>

git rm -f <file> # 强制删除,如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f

git rm --cached <file> # 仅删除暂存区跟踪状态不会删除文件

git rm –r * # 可递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件:

移动或重命名文件

  git mv 命令用于移动或重命名一个文件、目录、软连接,如要将一个test.txt文件重命名为newtest.txt,则可以使用如下命令:

1
git mv test1.txt test2.txt # 原地移动可实现重命名

分支操作

查看当前分支

  列出所有本地分支,当前所在的分支前会有一个星号。

1
git branch

创建新分支

  创建一个新的分支,但不会自动切换到新分支。

1
git branch <branch-name>

示例

1
git branch main

切换分支

  切换到指定的分支。

1
git checkout <branch-name>

示例

1
git checkout main

创建并切换到新分支

  创建一个新分支并自动切换到该分支。

1
git checkout -b <branch-name>

  这是一个符合操作,类似于执行如下指令:

1
2
git branch <branch-name>        # 创建新分支
git checkout <branch-name> # 切换到新分支

示例

1
git checkout -b pro

删除分支

  删除指定的本地分支。

1
git branch -d <branch-name>

示例

1
git branch -d pro

合并分支

  将指定分支的历史记录和改动合并到当前分支。

1
git merge <branch-name>

示例

1
2
3
# 将dev分支合并到main分支
git checkout main
git merge dev

远程仓库操作

查看远程仓库

  列出所有远程仓库的别名及其对应的URL。

1
git remote -v

添加远程仓库

  为当前仓库添加一个新的远程仓库。

1
git remote add origin <repository_url>

示例

1
2
3
git remote add origin https://github.com/cnlicm/MyExample.git
git branch -M main
git push -u origin main

推送到远程仓库

  将本地分支的更新推送到指定的远程仓库。

1
git push origin <branch-name>

示例

1
git push origin main

拉去远程仓库的更新

  从远程仓库拉取更新并合并到当前分支。

1
git pull origin <branch-name>

示例

1
git pull origin main

标签操作

创建标签

  为当前提交创建一个标签,标签通常用于标记重要的版本。

1
git tag <tag-name>

示例

1
git tag v1.0

查看标签

  列出所有标签。

1
git tag

推送标签到远程仓库

  将指定标签推送到远程仓库。

1
git push origin <tag-name>

示例

1
git push origin v1.0

.gitignore文件

  .gitignore 文件用于指定哪些文件或目录不应被Git管理。例子:

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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# vscode
.vscode

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# DNX
project.lock.json
artifacts/

*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignoreable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
*.mdf
*.ldf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# JetBrains Rider
.idea/
*.sln.iml