1. 配置

1.1 设置全局用户名和邮箱

git config --global user.name xxx

git config --global user.email xxx@xxx.com

上述命令是设置全局用户名和邮箱,设置完成后,所有git仓库的用户名和邮箱都是一样的。

建议:

在公司电脑中,建议将用户名设置为姓名全拼音或者域账号,建议将邮箱设置为公司邮箱,方便团队成员快速识别。

1.2 设置某个git仓库的用户名和邮箱

如果你是某个开源项目的贡献者,每次提交代码时肯定希望显示的是自己的昵称和个人邮箱,而不是全局设置里的域账号和公司邮箱,此时则可以单独对这个git仓库设置用户名和邮箱。

首先,切换到目标git仓库的根目录,打开终端窗口,执行如下命令:

git config user.name xxx

git config user.email xxx@163.com

执行完命令后,查看.git文件夹下的config文件,会看到底部增加了刚刚配置的用户名和邮箱。

注意事项:上述命令仅对当前git仓库生效,不影响全局配置。

1.3 查看用户名和邮箱

git config user.name

git config user.email

1)如果是在某个git仓库下执行上述命令,并且当前git仓库单独设置过用户名和邮箱,返回的是当前git仓库的用户名和邮箱,否则,返回的是全局的用户名和邮箱。

2)如果不是在某个git仓库下执行上述命令,返回的是全局的用户名和邮箱。

1.4 查看全部配置

git config --list

1)如果是在某个git仓库下执行上述命令,返回的是全局配置+当前项目的配置。

2)如果不是在某个git仓库下执行上述命令,返回的是全局配置。

2. 拉取代码

2.1 git clone

如果要将远程git仓库的代码克隆到本地,可以使用git clone命令,如下所示:

git clone https://github.com/mybatis/mybatis-3.git

命令执行完成后,会自动创建一个名为mybatis-3的文件夹。

如果你想自定义生成文件夹的名字,可以进行指定,如下所示:

git clone https://github.com/mybatis/mybatis-3.git mybatis

命令执行完成后,会发现自动创建了一个名为mybatis的文件夹,而不是mybatis-3。

2.2 git pull

如果团队成员有提交代码,想要拉取最新代码到本地,可以使用git pull命令,如下所示:

git pull

3. 分支

3.1 查看本地分支

git branch

前面带*并高亮显示的代表当前分支。

3.2 查看远程分支

git branch -r

3.3 查看所有分支

所有分支包含本地和远程的分支

git branch -a

3.4 创建分支

1)创建本地分支(基于本地分支创建)

git branch fix_0609_npe

该命令是基于当前分支创建(一般是基于master分支并保证代码最新),并且创建成功后仍然停留在当前分支,不会跳转到新建的分支。

2)创建本地分支(基于远程分支创建)

git checkout -b fix_0609_npe origin/master

以上命令会基于远程master分支创建本地分支fix_0609_npe,并切换到分支fix_0609_npe。

特别注意:此时本地分支fix_0609_npe关联的远程分支是master

3)创建远程分支

git push origin fix_0609_npe:fix_0609_npe

以上命令会创建一个名为fix_0609_npe的远程分支。

4)本地分支与远程分支建立关联

git branch --set-upstream-to=origin/fix_0609_npe fix_0609_npe

以上命令会将本地分支fix_0609_npe与远程分支fix_0609_npe建立关联。

可以通过git branch -vv命令来查看本地分支与远程分支的关联关系:

git branch -vv

3.5 切换分支

切换分支可以使用git checkout命令。

1)切换到已存在的分支

git checkout test

2)切换到不存在的分支(基于本地当前分支自动创建)

git checkout -b fix_0609_npe

以上命令会基于当前分支创建新分支fix_0609_npe,并切换到该分支。

3)切换到不存在的分支(基于指定远程分支自动创建)

git checkout -b fix_0609_npe origin/fix_0609_npe

4)切换到上一个分支

git checkout -

3.6 删除分支

删除分支时需要先切换到其它分支,否则分支无法删除

git branch -d fix_0609_npe

如果某些分支无法正常删除,可以强制删除:

git branch -D fix_0609_npe

删除远程分支:

git push origin --delete fix_0609_npe

4. 提交修改

提交前,可以通过git status查看下文件修改状态:

git status

然后使用git add命令将文件添加到暂存区:

git add .

然后使用git commit命令提交文件:

git commit -m "code optimize"

以上2个命令可以通过下面一行命令来实现:

git commit -am "code optimize"

最后执行git push命令将本地commit推送到远程分支:

git push

5. 版本回退

如果代码commit之后,想撤销,可以使用git reset命令,如下所示:

git reset --soft HEAD^

以上命令撤销后,会保留修改的内容。

如果确认不需要保留修改的内容,可以将soft换位hard,如下所示:

git reset --hard HEAD^

说明:

HEAD^表示上一个版本,即上一次commit,等价于HEAD~1,

如果想撤销最近2次的commit,可以使用HEAD~2。

也可以回退到指定的commit_id(可通过git log命令查看commit_id),如下所示:

 git reset --hard e094633609aeebd664126dfc48b602157b2dabbc

说明:commit_id为e094633609aeebd664126dfc48b602157b2dabbc的内容修改还存在

如果远程分支也要回退,需要执行以下命令:

git push --force

6. 暂存

经常遇到某个需求开发了一部分代码,然后被打断去处理线上bug,此时就需要先将本地的修改暂存起来,待线上bug处理后,再将本地

的修改还原,git stash命令可以完美解决这种场景。

6.1 暂存修改

可以使用如下命令,将本地的修改暂存起来:

git stash

但推荐暂存时添加清晰的备注,方便区分,如下所示:

git stash save "code optimize"

6.2 查看暂存列表

git stash list

6.3 应用某个暂存

git stash apply

默认使用第一个暂存,等价于下面这样的写法:

git stash apply stash@{0}

如果想使用其它暂存,可以指定顺序,比如第2个,就是stash@{1},依次类推:

git stash apply stash@{1}

说明:该命令不会将对应的暂存从暂存列表中删除

6.4 应用并删除某个暂存

git stash pop

默认使用第一个暂存,等价于下面这样的写法:

git stash pop stash@{0}

如果想使用其它暂存,可以指定顺序,比如第2个,就是stash@{1},依次类推:

git stash pop stash@{1}

说明:该命令会将对应的暂存从暂存列表中删除

6.5 删除暂存

git stash drop

默认删除第一个暂存,等价于下面这样的写法:

git stash drop stash@{0}

如果想删除其它暂存,可以指定顺序,比如第2个,就是stash@{1},依次类推:

git stash drop stash@{1}

如果想删除所有的暂存,可以执行以下命令:

git stash clear

7. 合并所有改动

合并代码的场景有很多,比如将master分支合并到自己的开发分支,将开发分支合并到公共分支test、uat。

git merge master

以上命令代表将本地master分支的代码合并到当前分支。

git merge origin/master

以上命令代表将远程master分支的代码合并到当前分支。

8. 合并部分改动

因为git merge命令合并的是所有改动,发生冲突的几率是很高的,解决冲突非常耗时且容易出错,所以在某些场景下,可以只合并部分改动,此时可以使用git cherry-pick命令。

以下命令,是将commit id为aa6b6922fc19173c090c64a4c1d399265e4f0500的提交合并到当前分支:

git cherry-pick aa6b6922fc19173c090c64a4c1d399265e4f0500

也可以指定多个commit id:

git cherry-pick 12eef219da5d7f45892142ddeb107f496177274d aa6b6922fc19173c090c64a4c1d399265e4f0500

9. 特别注意

9.1 强制覆盖本地代码与远程仓库保持一致

如果发现远程master分支被污染后,应尽快将远程master分支还原,然后执行如下命令覆盖掉本地分支代码,与远程master分支保持一致:

git reset --hard origin/master

或者将本地master分支删除,重新基于远程master分支拉取:

git branch -d master

git checkout -b master origin/master

9.2 切换分支会把未提交的文件带到其它分支

假如在test分支修改了文件A,未提交,然后此时切换到uat分支时,如果没有冲突,文件A的修改会被带到uat分支,如果不注意的话,就容易被提交,发布到线上,造成bug。

避免措施:

  1. 切换分支时,检查下本地文件状态,尽量不要有未提交的文件,可以stash或者commit
  2. 提交代码前,尽量比对下修改内容,避免误提交

10. 其它

10.1 清空命令行

git clear

10.2 查看git 版本号

git version

10.3 IDEA Annotate 显示设置

IDEA默认显示的是Last Name,可以调整为显示Full Name,否则看到的可能是Zhang这样的,无法快速识别到是哪个人:

10.4 拉取或者合并代码提示需要输入commit message

Please enter a commit message to explain why this merge is necessary

解决方案:

1)按下esc键

2)输入:wq

3)按下回车键

10.5 git gc

有时执行git pull命令时,会提示下面这样的信息:

warning: There are too many unreachable loose objects; run 'git prune' to remove them.

原因是因为提交记录过多,导致本地的缓冲区占用太大,可以执行以下命令清理:

git gc --prune=now

【工具篇】git常用命令分享的更多相关文章

  1. 团队开发工具git常用命令

    Git 常用命令 Git配置 git config --global user.name "storm" git config --global user.email " ...

  2. Git 常用命令详解

    Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) Git 的更多介绍 ...

  3. Git 常用命令详解(二)

    Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) Git 的更多介绍 ...

  4. 【转】 Git 常用命令详解(二)----不错

    原文网址:http://blog.csdn.net/ithomer/article/details/7529022 Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如: ...

  5. git常用命令2

    一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r ...

  6. Git常用命令(转)

    目前开发的新项目使用的版本控制工具基本用的都是Git,老项目用的还是Svn,网上Git资源也很多,多而杂.我整理了一份关于Git的学习资料,希望能帮助到正在学习Git的同学. 一. Git 命令初识 ...

  7. Git常用命令清单笔记

    git github 小弟调调 2015年01月12日发布 赞  |   6收藏  |  45 5k 次浏览 这里是我的笔记,记录一些git常用和一些记不住的命令,这个笔记原本是基于 颜海镜的文章增加 ...

  8. 转 Git 常用命令大全

    一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态  git commit 提交  git branch -a 查看所有的分支 git branch ...

  9. git常用命令3

    一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态git commit 提交git branch -a 查看所有的分支git branch -r 查看 ...

  10. Git 常用命令速查表(图文+表格)【转】

    转自:http://www.jb51.net/article/55442.htm 一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git comm ...

随机推荐

  1. UWP ManipulationStarted 移动图片或控件不要滑出父容器的判断

    假设自定义一个用户控件用以在父容器Grid里拖动/移动: <UserControl x:Class="App6.Pic" xmlns="http://schemas ...

  2. BigTable-列族存储

    BigTable 其实就是 Google 设计的分布式结构化数据表. Bigtable 的设计动机: 需要存储的数据种类繁多,包括URL.网页内容.用户的个性化设置在内的数据都是Google需要经常处 ...

  3. 学Shiro完结版-2

    第四章 INI配置--<跟我学Shiro> 之前章节我们已经接触过一些INI配置规则了,如果大家使用过如Spring之类的IoC/DI容器的话,Shiro提供的INI配置也是非常类似的,即 ...

  4. Spring Cloud认知学习(三):网关Zuul、config使用

    目录 zuul 作用: 简单示例: 0.创建模块 1.导入依赖: 2.主程序增加注解: 3.配置application.yml: 4.测试 配置语法: 路由 补充: 上一篇介绍一个新的组件Hystri ...

  5. 新型冠状病毒全国疫情API接口

    一.新浪提供的接口地址:https://interface.sina.cn/news/wap/fymap2020_data.d.json 二.163提供的接口地址:官方展示: https://news ...

  6. Linux基础:从命令行管理文件系统权限

  7. Medjed pg walkthrough Intermediate window

    nmap nmap -p- -A -sS -T4 192.168.219.127 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-22 01 ...

  8. ctfshow--web7 sql注入空格过滤

    ?id=10//union//select//1,database(),3//%23查看库名 查看表名 -1/**/union/**/select/**/1,(select/**/group_conc ...

  9. [文件格式/数据存储] Parquet:开源、高效的列式存储文件格式协议

    序:缘起 => 用 java 读取 parquet 文件 生产环境有设备出重大事故,又因一关键功能无法使用,亟需将生产环境的原始MQTT报文(以 parquet 文件格式 + zstd 压缩格式 ...

  10. 浅析IPV6单栈的优缺点

    本文分享自天翼云开发者社区<浅析IPV6单栈的优缺点>,作者:赵****越 IPv6单栈是一种仅使用IPv6协议栈的方案,与IPv4单栈相比,它具有更大的地址空间.更高的安全性和更好的隐私 ...