全过程(顺序执行一遍印象更深哦)
-
初始化项目或拷贝项目
git init 当前目录初始化git init <dir> 指定文件目录初始化git clone <repo> 拷贝一个仓库项目git clone <repo> <directory> 拷贝一个仓库项目到本地指定目录 -
配置仓库
git config -e 针对当前仓库,-e等同于–edit,使用vim编辑git config -e --global 针对系统上所有仓库- 提交代码前一定要配置用户名和邮箱
-
工作区
?
\leftrightarrow
?暂存区
git status 查看更改信息git diff 比较暂存区和工作区文件不同git add . 添加到暂存区git mv <file_a> <file_b> 移动或重命名暂存区文件git rm --cached <file> 将暂存区文件删除,不影响本地git checkout . 或 git checkout -- <file> 或git restore --staged <file> 将暂存区文件替换工作区文件 -
暂存区
?
\leftrightarrow
?本地仓库
git commit -m <msg> 将暂存区提交到本地仓库git reset --soft <commit_id> 回退版本到暂存区,工作区不受影响git log 查看提交信息
-
工作区
←
\leftarrow
←本地仓库
git reset --hard 恢复上一个状态,所有提交的文件不存在(慎用)git checkout HEAD . 或git checkout HEAD <file> 用本地仓库的文件替换工作区和暂存区的文件- 上面两个的不同是:reset是恢复状态,git-commit的新提交丢失;checkout是替换文件,git-commit的新提交不会丢失
-
本地仓库
?
\leftrightarrow
?远程仓库
git clone <git_url> 克隆到本地仓库git fetch 从远程获取代码库(rebase到其它分支前必须步骤)
git merge 执行完fetch后需要从远程仓库提取数据并尝试合并到当前分支git merge [alias]/[branch] git push 上传远程代码并合并git pull 下载远程代码并合并(等价于git fetch + git merge ) -
工作区
←
\leftarrow
←远程仓库
git branch 分支管理
git branch <name> 创建分支git branch -d <name> 删除分支git checkout <name> 切换分支git checkout -b <name> 创建新分支并切换到新分支git merge 合并分支,解决完冲突后,使用git add 表示冲突已经解决- 切换分支的时候,git会用该分支的最后提交的快照替换工作目录的内容,所以多个分支不需要多个目录
git remote 远程仓库
- 先在github上创建一个仓库
git remote add origin git@xxx.git 推送到远程仓库
- 当连接不同远程仓库的时候,比如github和gitee,就使用
git remote add github xxx 和 git remote add gitee xxx 来区分远程 git push -u [alias] [branch] 推送到alias远程仓库上的branch分支git remote 查看远程仓库git remote -v 查看远程仓库的具体信息
git tag 标签:重要阶段
git tag -a v1.0 创建一个v1.0标签, -a 表示带注解git tag -a v1.0 <commit_id> 为某个提交追加标签git log --decorate 查看标签
git log/blame 历史提交记录
git log 查看历史提交记录
- –oneline 简洁版本
- –author=xxx 指定用户
- –reverse 逆向
- –before={} --after={} 时间
git blame <file> 文件历史修改记录
git stash 保存更改
git stash 将当前工作区和暂存区文件进行保存git stash apply <stash@{idx}> 应用保存的文件,这时暂存区的文件已经与工作区的文件合并
git stash pop 将stash@{0}的文件提交到工作区,并且将第0帧删除git stash show -v <stash@{idx}> 查看保存的内容,-v指查看详细更改
git reset & revert 版本回退
- 现在在哪,HEAD就指向哪
git reset --hard HEAD~1 回退一个版本,重置暂存区和工作区
- –hard 全部修改
- –soft 指修改版本库,将撤销点之后的修改都回退到暂存区
git revert <commit_id> 撤销某次提交,会产生一次revert记录
git cherry-pick 摘取提交
git merge 是合并分支,使用另一分支的所有提交;git cherry-pick 是摘取分支,选取自己需要的提交git cherry-pick <commit_id> 将commit_id的提交应用到当前分支git cherry-pick A..B 转移从A到B的多个提交(不包含A)git cherry-pick A^..B 转移从A到B的多个提交(包含A)- 代码冲突
- 解决代码冲突后,使用
git add 将文件加入暂存区,然后继续执行git cherry-pick --continue git cherry-pick --abort 发生冲突后,放弃合并,回到之前的样子git cherry-pick --quit 发生冲突后,放弃合并,不回到之前的样子
命令补全
- 将git安装包的补全脚本复制到根目录:cp xxx/contrib/completion/git-completion.bash ~/.git-completion.bash
- souce生效
- 测试成功
|