git教程总结

mac2024-03-20  31

廖雪峰 Git 教程

https://www.liaoxuefeng.com/wiki/896043488029600

基本操作

# 创建项目,进入准备好的空文件夹(项目目录) git init # 提交到暂存区 git add <filename> # 提交到本地版本库 git commit -m '描述信息' # 记录每一次命令 git reflog # 查看状态 git status

回退版本

git reset --hard HEAD^ # HEAD^^ 上两个版本 # HEAD~100 上100个版本 # 退回到指定版本 git reset --hard commit-id

撤销修改

# 撤销修改 git checkout -- 文件名 # 1.如果暂存区没有东西,退回到与最近的一次commit一致 # 2.如果暂存区有东西, 回退到与暂存区一致。 # 撤销暂存区 git reset HEAD 文件 # add后,没有commit的,HEAD最新版本。

删除文件

rm <file> git rm <file> git commit -m "删除了某个文件" # 如果删除文件,版本库里面还有 git checkout -- <file>

关联远程仓库

# 如果本地有个gitlearn仓库,要关联远端 git remote add origin git@...../gitlearn.git # 第一次推送 git push -u origin master # 后续推送 git push origin master # 克隆 git clone

分支管理

git checkout -b dev # 创建分支并切换到新分支 # git branch dev # 创建 # git checkout dev # 切换 # git switch -c dev # 创建 # git switch master # 切换 # 查看当前分支 git branch # 合并分支,合并指定分支到当前分支 git merge dev # 合并分支 并提交一次版本记录 git merge --no-ff -m "merge with no-ff" dev # 删除分支 git branch -d dev

分支 解决冲突

合并分支的时候,两个分支都有新的提交,这时候会冲突 $ git merge feature1 Auto-merging readme.txt CONFLICT (content): Merge conflict in readme.txt Automatic merge failed; fix conflicts and then commit the result. 我们需要手动的更改冲突文件,然后重新提交 冲突文件会如下,一个是当前我们的文件,一个是分支文件内容,自行更改就行。 <<<<<<< HEAD Creating a new branch is quick & simple. ======= Creating a new branch is quick AND simple. >>>>>>> feature1 再提交 $ git add readme.txt $ git commit -m "conflict fixed"

修复bug

修复bug 会创建一个临时分支,修复完毕,切换到主分支合并bug分支。 如果开发分支有正在工作的代码,需要把任务暂停下来 # 储藏 git stash # 查看储藏 git stash list # 删除储藏并回复 git stash pop # git stash apply # git stash apply stash@{0} # 多个的情况下 # git stash drop git checkout master git checkout -b issue-101 git add readme.txt git commit -m "fix bug 101" --> commit-id 4c805e2 git checkout master git merge --no-ff -m "merged bug fix 101" issue-101 git checkout dev git stash pop git branch git cherry-pick 4c805e2 (dev环境下执行,因为dev也会存在这个bug)

为新功能创建分支

git checkout -b feature-vulcan git add vulcan.py git commit -m "add feature vulcan" # 切回dev git checkout dev # 如果一切顺利,则合并分支,并删除feature-vulcan分支,同bug分支一样操作 # 新功能取消,又必须销毁新功能代码 git branch -d feature-vulcan # 删除分支会报错,因为该分支还没有被合并过 git branch -D feature-vulcan # 强制删除

多人协作

https://www.liaoxuefeng.com/wiki/896043488029600/900375748016320 git remote # 查看远程仓库信息 git remote -v # 可以看到拉取和推送的origin信息 # 推送 git push origin master git push origin dev # 拉取 git clone # 然后获取dev分支 git checkout -b dev origin/dev # 如果推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突 # 获取最新的 git pull # 然后在推送,如果又失败,可能是没有指定本地dev和远端dev链接 git branch --set-upstream-to=origin/dev dev # 再次 git pull git commit -m "fix env conflict"

变基

https://www.liaoxuefeng.com/wiki/896043488029600/1216289527823648

标签

标签不会随着push代码而更新,需要单独推送,标签对应commit-id # 创建,默认打在最新的commit-id上 git tag v1.0 # 指定 git tag v0.9 f52c633 # 查看 git tag # 查看 git show v0.9 # 综合打标签 git tag -a v0.1 -m "version 0.1 released" 1094adb # 找到历史提交的commit id git log --pretty=oneline --abbrev-commit # 删除本地标签 git tag -d v0.1 # 如果已经推送到远端标签,要删除,需要先删除本地,再执行 git push origin :refs/tags/v0.9 # 推送标签 git push origin v1.0 # 推送所有 git push origin --tags

忽略特殊文件

.gitignore文件 https://www.liaoxuefeng.com/wiki/896043488029600/900004590234208

别名配置

git config --global alias.st status

第一次使用git仓库

$ git clone https://gitee.com/suntianwei/awsome-python.git Cloning into 'awsome-python'... warning: You appear to have cloned an empty repository. Tian@HW-TIAN MINGW64 /e/project-work/python-work $ git config --global user.name "tiango" Tian@HW-TIAN MINGW64 /e/project-work/python-work $ git config --global user.email "tiango@aliyun.com" Tian@HW-TIAN MINGW64 /e/project-work/python-work $ cd awsome-python/ Tian@HW-TIAN MINGW64 /e/project-work/python-work/awsome-python (master) $ touch README.md Tian@HW-TIAN MINGW64 /e/project-work/python-work/awsome-python (master) $ git add README.md Tian@HW-TIAN MINGW64 /e/project-work/python-work/awsome-python (master) $ ls README.md Tian@HW-TIAN MINGW64 /e/project-work/python-work/awsome-python (master) $ git commit -m "first commit" [master (root-commit) eb1ff92] first commit 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 README.md Tian@HW-TIAN MINGW64 /e/project-work/python-work/awsome-python (master) $ git remote add origin https://gitee.com/suntianwei/awsome-python.git fatal: remote origin already exists. Tian@HW-TIAN MINGW64 /e/project-work/python-work/awsome-python (master) $ git push -u origin master libpng warning: iCCP: cHRM chunk does not match sRGB Enumerating objects: 3, done. Counting objects: 100% (3/3), done. Writing objects: 100% (3/3), 206 bytes | 206.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 remote: Powered by GITEE.COM [GNK-5.0] To https://gitee.com/suntianwei/awsome-python.git * [new branch] master -> master Branch 'master' set up to track remote branch 'master' from 'origin'.
最新回复(0)