git 版本控制系统
本地工作区 add 暂存区 commit(每一次commit都会产生一个新的版本) 本地仓库 push 远程仓库
git代码托管平台
1、第一次使用git的时候需要执行1-4步,否则直接跳到第五步。/
执行 `git config --global user.name [用户名,个人空间地址]`
2、执行 git config --global user.email [绑定的邮箱]
3、配置密钥对(公钥和私钥),执行ssh-keygen
, 一路回车,就会在c/users/[电脑用户名]/.ssh
目录下生成公钥和私钥,这两个文件千万不要动!!!
4、把公钥复制到线上,在个人设置安全设置里的SSH公钥的位置
5、如果是新创建一个仓库,就执行5-7步,否则直接跳到第八步。初始化一个本地仓库
在本地项目位置执行`git init` ,在目录里回多出一个默认隐藏的 .git 目录,这个目录不要动!!!
git仓库不能嵌套,一个本地仓库对应一个远程仓库
6、创建一个远程仓库
登录gitee,新建公开仓库,其他的选项都不要勾
7、关联本地仓库和远程仓库
`git remote add origin [线上仓库的ssh地址]`
如果在执行这句话的时候报错:`fatal: remote origin already exists.` 那么就执行 `git remote rm origin`,再重新add
8、把本地代码添加到暂存区,git add -A
9、把暂存区的代码提交到本地版本库 git commit -m '[说明这一次提交做的事情]'
10、把本地版本库推送到线上 git push origin master
,在第一次提交的时候需要输入 yes
前端分支
master 分支
发布分支,主分支,当前版本需求开发完成后合并,不允许在master分支上commit。
dev 分支
开发分支,基于master分支检出。
- feature 分支
功能分支,基于dev分支检出,新版本需求开发。
- release 分支
预发布分支,所有需求合并到dev分支后,于dev分支检出,在这个分支上进行发布前的测试和bug修改
- hotfix 分支
热修复分支,基于master分支检出,用于线上bug的修复,修复完成后合并到master分支
git协作命令
1)先克隆线上仓库
git clone [线上仓库]
2)创建分支
git branch <new-branch> // 新建分支
git checkout -b test // 创建test分支, 并切换到test分支
git checkout -b dev origin/dev // 创建基于远程的dev分支, 并切换到dev分支
git branch --track <new> <remote> // 创建新分支跟踪远程分支
3)新建文件,添加到暂存区
git add . // ( . 代表有未推送的分支)
4)添加到本地仓库
git commit -m "feat:添加了新功能"
git commit -a // 打开bash编辑器查看编辑文件, 然后填写更改信息
5)在推送到原程分支
git push origin dev
6)拉取远程代码
git pull origin dev
git pull
- 在git pull的时候,如果遇到冲突。会存在一个MERGING状态 这个命令尽量不要使用
- 解决办法使用版本回退命名 没有commit之前,不能使用此命令
git reset --hard head
7)合并分支
git checkout master //切换分支
git merge dev //合并dev分支到master
git merge // 命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。
8) 推送代码至远程分支
git push origin master //这样远程仓库就有了
$ 执行git merge --abort
命令回到解决冲突之前的状态。
9)如果说clone 项目要输入密码,这是http方式(为安全考虑)
描述: userName : 密码 @链接
描述: userName : 密码 @链接
git clone http://zhangxiang:123456789@192.168.1.104:8300/backfunteamplus/front-website-pc.git
9) 推送本地标签
git push --tags // 推送本地标签
10)删除本地分支
git branch -D 分支名
11)删除远程分支
git push origin --delete 分支名
12)新的合并分支 ,保留提交日志
git merge --no-ff feature // --no-ff 保留feature分支的commit log
13) 回退版本
git reset --hard 版本号 // 回退到指定版本
14) 撤销
git rebase --abort // 执行之后,本地内容会回到提交之间的状态,也就是回到以前提交但没有pull是的状态,简单来说就是撤销rebase。
git merge --abort // 命令回到解决冲突之前的状态
git revert <commit> // 撤销提交
Tag 操作
git tag <tag-name> // 给当前分支打标签
git push --tags
FAQ
通过命令直接修改远程地址
- 进入git_test根目录
- git remote -v 查看所有远程仓库, git remote xxx 查看指定远程仓库地址
- git remote set-url origin http://192.168.100.235:9797/john/git_test.git
git 遇到 fatal: refusing to merge unrelated histories
git pull 的时候遇到这种问题,就是远程仓库跟本地仓库是两个独立的仓库
## 解决办法
git pull origin master --allow-unrelated-histories
Git 对已经加入版本控制的文件,修改后希望不被提交办法
- 关于.gitignore 和 excludes
- 这两个文件的只针对尚未提交到配置库的文件才起作用。而对于已经提交的文件是不起作用的。
由此可见,这两个文件的初衷是用于排除不希望上传入库的文件。像编译产生的临时文件等。
- 这两个文件的只针对尚未提交到配置库的文件才起作用。而对于已经提交的文件是不起作用的。
- 个人设置文件不入库
- 从库上取代码后,在自己本地都要执行一下下面的这个命令。这样,以后,你这个文件的修改,git 都会帮你忽略掉。 ```json // 从库上取代码后,在自己本地都要执行一下下面的这个命令。 // 这样,以后,你这个文件的修改,git 都会帮你忽略掉。 git update-index —assume-unchanged FILENAME
// 你希望你的修改要提交入库, 修改一下 这个文件的标志位 git update-index —no-assume-unchanged FILENAME
```
附录:常见git命令
git status 查看本地仓库状态
git log 查看提交日志,在commit关键字后面的随机字符串就是版本号
- git reset —hard [版本号]
git clone [仓库地址] 把线上仓库克隆到本地
git diff [文件名] 查看文件修改
常见命令速查表
常见linux命令
`cd [目录名称]` 进入目录
`touch [文件名]` 新建文件
`ls` 查看当前目录下的所有文件和文件夹
`rm [文件名]` 删除一个文件