git的使用,本地代码提交远程仓库

1. 安装git

地址: https://git-scm.com/about
右键鼠标会显示这两个选项,一般使用 Git Bash Here
image


***

2. 拉取项目代码

鼠标右键选中 Git Bash Here(以下命令均在Bash中操作)
输入 git clone xxx xxx表示项目的路径


***

3. 配置SSH公钥以及私钥

原因: 如果不配置,每一次使用 git pull or git push 都需要输入账号和密码
配置方法:

  1. 查看是否已经生成公钥和私钥
    cd ~/.ssh进入相应目录 一般情况下 密钥存放在 ~/.ssh目录下
    ls 打印该目录文件
    如果显示 id_rsa、 known_hosts、 id_rsa.pub 等文件,表示已经生成过SSH密钥
    其中 id_rsa.pub 即使公钥文件,id_rsa 是与之对应的私钥文件
    如果没有显示上述文件,继续往下执行
  2. 通过运行 ssh-keygen 程序来创建它们
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com" rsa是密钥类型,4096是密钥字节数
    会有如下提示:
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/xxx/.ssh/id_rsa):	// 表示密钥的存储地址,回车
Created directory '/c/Users/xxx/.ssh'.
Enter passphrase (empty for no passphrase):		// 输入一次密码(最好直接回车,否则pull/push操作仍然需要输入密码)
Enter same passphrase again:					// 再次输入密码
Your identification has been saved in /c/Users/xxx/.ssh/id_rsa.
Your public key has been saved in /c/Users/xxx/.ssh/id_rsa.pub.

如果已经存在,会提示 Overwrite(y/n)? 选择y即可重置
通过以上操作即可生成公钥和私钥
3. 查看公钥: cat ~/.ssh/id_rsa.pub
4. 将公钥添加到远程托管平台(github)
/c/Users/xxx/.ssh/id_rsa.pub 内容复制到 github > 个人头像 > Settings > SSH Keys > 粘贴公钥,并点击 Add key 按钮
5. 最后使用 git clone sshUrl 尝试一下


***

git的使用

  1. 针对相应bug编号创建 feature-xxx (基于master创建)分支 (有 create branch 按钮)
  2. 针对个人 创建 name-xxx分支 (基于上一步创建的feature分支)
  3. 本地 git pull 更新远程状态到本地
  4. 本地 git branch -a 查看所有分支
  5. 本地 git checkout name-xxx 切换到属于当前bug的个人分支上
  6. 本地 git status 查看项目的修改情况 (vs code 左边目录栏第三个 Source Control 也可以查看,但是需要先 git status 然后刷新一下(点击 Refresh))
  7. 本地 git add . 添加内容到本地缓存(此处的 .表示当前目录下的所有需要add的文件,因此可以add指定目录文件)
  8. 本地 git commit -m "bug简介" 提交内容到本地缓存(此时还没有上传到远程仓库)
  9. 本地 git push 即是将本地提交的内容上传到远程仓库中
  10. 远程仓库中查看,并进行合代码操作 (点击 create merge request 查看changes,并合到指定分支上)

***

git不同文件状态表示的含义

  1. 正常的: 绿色的对号
  2. 被修改过的: 红色感叹号
  3. 新添加的: 蓝色的加号
  4. 未受控的( 无版本控制的): 蓝色的问号
  5. 忽略不受控的 :灰色的减号
  6. 删除的:红色的x号
  7. 有冲突的: 黄色的感叹号

***

git 避免add不需要的文件

目的: 比如 node_modules、dist等文件我们不想提交
方法: 使用 .gitignore 文件

.DS_Store
node_modules
/dist

# local env files
.env.local
.env.*.local

# Log files
npm-debug.log*
yarn-debug.log*
pnpm-debug.log*
yarn-error.log*

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

注意: .gitignore文件 需要单独先提交一遍push,否则不生效


***

其他

git rm --cached ./xxx 删除缓存中的某某文件(提交push后该文件在远程也会被删除)
所以,对于错误add的文件如何还原,需要考虑


***

分支的操作命令

  • git branch 查看本地分支
    git branch -a 查看本地和远程分支
    git checkout xxx 切换分支
    git switch xxx 切换分支
    git branch xxx 创建分支(本地)
    git checkout -b xxx 创建本地分支,并切换到此分支
    git switch -c xxx 创建+切换分支
    git branch -d xxx 删除分支

  • 推送本地分支local_branch到远程分支 remote_branch并建立关联关系
    git push 远程已有remote_branch分支并且已经关联本地分支local_branch且本地已经切换到local_branch
    git push --set-upstream origin remote_xxx 将本地分支关联到远程分支(这样本地代码才能提交到远程)远程已有分支,但是并未关联本地分支

    git push origin local_xxx:remote_xxx 远程没有分支,本地已经切换到local_xxx分支
    git push origin xxx 推送代码到远程分支
    git push 单纯这样操作不行

  • git push origin :xxx 这个是删除分支

    git push origin --delete xxx 这个也是删除

    git branch -d xxx 也是删除

  • git merge feature-xxx 合并某分支到当前分支
    注意: 在当前分支上创建分支,是能够继承这个分支的代码的(所以要在需要的分支上创建分支)


***

创建分支、关联分支、代码提交

  1. git branch 首先查看分支
  2. git checkout xxx 切换分支(以此分支作为新分支的模板)
  3. git checkout -b xxx 创建本地分支,并切换到此分支
  4. git push --set-upstream origin remote_xxx 将本地分支关联到远程分支(这样本地代码才能提交到远程)远程已有分支,但是并未关联本地分支
  5. git push origin xxx 推送代码到远程分支
  6. git merge feature-xxx 合并某分支到当前分支

参考链接
https://www.jianshu.com/p/e93edea128a3
https://www.cnblogs.com/lz0925/p/10725010.html
https://www.cnblogs.com/zhahuhu/p/11587429.html
https://blog.csdn.net/zhangxingyu126/article/details/79169694
https://git-scm.com/book/zh/v2/服务器上的-Git-生成-SSH-公钥

原文地址:https://www.cnblogs.com/nangezi/p/14710899.html