Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)

learn git branch 学习笔记:

基础篇:

1.向下移动
git commit 提交修改
Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第1张图片
2.创建并切换分支
git branch [new-branch] 创建分支
git checkout -b [new-branch] 在该分支上进行开发

3.合并(合并后的分支包括两个分支的修改)
git checkout master 切换回要合并到的分支
git merge bugFix 合并bugFix到master分支
Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第2张图片
4.rebase
Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第3张图片Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第4张图片
5.分离出 HEAD 并让其指向一个提交记录
git checkout c4想看 HEAD 指向,可以通过 cat .git/HEAD 查看, 如果 HEAD 指向的是一个引用,还可以用 git symbolic-ref HEAD 查看它的指向。
git chechout master^ HEAD切换到master的父节点
git checkout HEAD^ HEAD向上移动一步
git checkout HEAD~ HEAD向上移动num步
git branch -f master HEAD^3 结果如下图
Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第5张图片

高级篇:

1.撤销变更
git revert HEAD 远程仓库的撤销方式,c2’与c1状态相同
git reset HEAD^ 本地仓库的撤销方式
Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第6张图片
2.自由修改提交树:
git cherry-pick c2 c4 复制特定节点到当前分支
git rebase -i HEAD~4 交互式rebase
git rebase -i HEAD~[num] 进行重新排序,把想要修改的移动到最新的提交记录
git commit --amend 就可以对最前端的进行修改
git rebase -i HEAD~[num] 重新移动回去

3.锚点
git tag v1 c1 锚点,不能动
Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第7张图片
git describe master 用来描述离master最近的锚点的位置输出:v1_1_gC2git describe 不指定,用来描述离HEAD最近的锚点的位置

远程篇

1.o/master 是本地的远程分支指针
git checkout o/master
git commit
git fetch 抓取远程仓库到本地,更新o/master指针,但是master不改变
git pull fetch 和 merge 的简写 ,合并o/master和master
Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第8张图片
git push 上传代码并更新
git pull --rebase 就是 fetch 和 rebase 的简写!
git pull --rebase
git push
Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第9张图片
2.远程服务器拒绝
master被锁定了, 需要一些Pull Request流程来合并修改。如果你直接提交(commit)到本地master, 然后试图推送(push)修改, 你将会收到这样类似的信息:! [远程服务器拒绝] master -> master (TF402455: 不允许推送(push)这个分支; 你必须使用pull request来更新这个分支.)

3.rebase和merge
Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第10张图片
4.远程跟踪分支
git checkout -b totallyNotMaster o/master
创建一个名为 totallyNotMaster 的分支,它跟踪远程分支 o/master

git branch -u o/master foo
这样 foo 就会跟踪 o/master 了。如果当前就在 foo 分支上, 还可以省略 foo:git branch -u o/master

5.深入push
git push origin master 同时指定了提交记录的来源和去向
Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第11张图片
git push origin foo^:master
Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第12张图片
Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第13张图片
Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第14张图片git push origin master:new branch
如果你要推送到的目的分支不存在,Git 会在远程仓库中根据你提供的名称帮你创建这个分支.

git push origin :foopush
空source到远程仓库,会删除远程仓库中的分支

6.深入fetch
与push概念相同,方向相反。
Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第15张图片
git fetch origin :bar fetch 空source到本地,会在本地创建一个新分支。

7.git pull 到头来就是 fetch 后跟 merge 的缩写。你可以理解为用同样的参数执行 git fetch,然后再 merge 你所抓取到的提交记录. git pull 唯一关注的是提交最终合并到哪里,以checkout的位置作为父节点(也就是为 git fetch 所提供的 destination 参数)

git pull origin bar:foo

完结,撒花!!!
Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第16张图片
Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第17张图片在这里插入图片描述

资料

Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第18张图片
Git 学习 | (1) git学习笔记(时时更新,留言讨论都会回复)_第19张图片

实战

git clone xxx.git
cd xxx
git branch XXX #创建分支XXX
git branch #查看所有分支,*是当前分支
git branch -m old_branch new_branch 将本地分支进行改名
git checkout XXX #切换到分支XXX
vim train.py #在该分支下面建立文件
git status #查看当前git状态,并未跟踪
train.pygit add train.py #跟踪train.py
git commit -m “first push” #
git push origin XXX #上传到gitlab or github
ll 列出当前分支的文件
ll -a拉取的其他人的代码,自己进行git代码管理时,
git remote -v看一下远程仓库地址
git remote rm origingit remote add origin [url]修改远程仓库地址,改为自己的
git remote origin [branch1]新建远程分支

你可能感兴趣的:(Git,学习)