git

基础操作

参考:

配置操作

1
2
3
4
5
git config --global user.name "YC-CLT"
git config --global user.email "2480237998@qq.com"
git config --list #查看配置
git config --global --unset user.name
git config --global --unset user.email ## 取消配置

库操作

1
2
3
4
5
6
7
8
9
10
git init 
git add . #添加所有文件
git commit -m "first commit"

git remote add origin https://github.com/YC-CLT/C_SchoolWork.git #添加远程仓库,origin是远程仓库的别名
git remote -v #查看远程仓库
git remote set-url origin <new-url> #修改远程仓库地址
git remote remove origin #删除远程仓库
git remote rename old-name new-name #重命名远程仓库
git remote show origin #查看远程仓库信息

推送操作

1
2
3
4
5
6
7
8
git push -u origin main #-u:这是一个选项,表示设置上游分支(upstream branch)。  
#这是 git push 命令的一个常用选项,用于建立本地分支和远程分支之间的关联关系。
git push --set-upstream origin main #同上

git push origin main #很正常的推送(main->main)
git push origin main:master #将本地的main分支推送到远程的master分支
git push origin --delete main #删除远程的main分支
git push origin --delete test #删除远程的test分支

分支操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
git checkout -b main #创建一个名为main的分支
git checkout main #切换到main分支

git branch #查看分支
git branch -a #查看所有分支
git branch -r #查看远程分支
git branch -d main #删除本地的main分支
git branch -D main #强制删除本地的main分支
git push origin --delete main #删除远程的main分支
git branch -m main new_main #重命名本地的main分支为new_main

git merge main #将main分支合并到当前分支
git merge --abort #取消合并
git merge --no-ff main #禁用快速合并
git merge --squash main #将main分支合并到当前分支,并将其作为一个提交

git rebase main #当main更新时,需要先rebase一下,将本地的main分支合并到当前分支,避免冲突

版本控制

1
2
3
4
5
6
7
8
9
10
11
git checkout <filename> #撤销对文件的修改,作用在工作区(磁盘)
git restore <filename> #同上
git reset <filename> #作用在暂存区,不会改工作区
git restore --staged <filename> #同上
git checkout HEAD <filename> #作用在工作区和暂存区
git reset --soft HEAD~1 #作用在本地库,保留工作区和暂存区的修改
#HEAD 表当前状态,HEAD~1 表上一个版本,HEAD~2 表上上个版本,以此类推
git reset HEAD~1 #作用在本地库和暂存区,保留工作区的修改
git reset --hard HEAD~1 #作用在本地库,工作区和暂存区,全都没了
git revert HEAD #反向提交,这玩意指哪打哪,比如1->2->3用HEAR~1可以直接在不破坏3的情况下,直接删除2
git push -f #强制推送,可能会炸

参考:

团队协作

利用git与github实现团队协作

下面是最简单的工作流:

先搞懂三个分支的概念:main(或master),dev,feature(当然还有hotfix之类的,但是这里咱先不讨论)

  • main分支:用于发布稳定版本的代码
  • dev分支:用于开发新功能的分支
  • feature分支:基于dev分支,用于开发单个新功能的分支

以开发一个名字叫cxk的新功能为例:

1.切到dev分支git checkout dev
2.从dev分支创建一个新的feature分支,这里叫的feature叫cxk:git checkout -b cxk
3.在feature分支上开发新功能
4.当新功能开发完成后,执行

1
2
git add .
git commit -m "feature cxk"

提交到本地先
5.切回dev分支:git checkout dev
6.拉取最新代码:git pull origin dev这一步是为了将远程的dev分支合并到本地的dev分支,以确保本地的dev分支是最新的。
7.合并feature分支:git merge cxk这一步是将feature分支合并到本地dev分支。
8.将dev分支推送到远程:git push origin dev这一步是将本地的dev分支推送到远程的dev分支。
这样就可以了。

参考: