git学习

img

安装配置

1
2
git config --global user.name "YourName"
git config --global user.email "email@xample.com"

创建库

1
git init

添加文件

1
2
git add README.txt file.txt
git commit -m "Message"

查看状态

1
git status

比较差异

1
git diff README.txt

回退版本

查看修改记录

1
2
git log
git log --pretty=oneline #一行显示

回退版本

1
git reset --hard HEAD^

回退两个版本就用

1
2
3
git reset --hard HEAD^^
#或
git reset --hard HEAD~100

返回现在的版本

1
git reset --hard 1094a#commit提交的前几位

git有一个指令用来记录输入过的指令

1
git reflog

撤销修改

1
git restore -- README.txt

没有提交到暂存区,则恢复到修改之前的状态,若已提交到暂存区,则恢复到最初提交到暂存区的版本

撤销暂存区的修改

1
git reset HEAD README.txt

删除文件

1
git rm test.txt

远程库

连接远程库

1
git remote add origin git@server-name:path/repo-name.git

origin是远程库名

将本地库推送到远程

1
git push -u origin master

以后推送

1
git push origin master

查看远程库信息

1
git remote -v

删除远程库

1
git remote rm origin

远程克隆

1
git clone git@server-name:path/repo-name.git

从远程抓取

1
git pull

分支管理

创建分支并切换

1
git checkout -b dev

等价于

1
2
git branch dev
git checkout dev

查看当前所有分支

1
git branch

切换分支

1
git checkout master

合并分支

1
git merge dev

将指定分支合并到当前分支

删除分支

1
git branch -d dev

另一种切换分支的方式

切换未创建的分支

1
git switch -c dev

切换已有分支

1
git switch master

冲突解决

无法合并需要手动解决冲突再合并

1
git log --graph --pretty=oneline --abbrev-commit

可查看分支合并图

禁用Fast forward

1
git merge --no-ff -m "message" dev

合并后的历史有分支

bug分支

使用git stash将工作现场储藏起来,使用git stash list查看工作现场,使用git stash apply恢复现场,使用git stash drop清除记录,或直接使用git stash pop恢复现场+清除记录。

可以多次git stash,恢复时只需要git stash apply stash@{0}形式恢复对应的版本

修复bug后将修改后的代码同步到分支上来可以用

1
git cherry-pick 4c805e2

删除未合并的分支

1
git branch -D dev

标签管理

添加标签

1
2
3
git tag v1.0
git tag v0.9 2782bfc
git tag -a v0.1 -m "version 0.1 released" 1049adb

显示信息

1
git show <tagname>

显示所有标签

1
git tag

删除标签

1
git tag -d v0.1

将标签推送到远程

1
git push origin v0.1

将所有标签推送到远程

1
git push origin --tags

删除远程标签

1
2
git tag -d v0.9
git push origin :refs/tags/v0.9

定义git

忽略特殊文件

在Git的根工作区下存放一个.gitignore的文件,将需要忽略的文件名放进去

强制添加文件

1
git add -f <filename>

github.gitignore模板

添加快捷键

1
git config --global alias.st status

单个仓库下的配置文件放在.git/config下,全局git配置存放在用户名目录中

更新(阅读Pro Git笔记)

VCS:版本控制系统

其他版本控制系统基于差异,git基于快照

三种状态:已修改、已暂存、已提交

1
git config --system --global --local 

分别配置全局、当前用户和当前仓库的配置,就近原则,即针对仓库的覆盖全局的。

1
2
3
git config --list
git config --show-origin user.name
git config <key>

检查某一项的配置

1
2
3
git help <verb>
git <verb> --help
git <verb> -h #简短参考

某一命令的帮助

1
git add <files>
1
git status -s

查看工作区状态

左栏表示暂存区状态,右栏表示工作区状态

.gitignore格式规范

  • 所有空行和以#开头的行会被git忽略
  • 使用glob模式(shell使用的简化的正则表达式)匹配
  • 可以以/开头防止递归
  • /结尾指定目录
  • 模式前加!取反

子目录下的.gitignore仅作用于它所在的目录

查看修改内容

1
2
git diff # 查看尚未暂存的改动
git diff --staged [--cached] #两者为同义词

提交修改

1
2
3
4
5
6
git commit -a -m 'message'
git rm test.txt #删除暂存区和工作目录下的
git rm --cached test.txt #只删除暂存区的
git mv README.md README # 重命名操作
git log -p # 显示每次提交引入的差异
git log --pretty=oneline[short][full][fuller]

撤销操作

1
2
3
git commit -amend #当你忘了添加某个文件,而提交时,使用这个可以让新提交换掉旧提交
git reset HEAD README.md #取消暂存
git checkout -- README.md # 取消修改

远程仓库

1
2
3
4
5
git remote -v #显示读写远程仓库使用的git简写及对应的url
git fetch orgin # 从远程下载数据,不会合并和修改你当前的工作
git remote show # 显示所有远程分支
git remote rename orgin or # 重命名远程仓库
git remote remove origin # 移除远程仓库

标签

1