GIT

Git属于分布式版本控制系统

批注 2019-09-09 193656

整体流程

2020318102131

初始化仓库

git init

配置信息

git config --global user.name my
git config --global user.email 715711877@qq.com

配置默认编辑器

git config core.editor vim

查看状态

git status

工作流

批注 2020-03-18 103355

  • 把文件的修改添加到暂存区
git add .
  • 把暂存区的修改提交到当前分支,提交之后暂存区就被清空了
git commit
  • 使用当前分支上的修改覆盖暂存区
git reset -- files
  • 将某个分支的操作添加到某个分支
git rebase branch1 branch2 # 1 添加的分支 2 被添加的分支
  • 使用暂存区的修改覆盖工作目录
git checkout -- file
  • 直接把所有文件的修改添加到暂存区然后执行提交
git commit -a
  • 取出最后一次修改,可以用来进行回滚操作
git checkout HEAD -- files
  • 将一些提交添加到当前分支
git cheery-pick hash1 hash2 hash3...
  • 交互式rebase
git rebase -i HEAD~4 # 通过UI界面的方式调整提交记录顺序

查看提交日志

git log

回滚到某一次提交

git reset --hard 33ea7586bfe2d14e9ddbe9b07c5653159541338c # 通过将HEAD指向某一提交记录实现
git revert ... # 通过创建一个新提交记录实现

添加远程仓库

$ git remote add origin https://github.com/cjp715711877/test.git

推送到远程仓库

$ git push -u origin master

克隆仓库

$ git clone https://github.com/996icu/996.ICU.git

分支

HEAD 指针指向当前分支指针

批注 2020-03-18 103706

  • 新建分支

新建一个指针指向时间线的最后一个节点,并让 HEAD 指针指向新分支

批注 2020-03-18 103810

git branch x
  • 切换分支
git checkout x

每次提交只会让当前分支指针向前移动,而其它分支指针不会移动

批注 2020-03-18 103915

  • 分支合并

合并分支也只需要改变指针即可

批注 2020-03-18 103957

git merge x

冲突

两个分支都对同一个文件的同一行进行了修改,在分支合并时就会产生冲突

Git 会使用 <<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容,只需要把不同分支中冲突部分修改成一样就能解决冲突

Fast forward

快进式合并"(fast-farward merge),会直接将 master 分支指向合并的分支,这种模式下进行分支合并会丢失分支信息,也就不能在分支历史上看出分支信息

储藏(Stashing)

在一个分支上操作之后,如果还没有将修改提交到分支上,此时进行切换分支,那么另一个分支上也能看到新的修改。这是因为所有分支都共用一个工作区的缘故

使用

git stash

这个命令将当前分支的修改储藏起来,此时工作区就是干净的,可以切换到其他分支

推送到远程仓库

  • 生成ssh密钥
ssh-keygen -t rsa
  • 添加远程仓库地址
git remote add origin git@github.com:0xcaffebabe/repo1.git
  • 推送
git push -u origin master

搭建Git私服

  • 安装git
  • 初始化服务器本地仓库
git --bare init /home/git/first
  • 设置远程仓库地址
git remote add origin ssh://root@my-pc/home/git/first
  • 推送
git push --set-upstream origin master

从远程仓库下载源码

git clone ssh://root@my-pc/home/git/first

一些坑

  • 检出错误
ssh: connect to host xxx.com port 22: Connection refused

确定是否有权限

  • 切换邮箱提交错误

新的账户没有提交权限,然而你在新的账户上有了一次提交,此时代码推不上去,切换回原邮箱依然提示推不上去

此时,需要回滚撤销此次提交,切回有权限的邮箱重新提交并推送

  • 切分支错误

拉取新分支时,一定要注意检查父分支

  • 提前合并到master

如果相关代码没有准备好,提前将代码合并到master,会引发错误

  • merge冲突

此时一定要慎之又慎,来处理冲突

  • 一个分支干多件事

如果一个分支干多件事,测试代码没有覆盖,很容易出bug

  • 及时合并到master

开发周期较长时,要及时合并到master,避免最后大量冲突

Pull Request 与 Merge Request

这两种方式本质上是一样的,都是利用了git merge来合并两个分支。

results matching " "

No results matching " "

results matching " "

No results matching " "