Git | 基础学习笔记
如果想修改某个历史tag对应的commit代码,则可以:
git checkout 0.0.1 (HEAD游离在这个提交上);
修改代码(问题修复);
git add, commit;
git tag 0.0.1.1 (问题修复后制定tag);
git push origin 0.0.1.1(推送当前tag到远端);
git switch master(切换到主分支)
git merge master(合并HEAD到master上);
git push(推送合并到远端);
基础使用
init
add xx
commit
log --pretty=oneline
status
配置
-
config --global user.name "Your Name config --global user.email "email@example.com"
-
文件位置:~/.gitconfig(全局) .git/config(当前仓库)
版本管理
暂存区(staged)
-
restore --staged xx
-
reset HEAD xx
回退 (慎用--hard)
-
reset --hard HEAD^
-
reset --hard 0a32
-
reflog 记录每一次操作命令
删除
-
rm xx
-
git rm xx
恢复
-
restore xx
-
checkout -- xx
远程仓库
添加远程仓库
- remote add origin git@github.com:[user_name]/[project_name].git
remote先将本地仓库与远端仓库建立链接 origin指远程仓库的默认名字,你可以改为任意名字。
- 也可以直接使用 git push git@github.com:BackWorld/GitLearning2.git
推送到远程仓库
- push -u origin master
-u指将远程的origin/master和本地master分支建立的对应关系,这样以后git push/pull时就不用指定远程仓库/分支;
相当于 git push origin master + git branch --set-upstream-to=origin/master master
-
git show-ref 查看本地仓库与远程仓库的链接关系
-
git remote -v 查看远程仓库refs
-
git remote remove XX 移除仓库ref
克隆远程仓库
-
git clone [LocalDir]
-
git remote -v 查看远程仓库关联信息
远程仓库协作
- 查看远程库信息,使用git remote -v;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
分支管理
当前分支:HEAD指向的分支
git branch命令列出所有分支,*dev表示当前分支
branch dev: 创建分支
checkout dev: 切换分支 checkout -b dev: 创建+切换
切换分支:switch dev(本地已存在的分支)
创建+切换分支:switch -c dev
合并分支: merge dev(将dev分支合并到当前分支上去)
删除分支
-
本地分支:branch -d dev
-
远程分支:push origin -d dev
合并冲突
- <<<<<< HEAD (当前分支改动)
xxx
>>>>>> feature1 (目标分支改动)
查看格式化日志
- log --graph --pretty=oneline --abbrev-commit
暂存工作区: stash
查看已暂存的工作区: stash list 还原工作区:stash apply(不删除原暂存信息) 还原+删除:stash pop=stash apply+stash drop. 还原指定工作区: git stash apply stash@{0}
复制指定提交到当前分支:cherry-pick 4c805e2
rebase: 把分叉的提交历史“整理”成一条直线,看上去更直观。缺点是本地的分叉提交已经被修改过了。
rebase操作可以把本地未push的分叉提交历史整理成直线;
标签管理
添加
-
tag 1.0 在当前分支最新commit处打tag
-
tag 0.9 ade2d3 在指定的commit号上打tag
-
tag -a 0.8 -m 'version 0.8 released.' 8fa83231595e -a: 指定tag名 -m: 指定tag信息
删除
-
tag -d 0.1
-
push origin :refs/tags/0.1 删除远程对应的tag
推送
-
push origin 0.1
-
dev->master合有冲突,当然是先从master合到dev,解决冲突,再合回去