Git&GitHub的使用

目前最强大的版本控制工具

1.目录

工作区->暂存区->本地库

1
2
3
git init
git add
git commit -m "xxxx"

2.命令

1.查看状态

1
git status

2.查看版本历史

1
2
3
4
git log
git log --pretty=oneline
git log --online //哈希
git reflog //指针,推荐

3.回退版本

本质是指针的指向

1.索引值

1
2
git reflog
git reset --hard (哈希值)

2.^(只能往后退)

1
git reset --hard HEAD^

3.~(只能往前进)

1
git reset --hard HEAD~

4.reset命令的三个参数对比

1.–soft

本地库移动指针

2.–mixed

本地库移动指针,重置暂存区

3.–hard

本地库移动指针,重置暂存区和工作区

5删除文件找回

1
2
3
4
5
6
rm xx
git rm filename //删除git暂存区文件
git add xx
git commit -m xx
git reset --hard xxx
git checkout -- test.txt //用版本库的版本替换工作区的版本,即是找回此文件

6.添加到暂存区的文件找回

1
git reset --hard HEAD

7.版本库替换工作区的版本

1
git checkout -- xxx

4.比较文件

1
2
git diff xxx //暂存区比较
git diff HEAD xxx //查看工作区和版本库里面最新版本的区别

5.分支

  • master
  • feature_xxx
  • hot_fix

1.查看所有分支

1
2
git branch -v
git branch

2.创建新分支

1
git branch xxx

3.切换分支

1
2
git checkout xxx
git switch xxx

4.创建并切换分支

1
2
git switch -c xxx
git checkout -b xxx

5.合并分支

1
git merge dev

6.删除分支

1
git branch -d dev

7.解决冲突

自动合并不了,开始手动解决冲突

1
2
3
编辑文件修改合适
git add .
git commit

8.Bug分支

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//如果没有工作完成,提交不了 可以把工作现场存储起来当前处于dev分支
git stash

//接受到一个101bug
git switch master //切换到主分支
git checkout -b issue-101 //创建一个新分支issue-101并且切换
git add .
git commit -m "fix 101 bug"
git switch master
git merge --no-ff -m "merged bug fix 101" issue-101

//回到dev分支干活
git switch dev
git status //干净的
git stash list //查看工作现场存储
git stash apply //恢复不删除stash 需要使用git stash drop删除
git stash pop //恢复并且删除
git stash apply stash@{0} //多次存储恢复指定的stash

//master上的bug在dev分支上也存在
git cherry-pick 4c805e2 把master上的分支4c805e2提交到dev分支中

6.远程库

1.设置远程库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//查看远程库信息
git remote -v
//删除远程库
git remote rm origin
//创建dev
git checkout -b dev origin/dev
//推送到远程dev
git push origin dev
//github为别名
git remote add github git@github.com:michaelliao/learngit.git

git remote add gitee git@gitee.com:liaoxuefeng/learngit.git
git push github master

pull=fetch+merge
//抓取下来,只是抓取下来不会改变工作区
git fetch github master
//合并
git merge github/dev

2.标签

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag <tagname>
git log --pretty=oneline --abbrev-commit //找到历史记录
git tag v0.9 f52c633
//可以指定标签信息;
git tag -a <tagname> -m "blablabla..."
//可以看到标签信息
git show <tagname>
//可以查看所有标签。
git tag

//可以推送一个本地标签;
git push origin <tagname>
//可以推送全部未推送过的本地标签;
git push origin --tags
//可以删除一个本地标签;
git tag -d <tagname>
//可以删除一个远程标签。
git push origin :refs/tags/<tagname>

3.跨团队协作

fork->pull-request

4.gitignore

git忽略的一些文件