Git入门
0. Motivation
最初目的:
- 想要commit记录每次的代码更新,同时需要简洁高效的回滚。
- 学习一下经验丰富的程序员的git习惯。
1. 资源
磨刀不误砍柴工
- 书籍:Pro Git
在某高赞评论区找到的一本书。打算先看中文版。毕竟我英文的阅读速度还没那么快,现在时间又不多但急需上手,没必要拿这件事练习英语,所以啃啃母语版,感觉会快一下。 - 入门:去b站随便搜个入门视频
对git和常见指令有一个整体、初步、感性认识。相当于写个hello world
2. Git初体验之Hello World
2.1 创建代码仓库
- 克隆别人的仓库
git clone repo_url
- 创建自己的仓库
a. 创建本地仓库文件夹,并进入这个文件夹
mkdir my_repo
cd my_repo
b. 初始化仓库
git init
c. 这时会在当前文件夹my_repo
下创建一个.git
文件
2.2 增改代码并传到仓库
- 创建一个
hello_world.py
文件
print("Hello World")
- 把我们修改的内容提交到暂存区,当前的改动被git追踪了
git add hello_world.py
或是提交追踪所有的文件
git add .
- 查看每个文件的追踪状态
git status
红色:文件未被追踪
绿色:文件被追踪 - 正式提交记录
git commit -m "hello world"
- 查看修改记录
git log
或git log --stat
每个修改会有一长串字符,这就是commit id
。 - 通过commit_id查看某次提交的具体修改
git diff {commit_id}
- 回滚到某次修改
git checkout {commit_id}
或
git reset --hard {commit_id}
TODO:两条命令的具体实现有区别,等我查了再补充
2.3 branch
git可以看作一个树状结构,从一个头节点出发引出多个分支,这些分支可以通过git branch
查看。
每次commit则是在当前分支上新建一个节点。这些节点也就是修改记录可以通过git log
或git log --stat
查看(2.2.4)。
初始化创建的branch
一般名字是master
,但github因为某些zzzq的原因改成了main
。所以如果我们想和github保持一致,方便后续连接使用github方便,那么就有了第一个需求:为当前branch改名。
- 重命名当前branch
git branch -m main
那么如果我们想创建一条新的分支,比如develop
:
-
创建新分支
git branch -b develop
-
切换当前分支
git checkout main
也就是git checkout
可以直接切换到某个commit节点,也可以切换到某条branch。 -
合并分支
比如把develop
分支合并到mian
主分枝上:
首先把当前分支切换到mian
分支
git checkout main
然后合并
git merge develop
2.4 远端仓库
my_repo
文件夹是我们本地的local仓库,如果我们想把它传到远端的remote仓库(比如Github)需要:
- 连接远端仓库
TODO - 把本地代码推上去
git push origin my_branch
- 代码合并
create pull request和merge pull request - 把远端代码拉下来
比方说我要(确认一下)把代码拉到主分枝main
git checkout main
拉取远端代码
git pull origin main
to be continue