git命令(基础)
1.git init初始化本地仓库
2.git add . 添加到暂存区
3.git commit 添加到本地仓库
4.git status 查看git此时提交状态
5.git commit -m '提交信息' 加上注释,提交代码。
6. git push 提交到远程仓库。
7.git log 查看提交的版本
8. git reset --hard HEAD^ 一个尖角号是一个版本| ~数字,上数字个版本 回退代码版本(也就是撤销修改)
9. git reflog 操作记录
10. git reset --hard XXXXXXX 回退指定版本。
11.git remote add mez_origin https://URL 添加远程仓库地址
12. git push -u mez_origin master 将本地分支朝远程地址进行提交
13.git config --global user.name "xxx"git全局配置
14. git clone https://github.com/akkarinnw/Dress.git 克隆仓库
15. git pull mez_origin master 获取远程仓库的最新代码,并跟本地代码合并
16. git remote -v 查看当前所有远程地址别名
17. git branch -a 查看所有分支
17.1 git branch mez 创建一个mez分支
18. git checkout -b devmez 创建devmez分支,并自动切换
18.1 git checkout -b devmez origin/dev 根据远程仓库的dev分支来创建本地devmez分支,并自动切换。【一般来说,克隆远程仓库的代码后,只会默认显示master分支,其实如果远程仓库有多个分支,默认都会Clone下来,所以我们使用这个命令来进行分支切换,此时就不用请求远程仓库了。】
提示:然后在每次推送到远程仓库代码之前,需要进行拉取,防止团队协作时导致远程仓库代码和本地不一致。所以首先执行拉取命令:git pull origin dev
然后再进行推送: git push origin dev【将本地的dev分支推送到远程的origin】
19.git checkout master 切换主分支
20. git merge devmez 在主分支执行命令,将子分支devmez的代码合并到当前分支(主分支)
21. git push origin devmez 将子分支推送到远程仓库(前提是目前就在子分支)
22. git push origin :devmez 将远程分支删除
23. git branch -d devmez 将本地devmez分支删除
除了第一种使用merge合并分支的方法,还有第二种合并分支的方法git rebase,Rebase 的优势就是可以创造更线性的提交历史.
24.加入现在处在hot_fix分支上,使用命令 git rebase main,然后切换分支git checkout main ,在使用命令git rebase hot_fix命令更新main分支。
25.git checkout HEAD^ 这样切换的话会让head一直指向上一个节点
26.git branch -f main HEAD~3 使main分支强制指head指向的上三个节点
27. git reset HEAD~1 向上回退一个版本
虽然在本地分支中使用 git reset 很方便,但是这种“改写历史”的方法对大家一起使用的远程分支是无效的哦!
为了撤销更改并分享给别人,我们需要使用 git revert,
28. git revert HAED这样的效果和回退上一个版本是一样的,就可以直接分享给别人你上一个版本的代码。
一般,撤销本地分支需要使用reset ,撤销远程分支需要使用revert
29. git config –global user.name “[your name]”:设置全局用户名。
30. git config –global user.email “[your email]”:设置全局用户邮箱。
31. git config –list:查看当前Git配置信息。
32. git diff:查看修改的文件内容。
Git分支相关命令
1. git branch:显示所有分支。
2. git branch [branch name]:创建新分支。
3. git checkout [branch name]:切换到指定分支。
4. git merge [branch name]:合并指定分支到当前分支。
5. git branch -d [branch name]:删除指定分支。
Git和远程仓库相关操作
1. git remote add [name] [repository URL]:添加远程仓库。
2. git remote -v:查看远程仓库信息。
3. git push [remote name] [branch name]:将本地分支推送到远程仓库。
4. git pull [remote name] [branch name]:从远程仓库拉取最新代码。
用Git打标签
1. git tag [tag name]:创建标签。
2. git tag -a [tag name] -m “[message]”:创建带有描述的标签。
3. git tag:显示所有标签。
4. git push [remote name] [tag name]:将标签推送到远程仓库。
进阶
Git Cherry-pick
git cherry-pick C2 C4 :提交记录 C2 和 C4,所以 Git 就将被它们抓过来放到当前分支下了。这样原来main里面就拥有 C2和C4的内容了
当你知道你所需要的提交记录(并且还知道这些提交记录的哈希值)时, 用 cherry-pick 再好不过了 —— 没有比这更简单的方式了。
但是如果你不清楚你想要的提交记录的哈希值呢? 幸好 Git 帮你想到了这一点, 我们可以利用交互式的 rebase —— 如果你想从一系列的提交记录中找到想要的记录, 这就是最好的方法了
交互式rebase
交互式 rebase 指的是使用带参数 --interactive 的 rebase 命令, 简写为 -i
如果你在命令后增加了这个选项, Git 会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。
git rebase -i HEAD~4
这样就可以打开一个UI界面,有我们自己来决定需要哪些节点,不需要哪些节点,以及节点的顺序
而不是不带参数的直接将四个版本都合并
本地栈式提交
来看一个在开发中经常会遇到的情况:我正在解决某个特别棘手的 Bug,为了便于调试而在代码中添加了一些调试命令并向控制台打印了一些信息。
这些调试和打印语句都在它们各自的提交记录里。最后我终于找到了造成这个 Bug 的根本原因,解决掉以后觉得沾沾自喜!
最后就差把 bugFix 分支里的工作合并回 main 分支了。你可以选择通过 fast-forward 快速合并到 main 分支上,但这样的话 main 分支就会包含我这些调试语句了。
实际我们只要让 Git 复制解决问题的那一个提交记录就可以了。跟之前我们在“整理提交记录”中学到的一样,我们可以使用
git rebase -i
git cherry-pick
来达到目的。
推荐一个在线学习git命令的网址:Learn Git Branching