git 常用命令(持续更新)

1. 切换分支

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查看所有分区
$ git branch -a

# 切换分支
$ git checkout master

# 有文件与该分支不一致
$ git checkout master
error: Your local changes to the following files would be overwritten by checkout:
pom.xml
Please commit your changes or stash them before you switch branches.
Aborting

# 先把文件存储,后将存储删除,之后可以切换
$ git stash
$ git stash drop

2. revert 到指定版本

1. 查看日志,时间为从新到旧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ git log pom.xml
commit 512320f7604267e908999f6b2ade01e1f4685f1e
Author: dapeng <dapeng@dtstack.com>
Date: Fri Jun 12 15:09:52 2020 +0800

修改fastjson版本为1.2.70

commit 3b9667e02c2989cc93f7002f09e5d924b02d1718
Author: xuchao <xuchao@dtstack>
Date: Wed May 27 15:12:06 2020 +0800

添加launch main 本地的日志打印
...

2. 找到要回退的版本,并回退

1
git reset 512320f7604267e908999f6b2ade01e1f4685f1e pom.xml

3. 暂存操作

1
2
3
4
5
6
7
git stash        暂存当前修改
git stash apply 恢复最近的一次暂存
git stash pop 恢复暂存并删除暂存记录
git stash list 查看暂存列表
git stash drop 暂存名(例:stash@{0}) 移除某次暂存
git stash clear 清除暂存
git ls-files 查看暂存区中文件信息

4. remote 远程仓库

4.1. 查看

1
2
3
git remote                 # 查看所有仓库名
git remote -v # 查看远程服务器地址和仓库名称
git remote show [仓库名] # 显示某个远程仓库的信息

4.2. 增加、修改

1
2
3
git remote add [仓库名] [仓库地址]          # 增加一个远程仓库
git remote set-url [仓库名] [仓库地址] # 修改一个远程仓库地址
git remote remove [仓库名] # 删除一个远程仓库

5. .gitconfig 配置

5.1. 忽略自动换行

1
2
3
4
5
6
7
8
9
10
# 命令行方式
git config --global core.autocrlf false
git config --global core.filemode false
git config --global core.safecrlf true

# 直接修改文件,C:\Users\[用户名]\.gitconfig
[core]
autocrlf = false
filemode = false
safecrlf = true

5.2. git bash 速度慢

1
2
3
git config --global core.preloadindex true
git config --global core.fscache true
git config --global gc.auto 256

6. 初始化新项目

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
# Git global setup
git config --global user.name "username"
git config --global user.email "email_address@email.com"

# Create a new repository
git clone https://xxx.xxx.xxx.xxx:/project_name.git
cd project_name
git switch -c master
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

# Push an existing folder
cd existing_folder
git init --initial-branch=master
git remote add origin https://xxx.xxx.xxx.xxx:/project_name.git
git add .
git commit -m "Initial commit"
git push -u origin master

# Push an existing Git repository
cd existing_repo
git remote rename origin old-origin
git remote add origin https://xxx.xxx.xxx.xxx:/project_name.git
git push -u origin --all
git push -u origin --tags

7. 将指定 commit 从一个分支转移到另一个分支

将 A 分支的指定 commit 提交到 B 分支

1
2
3
4
5
6
7
8
9
10
11
# 1. 首先切换到 A 分支
git checkout A
# 2. 查询待提交的 3 个 commit-id
git log -3 # 查询到 id 是 A1 A2 A3
# 3. 切换到 B 分支
git checkout B
# 4. 将之提交到 B 分支,可以直接指定
# 也使用 .. 选择两个 commit 区间的所有(不包括第一个),即 (A1..A3],使用 A1^..A3 相当于[A B]
git cherry-pick A1 A2 A3
git cherry-pick A1..A3
# 5. 最后 push 到远程,会重新生成新 id