git 的使用
Posted 杨斌并
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git 的使用相关的知识,希望对你有一定的参考价值。
git 使用
git 创建远程分支
- 创建分支
git checkout -b dev
- 基于origin/oldbranchname 创建分支
git checkout -b yourbranchname origin/oldbranchname
- 创建完可以查看一下,分支已经切换到dev
git branch
- 建立本地到上游(远端)仓的链接 --这样代码才能提交上去
git branch --set-upstream-to=origin/dev
- 将创建的分支推到远端
git push --set-upstream origin dev_doctor_839
git push origin yourbranchname
- git 提交
git commit -a -m "提交信息"
//重新提交是在日志看不到操作记录的
git commit --amend
- git 拉取代码
git pull
git pull --rebase
- git 推到远程
git push
- git log记录
git log
- git 合并分支 合并test分支到当前分支:
git merge test
./gradlew app:dependencies>aaa.txt
- git 生成ssh
ssh-keygen -t rsa -C "binbing.yang@ushow.media"
会有下面的生成公钥和私钥的地址
Enter same passphrase again:
Your identification has been saved in /Users/yangbinbing/.ssh/id_rsa.
Your public key has been saved in /Users/yangbinbing/.ssh/id_rsa.pub.
cd .ssh
ls
vim id_rsa.pub
拷贝当前的私钥到 https://phabricator.ushow.media
-
git clone xxx
-
git 暂存
git stash
- git 将暂存取出来
git stash pop
- git 暂存列表查询
git stash list
- git 设置用户名
git config --local user.name "Yangbinbing"
- git rebase
git rebase --continue
git 分离HEAD
- git 回退到上次的提交
git checkout HEAD^
- git 一次回退 4步
git checkout HEAD~4
- git 分支强制指向main分支HEAD 的第3级父提交
git branch -f main HEAD~3
- git 撤销变更 通过把分支记录回退几个提交记录来实现撤销改动。
- git reset 向上移动分支,原来指向的提交记录就跟从来没有提交过一样。
- git revert 虽然在你的本地分支中使用 git reset 很方便,但是这种“改写历史”的方法对大家一起使用的远程分支是无效的哦!为了撤销更改并分享给别人,我们需要使用 git revert
git reset HEAD
git revert HEAD
自由修改提交树(将其他分支的 节点 合并到当前分支)
- 将c2、c4 哈希对应的节点 合并到当前分支
git cherry-pick C2 C4
- Git 前
- git 后
交互式
git rebase -i HEAD~4
交互式 rebase 指的是使用带参数 --interactive 的 rebase 命令, 简写为 -i
如果你在命令后增加了这个选项, Git 会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。
在实际使用时,所谓的 UI 窗口一般会在文本编辑器 —— 如 Vim —— 中打开一个文件。
git tag 的使用
git tag v1 c1
- 我们将这个标签命名为 v1,并且明确地让它指向提交记录 C1,如果你不指定提交记录,Git 会用 HEAD 所指向的位置。
[外链图片转存失败,源站可能有防盗在这里插入!链机制,建描述]议将图片上https://传(imblog.csTmg.cn/img_convert/73JziN174e00006eed3d784ccccadbff.png#pic_center6477)(#pic_center)]
git describe main
git describe 的语法是:
git describe
可以是任何能被 Git 识别成提交记录的引用,如果你没有指定的话,Git 会以你目前所检出的位置(HEAD)。
它输出的结果是这样的:
<tag>_<numCommits>_g<hash>
- tag 表示的是离 ref 最近的标签,
- numCommits 是表示这个 ref 与 tag 相差有多少个提交记录,
- hash 表示的是你所给定的 ref 所表示的提交记录哈希值的前几位。
- 当 ref 提交记录上有某个标签时,则只输出标签名称
Git 两个父节点
//第二条父节点
git checkout HEAD^2
//上面的两个点
git checkout HEAD~2
这里有一个合并提交记录。如果不加数字修改符直接检出 main^,会回到第一个父提交记录。
(在我们的图示中,第一个父提交记录是指合并提交记录正上方的那个提交记录。)
git checkout HEAD~^2~2
- git 远程
Git Fetch
- git 在远程提交一次代码
//fa推送了 3 个提交记录到远程仓库的 foo 分支
git fakeTeamwork foo 3
git push
看见了吧?什么都没有变,因为命令失败了!git push 失败是因为你最新提交的 C3 基于远程分支中的 C1。而远程仓库中该分支已经更新到 C2 了,所以 Git 拒绝了你的推送请求
- 解决
git fetch
git rebase o/main //git merge o/main
git push
git pull --rebase
git push
git pull
git push
git 远程跟踪remote tracking
git checkout -b totallyNotMain o/main
- 就可以创建一个名为 totallyNotMain 的分支,它跟踪远程分支 o/main
第二种方法
另一种设置远程追踪分支的方法就是使用:git branch -u 命令,执行:
git branch -u o/main foo
- 这样 foo 就会跟踪 o/main 了。如果当前就在 foo 分支上, 还可以省略 foo:
git branch -u o/main
Git Push
git push <remote> <place>
git push origin main
- 提交的都是相同的分支
切到本地仓库中的“main”分支,获取所有的提交,再到远程仓库“origin”中找到“main”分支,将远程仓库中没有的提交记录都添加上去,搞定之后告诉我。
我们通过“place”参数来告诉 Git 提交记录来自于 main, 要推送到远程仓库中的 main。它实际就是要同步的两个仓库的位置。
需要注意的是,因为我们通过指定参数告诉了 Git 所有它需要的信息, 所以它就忽略了我们所检出的分支的属性!
- 下面 提交的是不同的分支
git push origin <source>:<destination>
记住,source 可以是任何 Git 能识别的位置:
这是个令人困惑的命令,但是它确实是可以运行的 —— Git 将 foo^ 解析为一个位置,上传所有未被包含到远程仓库里 main 分支中的提交记录。
git push origin foo^:main
Git fetch 参数
git fetch origin foo~1:bar
- 如果 git fetch 没有参数,它会下载所有的提交记录到各个远程分支……
source
古怪的
Git 有两种关于 的用法是比较诡异的,即你可以在 git push 或 git fetch 时不指定任何 source,方法就是仅保留冒号和 destination 部分,source 部分留空。
git push origin :side
git fetch origin :bugFix
我们分别来看一下这两条命令的作用……
git push origin :foo
- push 传空值 source,成功删除了远程仓库中的 foo 分支,
git fetch origin :bar
- fetch 空 到本地,会在本地创建一个新分支。
以上是关于git 的使用的主要内容,如果未能解决你的问题,请参考以下文章