1. git 基础
1.1 git的基础操作
命令git add 把文件添加到仓库
命令git commit 把文件提交到仓库
命令git pull 把远程仓库拉取文件
命令git push 把文件提交到远程仓库
命令git log 查看git提交日志
如果嫌输出信息太多, 可以加上–pretty=oneline参数. 另外也可以花式log输出, git lg查看下
1
| git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"
|
命令git diff 查看版本之间文件修改变化
1
| git diff 87b91b6 f9b3075 [--name-only]加上可以只看文件名字
|
1.2 git 标签操作
命令git tag用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a-m “blablabla…”可以指定标签信息;
git tag -s-m “blablabla…”可以用PGP签名标签;
命令git tag可以查看所有标签。
命令git push origin可以推送一个本地标签;
命令git push origin –tags可以推送全部未推送过的本地标签;
命令git tag -d可以删除一个本地标签;
命令git push origin :refs/tags/可以删除一个远程标签。
1.3 git 合并 commit
1 2 3 4 5 6 7 8
| git rebase -i "合并前一个版本号"// 合并前一个 版本号
pick 是用commit squash 是合并前一个
:wq 退出修改合并后的 commit log
git rebase --abort 如果出现失误来撤销
|
2. git 分支
2.1 git 分支修改名字
2.2 git 分支操作
查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d
2.3 查看分支文件
2.4 git 批量删除分支
1 2 3 4 5 6 7 8 9
| git fetch && git branch -r | grep origin/feature | grep -v google | sed 's/origin\///' | xargs -I {} git push origin --delete {}
git branch | grep feature | grep -v google | xargs -I {} git branch -d {}
git push origin -d fix/shushu
|
3. git 回滚
3.1 撤销文件
- git修改文件后, 还没有add, commit. 这时撤销文件修改, 即回到上一版本的内容
命令中的–很重要,没有–,就变成了“创建一个新分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。
3.2 撤销
1
| git commit --amend -m '新的消息'
|
1
| git checkout -- <filename>
|
1
| git reset --hard <hash> (--hard强制内容回归,如果修改内容保留不加此选项)
|
你偶然把application.log加到代码库里了,现在每次你运行应用,Git都会报告在application.log里有未提交的修改。你把 *.log放到了.gitignore文件里,可文件还是在代码库里,你怎样才能让Git“撤销”对这个文件的追踪呢?
1
| git rm --cached application.log
|
3.3 git 回滚版本
在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
- 回滚到上一个版本
- 回滚到任意一个版本
1
| git reset --hard 版本号(通过git log查看)
|
- 如果git回滚到历史版本后, git log只能看历史版本再以前的版本号, 不到未来的版本号怎么办?
git 提供了一个命令git reflog用来记录你的每一次命令
3.4 git回滚文件
1
| git diff a3551 fd681 config.h
|
1
| git reset fd681 config.h
|
1
| git commit -m "revert old file because commmit have a bug"
|
3.5 解决冲突
建议手动解决冲突
命令行可以使用别人或自己的版本
1
| git checkout --theirs/--ours file
|
4. git 配置
4.1 git的配置
- 安装git
- 安装完成后,需要设置自己的用户名和email,在命令行输入:
1 2
| git config --global user.name "levon" git config --global user.email "levonfly@gmail.com"
|
4.2 git和目录绑定
- 在一个目录里可以通过git init命令把这个目录变成Git可以管理的仓库,然后通过以下命令绑定提交的地址
1
| git remote add origin https://github.com/unix2dos/unix2dos.github.io
|
- git clone 地址 就会创建目录和地址绑定
4.3 github fork后更新源仓库的代码
1 2 3 4
| git remote add upstream https://github.com/golang/go git remote -v git fetch upstream git merge upstream/master
|
4.4 git 增加 远程仓库 orgin(名字不一样)
1 2
| git remote add github git@github.com:unix2dos/dht.git git push github master
|
4.5 git全局配置
1
| git config --global core.quotepath false
|
1 2
| git config --global http.proxy 'localhost:8123' git config --global --unset http.proxy
|
git默认不区分文件大小写,导致文件名改了以后git状态没有改变,需要设置一下
1
| git config core.ignorecase false
|
4.6 git lg 完美显示
1
| git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
|
4.7 git 全局忽略
1 2 3 4 5
| cat ~/.config/git/ignore
.idea .vscode .DS_Store
|