git常用指令和vscode使用git(够用版)

688 阅读8分钟

git常用指令和vscode使用git

git简介

git是一个开源的分布式版本控制系统分布式简单来说就是除了远程的项目仓库外,每位协同开发者本地都有一个项目仓库;版本控制指的是git可以帮助我们管理项目的各个版本,任何的增删改只要提交了且没有删除源文件都能回退到指定版本,保证代码不会丢失。

git最常用指令

下面是最常用的git命令,后面有它们的使用场景

  1. git init:新建一个本地仓库。
  2. git config --global user.name "xxx":配置用户名。
  3. git config --global user.email "xx@xx.com":配置用户邮箱。
  4. git status:查看修改文件的状态(看看修改的文件是否暂存,是否提交到本地仓库)。
  5. git add .:将修改从工作区添加进暂存区。
  6. git commit -m "备注":将修改从暂存区添加到本地仓库。
  7. git log:查看提交日志。
  8. git reset --hard 版本id :版本回退,使用git log查找要回退的版本id,然后执行此命令可以回到之前的某个版本。
  9. git branch:查看本地分支。
  10. git branch 分支名:新建一个分支。
  11. git checkout 分支名:切换到某个分支。
  12. git checkout -b 分支名:创建一个新的分支并切换到该分支上。
  13. git merge 分支b:合并分支b的内容到分支a (注意要先切换到要合并的分支a)
  14. git branch -d 分支名:删除分支(只能删除非当前分支,如当前处于分支a,无法删除a,只能删除其他分支)。
  15. git branch -D 分支名:强制删除分支(当该分支还有代码没合并到主分支上时,git会阻止你删除,此时如果确定该分支无用时可以使用该命令强制删除)。
  16. git remote add origin 远程仓库地址:绑定远程仓库,并起名为origin。 最好是origin,这是约定俗成的规范
  17. git remote:查看连接上的远程仓库。
  18. git push origin 远程分支名a:本地分支名b:推送本地分支b到远程仓库分支a。当两个分支名相同时,可以采用简写形式。如git push origin master:master 直接写成 git push origin master
  19. git push --set-upstream origin master:master:git push的更具体写法,指的是推送的同时,将本地的master分支和远程仓库的master分支关联起来,下次使用git push命令时,git知道绑定关系,直接写git push即可
  20. git branch -vv:查看本地分支和远程分支的对应关系。
  21. git clone 路径:远程已有仓库,可以直接克隆远程仓库到本地。(在实际开发中,很多情况下都是远程现有仓库,此命令用于直接克隆远程仓库到本地,一般情况下,该命令在整个项目的开发过程中每位开发者只用一次。)
  22. git fetch origin 分支名:将远程仓库的更新拉取到本地,不会合并。如果不指定远端分支名,则抓取相关联的分支,如果没有关联,则抓取所有分支。
  23. git pull origin 分支名:将远程仓库的更新拉取到本地,并且合并。(相当于fetch + merge操作),当本地分支和远程分支建立起关联关系时可以直接用git pull。

git分支

git一个分支代表一条独立的开发线。每个分支之间互相不受影响,对减少冲突起到一定的作用。每次操作只能在一个分支上执行,默认是master分支,假如新建了一个dev分支,并切换到dev分支上,新建一个文件a.txt且提交,切换回master分支后,不会有a.txt。使用git log可以帮助你清晰地看到所有分支的提交记录

git本地仓库工作流程

graph TD
工作区 --> 暂存区 --> 本地仓库

(1)对文件的操作要真正保存到本地仓库,需要经历上面的流程,使用git status可以实时查看修改文件的状态。
(2)本地新建文件或者修改已有文件时,首先会存在于工作区,此时新建的文件是unstracked未跟踪状态,未跟踪状态的文件不受git管理;修改的文件是unstaged未暂存状态;都需要用git add .将其添加到暂存区
(3)添加进暂存区后,还没真正进入到本地仓库,此时文件状态是为not commits yet,此时需要用git commit -m "你的备注"将其添加到本地仓库
(4)经过上面的简单操作就能将你改动的部分保存到本地仓库了。

git远程仓库工作流程

graph TD
本地仓库 --> 远程仓库

常用的代码托管服务有:github(国外),gitee(国内)。
远程仓库保存着项目的代码和其他文件,保持着最新版本。在实际开发中,我们很可能不是项目的最初开发者,因此我们要拉取远程仓库的代码,存到本地仓库,然后继续我们的开发。

  1. 身份认证:当你要拉取远程仓库的代码或者向远程仓库提交新写的代码时,一开始要验证身份,保障仓库的数据安全。
  • 直接用账号密码验证(少用)
  • 使用SSH公钥验证(常用)
    • 生成SSH公钥:ssh-keygen -t rsa 后续的输入不用管,一直回车;
    • 获取SSH密钥:cat ~/.ssh/id_rsa.pub 就可以获取到生成的公钥了;
    • 在gitee上的安全设置-> SSH公钥添加该公钥即可。使用SSH公钥验证以后克隆仓库的链接要用SSH链接,不然的话要输入用户名和密码。
  1. 远程仓库的相关操作(模拟实际开发流程)

在实际开发中,跟远程仓库的交互一般用以下指令即可

  1. 首次拉取远程仓库,执行克隆操作:git clone SSH链接;SSH链接在gitee或github上复制。
  2. 在桌面新建一个文件夹,使用git init:初始化本地仓库。
  3. 书写本地代码,本地如有切换分支等操作参照上面的常见指令。若没有,则在写完之后执行git add .,git commit -m "备注" 提交本地修改到本地仓库。
  4. git pull origin 远程分支名:本地分支名:拉取别人写的代码并合并。(提交之前先拉取,是一个很重要的习惯。)
  5. 若第(4)步出现冲突,请见下面的git冲突板块
  6. 本地仓库已是最新,不要忘记更新远程仓库,将修改的部分推动到远程仓库。执行git push --set-upstream origin 远程分支名:本地分支名, 提交的同时将本地分支和远程分支相关联,以后执行命令就可以采用缩写形式了。
  7. 提交成功!
  8. 以后书写代码时,无需再执行git clone,直接在本地修改,然后执行add和commit,而且第(6)步已经实现远程分支和本地分支关联,以后执行拉取和推送时直接用 git pull,git push即可,无需写完整命令,非常方便。使用git log也可以查看该仓库的提交情况。

git冲突

(1)产生原因:协同开发者在同一个文件的同一行修改了,git不知道要保存谁的修改,就会有冲突提醒。
(2)解决办法:在git给出的提醒中找到有冲突问题的文件,人工判断要留下谁的操作,甚至可以都抛弃,直接写新的逻辑代码。然后使用git add .,git commit的命令提交到本地仓库解决了冲突之后记得使用git push提交到远程仓库,保持项目代码最新。

ae472671cafd77f7fdeef3377ff248a.png

如上图,HEAD表示当前分支,上图说明当前分支中要将内容修改为2222,而dev分支中有人要修改它为1111,git不知道要保留谁的操作,于是产生冲突,会在命令行给出冲突文件,让开发者自行判断决定。

VScode使用git

  1. 一般来说,实际开发的仓库在远程已有,我们直接选择克隆

d10169d09f22dcd9e0718eaad8bd71c.png

c5045f79e49484895101f187df1e0eb.png

  1. 输入远程仓库地址

2694e7266deb18987706b272ee7fdc6.png

  1. 本地已有远程仓库内的所有文件

image.png

  1. 新建一个文件a.js,模拟代码修改

image.png

  1. 左侧显示一个修改

image.png

  1. 点击图片左侧中的第3个按钮进入源代码管理,加号代表暂存修改,即git add .

image.png

  1. 在输入框输入备注信息,并点击勾勾提交到本地仓库,相当于git commit -m "输入框的内容"

image.png

  1. 提交代码到远程仓库,先拉取后推送

image.png

  1. 在左下角有远程仓库的信息,当前处于master分支,可以选择你要推送给哪个远程分支,点击master,在输入框输入,如果想推送给master分支,可以跳过这一步。

image.png

image.png

  1. 提交成功

image.png