面向小白的Git教程
蕞蕞蕞白痴的用法
以Github为例(默认已经安装了Gitbash):
首先创建一个repo,
在你的某个文件夹打开Gitbash:
1 | git clone https://github.com/HaCTang/Code.git |
如果遇到下面的问题:
请打开魔法!
正常情况下是:
此时会得到一个Code文件夹,这不是普通的文件夹,进入,输入ls -la,会发现有.git隐藏文件夹,里面就会有一些用户信息,commit信息等。
从Bash进入Code文件夹:
1 | cd code // 总所周知gitbash不区分大小写(( |
拷入一些文件,例如:
然后:
1 | git add . |
接着:
1 | git commit -m "提交信息" //(提交的信息是你的项目说明) |
最后输入(可以通过 git status
查看当前在哪个branch):
1 | git push -u origin main // 分支的名称也可以在gitbash中直接看到 |
然后就可以在你的主页上看到上传的文件了。
进阶用法
提交到远程仓库的详细命令
git push <远程主机名> <本地分支名>:<远程分支名>
查看默认的远程主机名:git remote ,一般默认为origin
查看默认的本地分支名:git branch , 一般为master(主分支)
远程分支名:一般与本地分支名相同
查看所有远程分支:git branch -r
从远程仓库获取最新版本
git pull <远程主机名> <远程分支名>:<本地分支名>
多人开发时,先git pull拉取远程仓库中的其他人的修改,
合并到本地仓库之后再git push
如果本地仓库和远程仓库产生冲突,则需要手动修改
Git log:查看提交历史记录
git log 显示提交历史
git log –graph 显示提交历史并且分支合并信息
git log –author=xxx 显示某个作者所有提交信息
Pull Request(PR):提交代码
Git reset (慎用)
假设现在系统有两次正常提交(A和B),而C和D是错误提交。现在要把C和D去掉,而此时HEAD指针(当前最新版本)已经指向D。为此,我们要把HEAD指针移动到B。
运行命令:git reset
运行之后,HEAD指针会移动到B,但是本地的代码仍处在D的状态。要想把代码也改为B的状态,需要git reset –hard
- 慎用–hard , 未提交(commit)的修改不能被恢复!
在本地执行git reset (–hard)后,远程仓库指针和代码仍然保持在D不变。若要更新远程仓库就需要强推:运行git push -f
- 慎用-f ,远程仓库会失去所有C和D的信息
若要找回D的信息,可运行git reflog 找到reset操作对应的D版本号,重新git reset回去。然后可以重新git push到远程
分支管理
何时需要多分支?——稳定分支和开发分支;多人协同,分别写各自的模块
git branch 查看所有分支和当前分支
git checkout
——切换之前要保证工作区没有尚未提交的修改,否则会报错。
——可以git add并且git commit提交所有修改 / git stash暂存修改 / git reset –hard删除修改
git checkout -b
git branch -d
git checkout
——和git reset–hard一样,不能恢复!
git stash 暂存修改
——做完push/checkout等操作后,可以git stash pop还原修改(弹出暂存)
想要还原代码怎么办:Revert
首先,运行git revert 5lk4er,创建D’,抹去D的影响
其次,运行git revert 76sdeb,创建C’,抹去C的影响
这样操作的话,保留了C和D的信息,HEAD指针是往前移动的,因此可以直接使用git push命令推动到远程仓库里,一般是鼓励使用的
Cherry-Pick
假如有三个提交,中间B是错误提交,但是C是正确提交,如何处理?
git revert命令先把 C 提交和B 提交全部回退,再使用 cherry-pick 命令将 C 提交重新再生成一个新的提交 C’’,这样就实现了将B提交回退的需求。
运行命令:git cherry-pick 76sdeb