git 使用_git使用笔记

一、git流程

git的使用场景主要分为三大类,如下图:

00c53d786a329c5b593a2bd36fc370a3.png

场景一:本地无代码,从远程仓库复制代码,在此基础上进行修改

初次使用,配置本地账号和邮箱(非必须)

git config --global user.name "用户名"

git config --global user.email "用户邮箱"

1.从远程仓库上克隆代码到本地工作区

git clone 远程仓库地址

git clone <url>

2.进入克隆代码文件夹,创建本地工作区的个人分支进行代码开发

  • Step 1:初始化一个git仓库,初始化为主分支

git init

  • Step 2:创建个人分支编写代码

git branch 分支名

其他相关命令:

列出所有分支:git branch

列出远程仓库分支:git branch -a

删除分支(无法删除正在使用的分支,删除前先切换):git branch -d 分支名

强制删除指定分支:git branch -D 分支名

(以及删除远程仓库的分支命令,后果很严重,不建议使用)

若存在多个分支,可切换分支

git checkout 分支名

1f38bbaf38fdcaa639a35f4850e38bb6.png
创建和切换分支

其他相关命令:

创建新分支并切换到新分支(进行了创建和切换两步操作):git checkout -b 分支名

3.完成代码修改后,提交到远程仓库

  • Step 1:完成代码修改

此处可使用git diff查看代码前后的改动,Git Bash中执行git diff命令后绿色为新增或改动的内容,红色为删除或改动前的内容

  • Step 2:将工作区改动的代码添加到git暂存区

先配置.gitignore,添加.gitignore过滤的文件,比如添加时过滤Qt的ui文件:git add .

其他相关命令:

忽略.gitignore提交所有文件:git add *

不配置.gitignore情况下git add . / add *两者作用相同

提交文件的修改和删除:git add -u

提交修改、新建:git add .

提交修改、删除、新建:git add -A

此处可以使用git diff --cached比较本地工作区和git暂存区的代码的不同

使用git status查看文件处于本地工作区、暂存区还是本地仓库

c2b9334965cbb27fbe2a8b4b017a1b91.png
查看改动
  • Step 3:将暂存区的代码提交到本地仓库

git commit -m "改动内容描述"

其他相关命令:

对于更新已有文件的代码,add和commit可合并,如:git add -u git commit -m "描述" 合并为 git commit -am "描述"

对于新建文件编写的代码,需要先git add . 再commit

  • Step 4:将本地仓库的代码提交到远程分支

若远程存在该分支,直接提交即可

git push origin 分支名

远程仓库通过合并请求:

b38ac23e02e1e63016e46232b23f37bc.png
远程仓库分支

4e6134d099eb61146466b400c5dabc58.png
提交合并请求

981ee15e96f893d3fb6d22c058ec5302.png
完成合并

若远程仓库没有该分支,则在远程创建分支进行关联,然后再合并请求

git push --set-upstrem origin 远程分支名

6a3b89e08233c5db954ee82c1a0bbc49.png
提交成功,本地分支remote远程同名分支

场景二:本地已有代码,提交到远程仓库

1.进入代码文件夹,初始化一个代码仓库

cd existing_folder

git init

2.关联到远程仓库

git remote add <远程分支名> <url>

随后创建分支,提交修改等操作参见场景一


场景三:本地已有代码,拉取更新远程仓库代码

1.只将代码拉取到本地仓库,用户检查以后决定是否合并到本地个人工作区

将远程仓库的所有代码取回本地:git fetch <远程仓库名>

将远程仓库的特定分支代码取回本地:git fetch <远程仓库名> <分支名>

取回更新后,会返回一个FETCH_HEAD,指向某个分支在远程仓库的最新状态,可以再本地使用git日志查看更新信息

dce93df48e4c3176cf0c2ce1c0c780c2.png
关联远程仓库,查看更新信息

2.取回远程仓库的更新,并和本地工作区合并

git pull 远程仓库名 分支名:本地分支名

若远程分支和本地分支是同一个则冒号后面的内容可以省略

ab213409eb17dd1e1196a6a7a7e76af7.png
拉取远程仓库代码,一个README.md文件

四:git堆栈区的使用

1.git stash:将还不想提交但是已经修改的内容(无论是在个人工作区还是缓存区)先放到堆栈区,后续可以在某个分支上恢复堆栈的内容,遵循先进后出的原则,堆栈的内容可以恢复到任意分支。

相关命令:

git stash:触发保存操作

git stash save: 效果同上,区别是可以加一些注释,如:git stash save "test1"

git stash list: 查看当前stash中的内容

git stash apply <stash index>: 将堆栈中的对应的内容应用到当前目录,适应于多个分支的情况

git stash drop <stash index>: 从堆栈中移除指定名称的stash

git stash clear: 清除堆栈中的所有内容

git stash show: 查看堆栈中的内容和当前分支的差异

git stash show -p: 查看详细的不同

git stash branch: 从最新的stash创建分支,解决堆栈中的内容和当前分支的内容产生冲突的场景,需要手动解决冲突

五:代码revert和reset

两者都具有回滚功能,但是各自的实现方式不一样。正常情况下,git的工作区(work tree)、暂存区(index/Cache)与仓库(reository)HEAD指向的内容保持一致。

1.revert:保留工作目录的改动,把需要回滚的目标文件重新生成一份"commit"放入暂存区,目标节点到回滚前的改动还在。

2.reset:reset分为soft和hard两类,soft功能为撤销提交,工作区的改动还在,hard会回到目标节点并销毁改动。

git reset --soft HEAD~[arg]: 此命令会将HEAD指针指向目标commit节点,改动仓库区、缓存区,但是目标节点以后的改动还存在于工作区。

相关命令:

git reset --soft HEAD^: 撤销最后一次提交

git reset --soft [commit id]: 将HEAD指针指向commit id对应的提交

git reset --hard HEAD~[arg]: 此命令会重置工作区、缓存区的内容与当前分支下HEAD指向的节点一致,目标表节点到回滚前的改动均被销毁。

相关命令:

git reset --hard HEAD^: 重置到上一次提交

git reset --hard [commit id]: 重置到commit id代表的提交

reset --mixed:如果reset不加参数,默认使用mixed参数,清空缓存区使其与仓库区一致,但是保留工作区。

其他命令:

  • git remote

git remote -v: 查看当前关联远程仓库的详细信息

git remote remove <name>: 删除与name的远程仓库的关联

git remote add <url>: 与url所在的远程仓库关联

  • 删除

git rm :删除工作区文件

git rm --cached: 删除缓存区的文件,不删除工作区

  • git commit

-m " ": 增加描述

-a :将已追踪的文件的修改或删除操作提交

-amend: 追加提交但是不追加commit id

附一个讲得很好的git工作原理的视频(中文):

这才是真正的 Git——Git 内部原理揭秘!(freeCodeConf 2019 深圳站)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com
576700dd0958dffae24d9adb91f39e44.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值