Git常用指令(持续更新)

Git常用指令笔记

第一节 用户

  查看版本。

1
$ git --version

  更新名字和邮箱。

1
2
$ git config --global user.name "**"
$ git config --global user.email "**@**.com"

  查看用户信息。

1
$ git config --global --list

第二节 本地

2.1 init

  创建空仓库或进行初始化(不会覆盖已有配置)。

1
$ git init

2.2 add

  此命令将要提交的文件的信息添加到索引库中(将修改添加到暂存区),以准备为下一次提交分段的内容。 默认情况下,git add命令不会添加忽略的文件。 如果在命令行上显式指定了任何忽略的文件,git add命令都将失败,并显示一个忽略的文件列表。由Git执行的目录递归或文件名遍历所导致的忽略文件将被默认忽略。 git add命令可以用-f(force)选项添加被忽略的文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ git add <path>
# 将所有修改添加到暂存区
$ git add .
# Ant风格添加修改
$ git add *
# 将以Controller结尾的文件的所有修改添加到暂存区
$ git add *Controller
# 将所有以Hello开头的文件的修改添加到暂存区
$ git add Hello*
# 将以Hello开头后面只有一位的文件的修改提交到暂存区
$ git add Hello?
# 添加doc目录及其子目录下所有*.txt文件的内容
$ git add doc/*.txt
# 添加所有git-*.sh脚本内容(不会考虑子目录文件)
$ git add git-*.sh

2.3 commit

  提交更改。

1
$ git commit -m "First Commit"

2.4 push

  推送到远程仓库。

1
$ git push -u origin master

2.5 status

  查看日志。

1
$ git status

2.6 diff

  查看日志详细信息。

1
2
3
4
5
6
7
8
# 尚未缓存的改动
$ git diff
# 查看已缓存的改动
$ git diff --cached
# 查看已缓存的与未缓存的所有改动
$ git diff HEAD
# 显示摘要而非整个diff
$ git diff --stat

2.7 reset

  取消文件的缓存,之后首次执行git commit不会提交前者,再次执行git commit则会提交,用来在文件还未修改成功但需要提交其他内容时跳过此次提交。

1
$ git reset HEAD <file>

2.8 rm

  从工作区移除文件。

1
2
3
4
5
6
7
8
# 要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除,然后提交
$ git rm <file>
# 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
$ git rm -f <file>
# 如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中
$ git rm --cached <file>
# 递归删除,删掉当前目录所有文件
$ git rm –r *

2.9 mv

  移动和重命名文件。

1
2
$ git mv
$ git mv README README.md

第三节 远程

3.1 clone

  克隆项目。

1
$ git clone git@gitlab.**.**

3.2 remote

  远程仓库。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 查看当前远程仓库
$ git remote
# 查看当前远程仓库,列出详细信息
$ git remote -v | --verbose
# 添加一个新的远程仓库
$ git remote add <shortname> <url>
$ git remote add origin git@XXX.XXX.XXX.XXX:XXX
# 修改远程仓库
$ git remote xxx 查看指定远程仓库地址
$ git remote set-url origin 你新的远程仓库地址
# 先删除在添加新的远程仓库
$ git remote rm origin
$ git remote add origin 你的新远程仓库地址

3.3 pull

  更新分支。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 相当于是从远程获取最新版本到本地,不会自动合并
$ git fetch <远程主机名> <远程分支名>:<本地分支名>
# git pull则相当于是从远程获取最新版本并merge到本地
$ git pull <远程主机名> <远程分支名>:<本地分支名>
# 手动建立追踪关系,指定本地master分支追踪origin/next分支
$ git branch --set-upstream master origin/next
# 已有追踪关系,可以忽略远程分支名
$ git pull origin
# 如果当前分支只有一个追踪分支,连远程主机名都可以省略
$ git pull
# 如果合并需要采用rebase模式
$ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>

# 直接push代码到远程新分支
$ git push origin master:remote_new_branch
# 远端即可创建新的分支remote_new_branch,提交本地修改

# 删除远程分支:1.推送空分支 2.delete参数
$ git push origin :branch_a
$ git push origin --delete branch_a

3.4 checkout

  在不同的分支之间切换,注意事项:切换分支的时候,如果当前分支有改动没有提交,是不能切换分支的,需要先把改动的内容提交或者放入缓存区

1
2
3
4
5
6
# 切换到分支
$ git checkout <分支名>
$ git checkout release/v1.0.0

# 创建一个新的分支
$ git checkout -b branch-name

3.5 merge

  合并分支,从当前分支merge feature/login分支的内容,如果有两个人修改了同一个文件的同一行,则会有冲突,可以在IDE工具上先解决当前冲突然后再提交。

1
2
3
4
5
6
7
8
# 合并分支
$ git merge <分支名>
$ git merge feature/login

# 先切换到分支1
$ git checkout branch-name
# 再合并到主分支
$ git merge master

  查看本次修改了哪些内容。

1
$ git diff 

3.4 rebase

  rebase 提供了类似 merge 的合并功能,但相较会更复杂。工作原理可以参考:Rebase 代替合并

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 进入项目目录并使用git checkout命令创建一个名称为rebase-example的新分支:
$ git checkout -b rebase-example
# 标志-b表示新的分支名称

# 创建一个新文件并向该文件添加一些内容,如下所示:
$ echo "welcome to yiibai.com " >> rebase-file.md
# “welcome to yiibai.com ”内容将被添加到rebase-file.md文件中。

# 将新文件添加到工作目录,并将更改与消息(通过使用git commit命令)一起存储到存储库中,如下所示:
git commit . -m "Rebase file added"
# 标志-m用于在提交中添加消息。

# 现在,切换到'master'分支。可以使用git checkout命令获取远程分支(master是分支名称):
$ git checkout master

# 切换到rebase-example分支以提交master分支。
$ git checkout rebase-example

#现在,可以使用git rebase命令将主分支提交到rebase-example分支:
$ git rebase master

3.6 stash

   把当前工作现场“储藏”起来,等以后恢复现场后继续工作。在遇到error: Your local changes to the following files would be overwritten by merge: 异常时,因为从服务器拉取代码和本地代码有冲突,此时可以通过 git stash 暂存工作区,先从服务器拉取代码,之后再恢复。

1
2
3
4
5
6
7
8
9
# 保存工作区
$ git stash
# 拉取代码
$ git pull
# 还原
$ git stash pop

# 查看保存的工作现场
$ git stash list

参考:

🔗 Git教程-易百教程
🔗 Git教程-菜鸟教程