版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
文章目录
1.git config 配置信息
git 的设置文件为 .gitconfig
,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)
# 显示当前的Git配置
$ git config --list
# 编辑Git配置文件
$ git config -e [--global]
# 设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"
另外因为要和远程服务器交互,pull 和 push
代码,当新安装 git 的时候需要生成 ssh key
作为交互凭证,其命令如下
# 该命令通常会生成 ~/.ssh 目录,其中后缀为 .pub 的文件即为公钥,需将其添加到远程服务器的 ssh key 中
$ ssh-keygen
2. git clean 清除工作区修改
该命令用于清理workspace中自己的改动(红色),比如代码被改乱了,想要清理掉所有修改重新开始
//清理所有workspace下的改动
git clean -f -d
//清理所有workspace下的改动,包含忽视的文件
git clean -f -d -x
//指定清理的路径,可以很方便的去掉指定的一个目录或多个文件的新改动
git clean -f -d <Path>
3. git format-patch 生成 patch 文件
该命令将commit存为特殊格式的patch文件,用git am可以再把这些patch拿进来,其通常的步骤如下
-
将最旧的 commit1 到 较新的 commit 2 之间的提交生成 patch 文件
$ git format-patch commit1^..commit2
-
可以使用 git apply将patch打进分支,但不提交
git apply xxx.patch
-
使用 git am 将patch打进分支,并直接提交,相当于一次性 cherry-pick 多个提交
# 打入单笔提交 git am xxx.patch #一次性打入多笔提交 git am *.patch
4. git push 创建/删除远程分支
命令 | 功能 |
---|---|
git push <远程主机> <本地分支或 HEAD>:<远程分支> | 将本地代码推送到远程分支 |
git push origin master | 将本地改动提交到 UPSTREAM REPOSITORY |
git push [email protected]:username/project.git | 将本地改动提交到指定的 UPSTREAM REPOSITORY |
git push origin master -f | 强制将本地改动提交到 UPSTREAM REPOSITORY,如果有冲突,会强制覆盖 |
分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建
- 使用以下命令可以创建本地新的dev分支,这个时候dev是一个本地分支,远程仓库不知道它的存在
# 创建并切换到本地分支 dev git checkout -b dev # 以下命令可以删除本地分支 git checkout master # 切换到master分支 git branch -d dev # 删除本地dev分支 # 查看所有分支,当前所在分支会被星号(*)标注 git branch -a
- 将 dev 分支发布到远程仓库,也就是同步dev分支的代码到远程服务器
# 创建远程仓库 dev 分支 git push origin dev # 删除远程仓库dev分支,注意origin后面的空格 git push origin :dev
5. git commit --amend 修改远程分支的历史提交
5.1 修改远程分支上一次提交
- 使用 git 的过程中,有时候我们会发现上一次开发某个功能或者修复某个 bug 的 commit 不够完整,也就是没有达到预期要求。这时候再修改代码,重新提一笔 commit 虽然能达到目的,但是也把 commit 的提交完整性破坏掉了。此时我们可以本地修改代码,然后使用以下命令来合并暂存的修改和上一次的提交,用新的 commit 替换上一个提交。缓存区没有文件时运行这个命令可以用来编辑上次提交的提交信息,而不会更改 commit 的内容
//将本地修改使用 git add 添加到暂存区后,使用以下命令覆盖上一次提交 git commit --amend //将新的提交 push 到远程分支,注意 -f 参数,没有会导致远程与本地的一次merge操作,产生冗余提交记录 git push -f
- 修改上一次提交的作者信息
git commit --amend --author="userName <userMail>" git push --force-with-lease origin master
5.2 修改远程分支的任意提交信息
使用git提交代码时可能会出现message写错的情况,而此时commit已经push到远程服务器,想要修改的话主要需用到以下几个命令。另外需注意,在修改历史commit message时,需确保当前分支是最新代码,且已经提交了所有本地修改
git log
git rebase -i HEAD~n # n指定距离最新提交的几笔提交
git commit --amend
git rebase --continue
git push -f
git log
查看历史记录$ git log
git rebase -i HEAD~3
确定要修改哪些commit
其中 HEAD~3 表示最近的3个提交,本例中只涉及最近的3笔,并且修改第2笔提交,如下图$ git rebase -i HEAD~3
- 使用
git commit --amend
和git rebase --continue
修改edit的commit
上一步执行完成后 HEAD 指针就指向了第一个需要修改的 commit,此时可以使用以下命令来完成对 commit message 的修改# 进入vim 编辑模式,修改 commit message $ git commit --amend # 完成一个commit 的修改,HEAD 指向下一个需要修改的commit # 如果全部修改完毕,则提示 Successfully rebased and updated refs/heads/dev. $ git rebase --continue
git log
查看提交的历史,git push -f
将修改强制更新到远程服务器$ git push -f