前言

Git知识的补充

参考:阮一峰 Git 教程


命令

stash暂存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 保存当前未commit的代码
git stash

# 保存当前未commit的代码并添加备注
git stash save "备注的内容"

# 列出stash的所有记录
git stash list

# 删除stash的所有记录
git stash clear

# 应用最近一次的stash
git stash apply

# 应用最近一次的stash,随后删除该记录
git stash pop

# 删除最近的一次stash
git stash drop

# 暂存未被add 的文件,以及新加的文件,无 -u 不包含。
git stash push --keep-index -u

reset****重置

重置后需要git push -f强制推送

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 并且会改变暂存区
git reset HEAD^
# 倒退指针的同时,不改变暂存区
git reset --soft HEAD^
# 倒退指针的同时,改变工作区
git reset --hard HEAD^

# 如果不指定回滚的位置,那么等同于撤销修改。
# 撤销上一次向暂存区添加的所有文件
$ git reset
# 无任何效果
$ git reset --soft
# 同时撤销暂存区和工作区的修改,
# 回复到上一次提交的状态
$ git reset --hard

revert回滚

1
2
3
4
# 查看日志(对应的commitID)
git log
# 将现有的提交还原,恢复提交的内容,并生成一条还原记录
git revert <commitID>

Sourcetree对应的操作

操作reset重置


Git项目更换地址

1
2
3
4
5
6
7
// 1. 先删除Git url 地址
git remote rm origin
// 再添加远程 Git 仓库
git remote add origin XXX

/* 注意:如果 git remote rm origin 报错,可以在.git文件中config修改
可以查找自己的报错原因 */

git 学习补充

参考:参考笔记 参考笔记

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# 1. git 查看配置信息
git config --global user.name
git config --global user.email
git config --list
git status # 查看状态
git diff # 当前做的那些更新没有暂存?
git diff --cached 或者git diff --staged (1.6.1以上版本) # 有哪些更新已经暂存起来准备好了下次提交
git log --oneline # 查看当前分支地目录,其他分支看不到

# 2. 为常用指令配置别名,在用户目录,创建 .bashrc 文件
touch ~/.bashrc
# .bashrc 文件中可选择如下配置
# 用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
# 用于输出当前目录所有文件及基本信息
alias ll='ls -al'

# 3. 使用 git reset 后,如果想要恢复之前的代码
# 查看所有的 git 已经删除的提交记录,再恢复即可
git reflog

# 4. git 分支处理
# 创建分支
git branch dev
# 创建并切换到该分支
git checkout -b dev
# 删除分支
git branch -d b1 # 删除分支时,需要做各种检查,如果有没有合并的到主分支的代码就会提示
git branch -D b1 # 不做任何检查,强制删除
# 合并分支
git merge 分支名称
# 当前分支地最后一次提交
git branch -v
# 新建一个分支并指定其提交对象(也就是哪个commit)
git branch dev hash值

# 5. 连接远程仓库
git remote add <远端名称> <仓库路径SSH> # 远端名称默认都为 origin
git push -u 是 git push--set-upstream 的缩写
git push -u <远端名称> <分支名称>
git remote # 查看远程仓库
git branch -vv # 查看仓库与远程的连接情况
git clone 地址 文件夹名称 # git clone 可以在后面指定文件夹名称

# 6. git fetch 与 git pull
# git fetch 抓取,就是相当于把线上的记录在log里卖可以看到 origin/master 最新的
# 但是没有和本地的 master 合并
git pull 拉取相当于 git fetch 、git merge origin/master

# 7. git add 与 git commit 合并写法
git commit -a -m "xxx"
git commit # 注释比较多的时候可以使用

# 6. git rm # 相当于 删除文件后执行了 git add 添加到暂存里了
git mv # 同理是修改文件名

# 7. git 撤销暂存提交
git reset HEAD 名称

# 8. git 撤销 commit 另外方式,只能最新的注释写错
git commit --amend

# 9. git tag # 给某一次提交打上标签
git tag -l 'v1.*' # 列出以 v1.开头的所有
9.1 轻量标签
git tag v1.0
git tag v1.0 提交对象哈希
9.2 附注标签
git tag -a v1.0
git tag -a v1.0 提交对象哈希
git tag -a v1.0 提交对象哈希 -m "我的注释信息"
9.3 查看标签
git show tagname
9.4 删除标签
git tag -d v1.0
9.5 检出标签
git checkout -b tagname

# 10. 远程仓库
git remote -v # 显示远程仓库
git branch -u origin/dev # 跟踪一个远程分支
git branch -vv # 查看本地分支与线上分支对应关系
git push origin --delete dev # 删除远程分支

# 注意:git clone 时有其他分支,git branch 没有其他分支,只需要切换即可。

# 11. pull request
# pr 之后仓库可以连接多个远程,然后拉取最新的代码
# 如下:git remote add 新名词 地址

git 撤销 merge 的代码

1
2
3
4
5
6
7
8
9
// 1. 使用 revert
// 当 master 合并 dev 分支后
git revert -m 1 xxx // 取消合并到之前的 master
git revert -m 2 xxx // 取消合并到之前的 dev
// 直接 git revert xx 会报错

// 2. 使用 reset
// 直接使用 git reset --hard xxx 就可以
// 如果在这个 xxx 之前有其他 dev 的 commit 也会一起重置

git 合并远程分支

1
2
3
4
// 直接本地合并远程分支
git merge remotes/origin/xxx
// 或者 master 直接合并远程的 dev
git pull origin dev

git 代理

ssh https 克隆失败,改用 https 并且配置代理

1
2
3
4
5
6
7
8
9
10
11
# 验证配置
git config --global --get http.proxy
git config --global --get https.proxy

# 配置Git使用HTTP代理
git config --global http.proxy 'http://127.0.0.1:7890'
git config --global https.proxy 'http://127.0.0.1:7890'

# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy