git 版本控制系统

本地工作区 add 暂存区 commit(每一次commit都会产生一个新的版本) 本地仓库 push 远程仓库

git代码托管平台

1、第一次使用git的时候需要执行1-4步,否则直接跳到第五步。/

  1. 执行 `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

通过命令直接修改远程地址

  1. 进入git_test根目录
  2. git remote -v 查看所有远程仓库, git remote xxx 查看指定远程仓库地址
  3. 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命令

  1. git status 查看本地仓库状态

  2. git log 查看提交日志,在commit关键字后面的随机字符串就是版本号

    1. git reset —hard [版本号]
  3. git clone [仓库地址] 把线上仓库克隆到本地

  4. git diff [文件名] 查看文件修改

常见命令速查表

image2022-5-10_19-27-18.png

常见linux命令

`cd [目录名称]` 进入目录

`touch [文件名]` 新建文件

`ls`  查看当前目录下的所有文件和文件夹

`rm [文件名]` 删除一个文件