介绍
- 远端(远程仓库):拉取代码时的源仓库,一般本地仓库代码要和远端同步,保持一致
- 本地仓库:本地开发完使用
git commit
命令会将代码提交到本地仓库 - 暂存区:本地开发时使用
git add
命令会将代码提交到暂存区 - 工作区:本地开发时修改代码的文件
起步
1、配置账号
// 用户名
git config --global user.name <name>
// 邮箱
git config --global user.email <email>
2、配置ssh
// 1、生成ssh公钥
ssh-keygen -t rsa
// 2、复制到粘贴板
cat ~/.ssh/id_rsa.pub | clip # Windows
cat ~/.ssh/id_rsa.pub | pbcopy # MacOS
// 3、在github/gitee/公司私有代码库中添加配置并将复制的ssh公钥粘贴进去
3、使用git管理项目
在项目根目录使用git init
进行初始化
常用命令
- 1、克隆代码库到本地:
git clone
- 2、更新本地代码:
git pull
,等同于git fetch
+git merge
git pull
和git fetch
的效果都是本地代码同步远端更改,区别是:
git pull
拉取远端最新代码后会自动将新代码合入到本地仓库git fetch
拉取远端最新代码后不会自动合入,要合入需要手动使用 git merge
- 3、本地做了修改后,将修改提交到暂存区:git add
git add [file1] [file2]
:提交单个或多个文件变更
git add .
:提交所有文件
git add -u
:只提交变更文件,不提交新增文件
- 4、将暂存区的文件提交到本地仓库:
git commit -m "msg"
- 5、查看当前分支的变更:
git status
- 6、提交代码到远端:
git push origin <branch>
- 7、如果代码无法提交到远端,查看当前本地关联的远程仓库:
git remote -v
- 8、如果当前没有关联远程仓库,关联远程仓库:
git add remote origin <代码库>
- 9、大部分开发模式是分支开发分支发布,发布完成分支合回主干,这时就不应该将代码直接推到master
// 1、查看当前代码库的所有分支,包括本地和远端
git branch -a
// 2、本地有分支直接切换过去
git checkout <branch>
// 3、本地没有分支创建并切换过去
git checkout -b <branch>
- 10、分支切换过去,想要同步之前其他分支的更改
// 1、多条变更,直接merge目标分支
git merge <branch>
// 2、单条变更
// 先切换到目标分支,查看提交记录
git checkout <branch>
git log // 查看提交历史
// 3、找到对应commitID复制,切换到要提交到的分支
git cherry-pick <commitID>
- 11、解决冲突(重点):
git reset
多人协作中最重要的是解决冲突,主要是2个命令
git reset --hard
和git reset --soft
git reset [--mixed]
:默认,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。git reset --hard
:撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交git reset --soft
:回退到某个版本
git reset [--hard|--soft]
的参数:
- HEAD^:回退到上一个版本
- HEAD~n:回退到前N个版本
- commitID:回退到指定commitID的版本
2022-12-26更新
今天遇到个源码交付的场景,使用到了一个命令,可能比较小众,记录一下
- 1、查看当前代码库关联远程仓库的情况:git remote -v
- 2、取消远程关联:git remote rm <远端名称>
- 3、删除项目.git文件:rm -rf .git