【Git】Git常用命令汇总
文章参考网址:https://backlog.com/git-tutorial/cn/
快捷目录
内容
数据库设定和初始化
- 设置全局用户名:
git config --global user.name <用户名>
- 设置全局电子邮件:
git config --global user.email <电子邮件>
- 新建数据库:
git init
在当前目录下创建
notes:
- 在windows环境下,非ASCII字符的文件名会显示为编码,如下设置后便可以正常显示:
git config --global core.quotepath off
- 在windows环境下,只能输入ASCII字符,在提交包含非ASCII字符的信息时,不要使用
-m
选项,应在外部编 辑器中使用。(建议全英文)
提交操作
- 确认工作树和索引的状态:
git status
- 将文件加入到索引:
git add <file>..
可同时加入多个
指定参数.
或*
可以把所有文件加入到索引 - 提交文件:
git commit -m "<message>"
注意上面提到的notes。 - 查看提交记录:
git log
远端数据库
- 添加远程数据库:
git remote add <name> <url>
执行推送或拉取的时候,若省略数据库的名称,默认会使用名为origin
的远程数据库。(建议命名) - 推送更新内容:
git push <url> <refspec>
<repository>
目标url地址;<refspec>
指定分支(远程)
若指定-u
选项,下次推送时可省略分支名称。
在克隆的数据库目录执行推送时,可以省略<repository>
和<refspec>
- 克隆远程数据库:
git clone <repository> <directory>
<directory>
保存目录名称(本地)。 - 从远程数据库拉取更新内容:
git pull <repository> <refspec>
功能实际上为fetch
和merge
的组合。 - 从远程数据库拉取更新内容但不合并:
git fetch <repository> <refspec>
取得的提交会导入到没有没有名字的分支,若要合并,可以合并FETCH_HEAD
.
以上操作可能遇到冲突,需要手动解决(修改合并提交)。
分支操作
-
创建分支:
git branch <branchname>
-
查看分支:
git branch
不带参数,*
代表当前分支 -
切换分支:
git checkout <branchname>
-
创建并切换分支:
git checkout -b <branchname>
-
merge合并分支:
git merge <branchname>
默认为fast-forward
合并:当前分支没有被更改过,目标分支被更改过,当前分支会直接移动到最新的目标分支上。
可以指定参数--no-ff
设置为non fast-forward
合并,保留当前分支和目标分支的分支信息。 -
rebase合并分支:…
-
删除分支:
git branch -d <branchname>
标签操作
- 添加轻标签:
git tag <tagname>
在log
命令中添加-decorate
选项时,可以查看包含标签的历史记录。 - 查看标签:
git tag
- 添加注解标签:
git tag -am "<notes>" <tagname>
- 查看标签列表和注解:
git tab -n
改写提交
- 修改上一次的提交:
git commit --amend
- 添加一个新的节点记录取消上一次的提交:
git revert HEAD
意思是会产生一个新的提交,这个提交和上上次提交相同,保留取消上一次提交记录的过程树。 - 回退(删除直到)提交:
git reset
--hard
:HEAD位置,索引,工作树都修改。
--soft
:只修改HEAD位置。
--mixed
:不修改工作树。 - 从目标分支复制指定提交到当前分支:
git cherry-pic <序列号>
- 汇合提交:将多个指定提交汇合为一个提交:
git rebase -i <~/^操作>
- 将目标分支的所有提交合并到当前提交:
git merge --squash <branchname>
将目标分支树移动到当前分支上。
以上操作可能遇到冲突,需要手动解决(修改合并提交)。
拓展内容:成功的Git分支模型
主分支
主分支有两种:master和develop
master分支只负责管理发布的状态。在提交时使用标签记录版本号。
develop分支是针对发布的日常开发分支。
特性分支
feature分支是针对新功能的开发,在bug修正的时候从develop分支分叉出来的。基本上不需要共享特性分支的操作,所以不需要远端控制。完成开发后,把分支合并回develop分支后发布。
release分支
release分支是为release做准备的。通常会在分支名称的最前面加上release-。release前需要在这个分支进行最后的调整,而且为了下一版release开发用develop分支的上游分支。
一般的开发是在develop分支上进行的,到了可以发布的状态时再创建release分支,为release做最后的bug修正。
到了可以release的状态时,把release分支合并到master分支,并且在合并提交里添加release版本号的标签。
要导入在release分支所作的修改,也要合并回develop分支。
hotfix分支
hotFix分支是在发布的产品需要紧急修正时,从master分支创建的分支。通常会在分支名称的最前面加上 hotfix-。
例如,在develop分支上的开发还不完整时,需要紧急修改。这个时候在develop分支创建可以发布的版本要花许多的时间,所以最好选择从master分支直接创建分支进行修改,然后合并分支。
修改时创建的hotFix分支要合并回develop分支。