- 设置Git的user name和email
//打开git.exe,输入命令:
$ git config --global user.name "name"
$ git config --global user.email "xxxx@qq.com"
//生成SSH密钥过程:
//查看是否已经有了ssh密钥:cd ~/.ssh
//如果没有密钥则不会有此文件夹,有则备份删除
//生成密钥:
$ ssh-keygen -t rsa -C "xxxx@vchangyi.com"
//按3个回车,密码为空。
Your identification has been saved in /home/tekkub/.ssh/id_rsa.
Your public key has been saved in /home/tekkub/.ssh/id_rsa.pub.
The key fingerprint is:
//最后得到了两个文件:id_rsa和id_rsa.pub
//添加密钥到ssh:
//登陆gitlab, Profile Settings -> SSH Keys -> ADD SSH KEYS ,找到本地的id_rsa.pub文件,复制出里面的内容,添加到 key 内,此时 Title 会自动填上你的邮箱,没有的话手动填写, ADD KEY
- 撤销操作
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file
,就回到了场景1,第二步按场景1操作。
- 回滚
git reset --hard HEAD^ //回到上一个版本
git reset --hard 3628164 //回到指定版本
- git push origin local_branch:remote_branch
说明:local_branch必须为你本地存在的分支,remote_branch为远程分支,如果remote_branch不存在则会自动创建分支。
- 打标签
git tag //列出现有标签
git tag 1.3 //打标签
git push origin --tags //推送本地新增的标签
- 删除远程分支
git push origin --delete branchName
- FETCH_HEAD
是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本。
- commit-id
在每次本地工作完成后,都会做一个git commit 操作来保存当前工作到本地的repo, 此时会产生一个commit-id,这是一个能唯一标识一个版本的序列号。 在使用git push后,这个序列号还会同步到远程仓库。
- git fetch
这将更新git remote 中所有的远程仓库所包含分支的最新commit-id, 将其记录到.git/FETCH_HEAD文件中
// git fetch更新远程仓库的方式如下
git fetch origin master:tmp
//在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
git diff tmp
//来比较本地代码与刚刚从远程下载下来的代码的区别
git merge tmp
//合并temp分支到本地的master分支
git branch -d temp
//如果不想保留temp分支 可以用这步删除
- 查看远程分支
git branch -r
- 查看所有分支,包括本地和远程的
git branch -a
- 什么是集中式和分布式版本控制系统?
集中式就是将整个文件统一放在特定服务器上,工作的时候先要从这个服务器上获取到最新版本,然后再进行自己的编辑修改,完了再提交到此服务器上。所以如果没有网络,就没法工作了。
分布式是每个人电脑上都有完整版本,没有网络也可以工作,可以同事之间交换修改部分,也可以统一设立中央服务器,然后得到每个人修改的记录。
- 什么时候使用 rebase / merge?
假设场景:从 dev 拉出分支 feature-a。那么当 dev 要合并 feature-a 的内容时,使用 git merge feature-a
;反过来当 feature-a 要更新 dev 的内容时,使用 git rebase dev
。使用时主要看两个分支的"主副"关系。
- 如何优雅的使用GIT?
https://juejin.im/post/5a54386af265da3e3b7a6317#heading-0
- git 的shell脚本实例
https://www.jianshu.com/p/d3edcf4e9638