git 指令

Git 指令

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
列出所有本地分支
git branch
删除分支
git branch -d [branch-name]
例如: git branch -d dev-peppa-fixGFbug
删除远程分支
git push origin -d dev-peppa-fixGFbug
新建一个分支,但依然停留在当前分支
git branch [branch-name]
切换到指定分支,并更新工作区
git checkout [branch-name]

拉代码
git pull

恢复暂存区的指定文件到工作区
git checkout [file]
恢复暂存区的所有文件到工作区
git checkout .

提交工作区自上次commit之后的变化,直接到仓库区
git commit -a
提交暂存区到仓库区
git commit -m [message]
添加指定文件到暂存区
git add [file1] [file2] ...

上传本地指定分支到远程仓库
git push [remote] [branch]

显示有变更的文件
git status :命令显示工作目录和暂存区的状态。它让我们可以查看哪些更改已提交暂存区,哪些尚未提交暂存区,以及 Git 未跟踪哪些文件。

显示当前分支的版本历史
git log
重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
git reset --hard [commit]

提交流程
git commit -a git pull git push
如果git pull 失败 有人和我同时修改了某个文件
git pull origin feature-ep-new --rebase(解决冲突)
git rebase --continue
git commit -a -m
git push


撤销错误操作
git reflog 查看历史变更记录
git reset --hard 40a9jj(hash)

查看log
git log --pretty=oneline --all --graph --abbrev-commit

https://www.cnblogs.com/ellen-mylife/p/12794245.html

https://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html

https://blog.csdn.net/dingyi4815313/article/details/114068189

Fatal: Not possible to fast-forward, aborting - 简书](https://www.jianshu.com/p/5f4772dc60c2)

Git status 查看仓库状态——迹忆客

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
场景1 无干扰提交文件
git diff
//查看这次我都改动了什么,也就是工作区和暂存区的区别
git commit -a -m 'this is a submit'
//从工作区到暂存区到本地仓库
git pull
//远端如果有修改也fetch merge 了
git push

使用场景2 查看一下当前状态,
git branch
git diff
git status
git log
git diff --cached 或 git diff --staged 查看暂存区和上一次commit的区别
git diff HEAD 查看已缓存的与未缓存的与上一次commit所有改动:
//以上查看的都是本地记录的当前的一些情况
git branch -a
git pull git log
//会把其他分支的修改记录也显示,但是不影响当前分支当前工作区本地仓库内容

使用场景3 自己分支commit成功,但是push远端产生冲突
git pull 不能正确fetch + merge
git pull origin feature-ep-new --rebase
// 这时候本地工作区是合并的内容 本地暂存区和仓库呢
// 需要再add commit 才能push还是直接push
// 仓库也是合并的内容了,应该可以直接push了
git push

使用场景4 只想commit一部分文件,且要解决远程冲突
git add a.cpp
git commit -m 'change a'
git commit -a -m 'change all'
git checkout -b newbranch // 这时这个branch应该保存了全部改动

git checkout oribranch
git reflog //查到只改a的commit id
git reset --hard hashid //此时应该只有a改了,其他还是原样
git pull //合并冲突
git push

自己再用的时候把newbranch merge到当前branch


使用场景5 更新并且看看当前branch更新了啥
git pull //拉取自己branch远程的更新和其他branch更新的信息
//其他branch的更新会从git log上显示,但是不会更新本地自己的branch
git log
git diff hashID1 hashID2 //查看两次提交更新了什么

场景六 git diff
git diff //不加参数即默认比较工作区与暂存区
git diff hashID1 hashID2 //查看两次提交更新了什么
git diff HEAD//工作区与最新本地commit的(HEAD)区别
git diff --cached 或 git diff --staged
//显示暂存区(已add但未commit文件)和最后一次commit(HEAD)之间的所有不相同文件的增删改
git diff <分支名1> <分支名2> //比较两个分支上最后 commit 的内容的差别

场景七 checkout 部分文件
git checkout hashID file
git checkout BestBuild_2023-11-08-16 ./filter.cpp
看diff没有区别 但是需要commit 然后push

git–本地分支与远程分支_Andyato0520的博客-CSDN博客

1
2
拉代码
git clone --branch <branchname> --depth=1 romete.git
1
2
3
4
5
6
7
merge 分支,将主分支 dev-video merge到自己的分支dev-video-attlit上:
git checkout dev-video
git pull
git checkout dev-video-attlit
git pull
git merge dev-video
git push
1
2
3
4
5
6
7
8
9
10
11
12
从当前分支master 拉出新分支 dev
$git checkout master
$git pull

$git checkout -b dev 新建分支,此时分支已经clone了master的内容
$git push origin dev 推送到远端
$git pull 想从远端dev拉代码到本地dev
$git branch --set-upstream-to=origin/dev (关联远端?
$git pull

单纯新建分支
git branch dev

git从已有分支拉新分支开发_git 拉取新分支_苦咖啡-bit的博客-CSDN博客

https://www.runoob.com/git/git-branch.html

git 拉取远程指定分支 pull本地不存在的分支 - 哈姆PP - 博客园

1
2
3
反正就是解决不了冲突或者不在分支上
git checkout master
git reset --hard origin/master
1
2
3
4
5
删除git分支 
1 git branch --delete dev-video-attlit 删除本地分支
如果没有完全merge 需要强制删除 git branch -D dev-video-attlit
2 git push origin --delete dev-video-attlit 删除远程分支
3 git branch --delete --remotes dev-video-attllit 删除之间的联系
1
2
3
4
5
6
7
8
9
关于tag
tag是git版本库的一个标记,指向某个commit id标记的 快照记录指针
tag 默认打在最近一次commit上
新建tag
git tag v1.6
指定commit id打tag
git tag v0.9 f52c633(hash
根据某个commit创建本地分支(同样也可以根据tag创建新分支
git checkout 12345678 -b newBranch

Git中tag的用法及作用简介 - 之鹿喵 - 博客园

Git: git tag 使用小结(给发布版本打标记,切换并修改某个历史版本) - 夜行过客 - 博客园

Git配合GPG签名

1
2
3
4
5
6
7
当配置好GPG之后 每次commit
git commit -a -S -m "My commit msg"
如果不想在每次提交时都键入-S标志,则可以告诉 Git 自动签名您的提交:
git config --global commit.gpgsign true
如果忘记了签名并且已经commit
git rebase --exec "git commit --amend --no-edit -n -S" -i hashID
一步步补签再push

https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E5%86%99%E5%8E%86%E5%8F%B2

git 配合beyond compare

mac 安装位置如下

1
git config --global mergetool.bc4.cmd '"/Applications/Beyond Compare.app/Contents/MacOS/bcomp" "$LOCAL" "$REMOTE"'

https://blog.csdn.net/hjp9221/article/details/123561864