美文网首页
15分钟Git

15分钟Git

作者: 小学2年级 | 来源:发表于2018-08-17 15:46 被阅读0次

Git

image.png
  1. 工作区
  2. 暂存区(Stage)
  3. 分支

工作区 --add--> 暂存区 --commit--> 分支

git中用HEAD标识当前版本的最新的commitId。

合并分支

将test分支的更新提交到develop上的过程叫做合并分支,即是将test合并到develop上。

git checkout develop  # 切换到开发分支
git merge test   # test分支合并入develop分支

注意:合并分支是在本地执行,就是说要合并的两个分支都在本地才能合并,所以在合并时,先fetch下

获取远程分支

比如远程分支 origin/test_1_0_0 , 要拉取到本地:

git checkout -b test_1_0_0 origin/test_1_0_0

撤销修改

从工作区到暂存区,到版本分支,再到远程分支。不同阶段的撤回,分为以下几个场景。

场景1 工作区改乱了,撤销工作区的修改

git checkout -- filename

这时候,有2中情况,

  1. stage区没有修改,即没有add, 那么会使用分支上的文件覆盖工作区的文件,即用上次commit的覆盖工作区。
  2. 当前的修改之前还有修改,并且已经add,那么撤回到stage中的修改,即用上次的add

场景2 工作区改乱了并且提交到stage

其实是将stage中的修改撤回,效果就是修改只有工作区有,stage中没有了。
简称unstage

git reset HEAD filename

然后回到了场景1

场景3 已经commit,没有push到远程分支

git reset --hard HEAD^  // 上1次
git reset --hard HEAD^^ // 上2次
git reset --hard commitId // 回到commit

当然,reset不仅可以回到过去,也可以重返未来。

  • git log : 看提交记录
  • git reflog: 看git的操作记录, 如果reset到过去的版本,在git log中找不不到未来的版本,可以使用这个命令来找

场景4 已经commit并且push

git pull // 和远程一致
git revert commitId -m 1 // 这个是revert merge的
git push
git pull  // 保持和远程一致
git revert ${commmitId} // 干掉的commitId,取消该commitId的修改
git push
git log -3 // 验证一下,revert是不会删除git log的

如果你已经push很多次。revert要按照commitId倒叙,逐个revert。否则会导致冲突。因为revert commitId是仅仅回退当次的修改。

git revert develop~3..   // 看着奇怪吧, revert三次,按照commitId倒序, 但是要写三次commit log, 因为会立即commit,所以每次都要写commit log
// ~~~~~~~ 分割线 ~~~~~~~~
git revert --no-commit develop~3 // 不会立即提交
git status
git add -A
git commit -m "your message"
git push

git reset会清除git log, 回到过去后,就无法再回到未来。

删除文件

git rm filename

Githup和公司的Gitlab并存

1. 生成秘钥

# 生成秘钥对, 使用githup的用户名,并指定秘钥文件
ssh-keygen -t rsa -f ~/.ssh/id_rsa.githup -C "xxx@163.com"
# 生成秘钥对, 使用公司gitlab的用户名,并指定秘钥文件
ssh-keygen -t rsa -f ~/.ssh/id_rsa.githup -C "xxx@xx.com"

2. ssh-add

ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa.githup

3. config

# githup
Host home
Hostname github.com
IdentityFile ~/.ssh/id_rsa.githup
User si_kaijian@163.com
Host work
Hostname gitlab.xxx.com
IdentityFile ~/.ssh/id_rsa
User xxxx@xx.cn

配置gitlab和githup

记得在gitlab和githup上添加public key.

QA

incorrect committer email,committer email MUST be gitlab account

git config user.email xxxx@x.cn
git commit --amend --reset-author
cd githup_project_dir/
git config user.name "grade2"
git config user.email "grade2@163.com" 
cd company_project_dir/
git config user.name "xxxxx"

check源代的tag

# 查看所有的tag
git tag
# 从tag check出一个分支
git checkout -b branchName tagName

相关文章

网友评论

      本文标题:15分钟Git

      本文链接:https://www.haomeiwen.com/subject/xpctiftx.html