在了解之前,先注册github账号,由于你的本地Git仓库和github仓库之间的传输是通过SSH加密的,所以需要一点设置:
第一步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果有的话,直接跳过此如下命令,如果没有的话,打开命令行,输入如下命令:
root@kali:~/CTFD# ssh-keygen -t rsa -C "[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:AU5KedsTeK/PH7UCkATDOehjQIqpnAEidz2CBOSTUc8 fatpuffer@163.com
The key's randomart image is:
+---[RSA 2048]----+
|**=oo==+. |
|*+=o*+O+o. |
|+= o.E.*+o |
|o + + . oo. |
|.o . . So. . |
| . . . . |
| o o . |
| o o |
| .. |
+----[SHA256]-----+
root@kali:~# cd .ssh/
root@kali:~/.ssh# ls
id_rsa id_rsa.pub known_hosts
root@kali:~/.ssh#
id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人。第二步:登录github,打开” settings”中的SSH Keys页面,然后点击“Add SSH Key”,填上任意title,在Key文本框里黏贴id_rsa.pub文件的内容。
第三步:添加远程库并推送
第四步:将本地仓库与远程仓库相关联:
git remote add origin git@github.com:FatPuffer/CTFD.git
fatal: remote origin already exists
. 这时候说明远程仓库已经存在。这时候需要先删除origin仓库,然后再重新添加该远程仓库。指令如下git remote rm origin
git remote add origin git@github.com:FatPuffer/CTFD.git
第五步:在本地仓库搭建django项目框架
django-admin startproject CTFD
第六步:创建一个版本
git add CTFD
git commit -m '创建django应用'
第七步:把本地master分支的最新修改推送到github上了
git push -u origin master
To git@github.com:FatPuffer/CTFD.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:FatPuffer/test.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
README.md
文件和.gitignore
文件,系统会自动帮我们做一次提交,所以在我们推送时,系统版本比我们本地版本更优先,因此报错,解决办法:现将远程master
分支提价拉倒本地,然后再提交。git pull origin master
git push -u origin master
第八步:创建并推送开发分支(dev)到远程库
git checkout -b dev
cd CTFD/CDFT
vim settings.py
84 DATABASES = {
85 'default': {
86 'ENGINE': 'django.db.backends.mysql',
87 'NAME': 'XXX',
88 'USER': 'root',
89 'PASSWORD': 'XXX',
90 'PORT': 3306,
91 'HOST': 'XXX'
92 }
93 }
git add settings.py
git commit -m "修改数据库连接"
git checkout master
git push origin dev
master
分支,用来保存项目完整版本,一个是dev
分支,用来保存阶段性开发记录信息(1)我们现在模拟另外开发组一个同事,首先在本地创建一个仓库(基础见 git基础),将远程仓库克隆到本地。
git clone git@github.com:FatPuffer/CTFD.git
(2)我们要在dev分支上做开发,就必须把远程的origin的dev分支创建到本地来,于是可以使用命令创建本地dev分支,为了方便我们推送,还会将本地分支设置为跟踪远程分,这样在推送时就可以直接使用git push
命令,不需要再使用git push origin dev
cd CTFD # 首先我们必须进入项目
git checkout -b dev origin/dev
git branch --set-upstream-to origin/dev dev
(3)进行开发,加入创建一个用户应用
cd CTFD
python3 manage.py startapp user
(4) 将修改添加到暂存区,并进行提交
git add CTFD/user
git commit -m "创建用户应用"
(5)将我们本地dev分支所做的修改推送到远程dev分支即可
git push
假如同事A和同事B同时修改了dev分支下的一个文件,在A推送成功后,B的推送就会发生冲突。
解决办法:
先用git pull把最新的提交从origin/develop抓下来,然后在本地合并,解决冲突,再推送
分支管理 冲突解决 bug分支
在项目开发中,我们都是在本地dev
分支上进行开发,开发完成后将其推送到远程dev
分支,远程dev分支保存了所有开发人员提交的记录信息,而远程master
分支保存的才是我们项目每一阶段的版本形态。也就是说,我们当下所做的提交都保存在了远程dev分支上,那么要怎样才能将远程dev分更新的内容合并到远程master分支,形成一个完整的版本形态。
接下来我们开始实战讲解
(1)clone远程仓库代码到本地仓库
git clone git@github.com:FatPuffer/CTFD.git
(2)在本地创建dev分支并与远程dev分支对应
git checkout -b dev origin/dev
(3)切换回master分支
git checkout master
(4)合并dev分支到master上,如遇冲突,见上面链接解决。
git merge dev
(5)推送到远程的master上
git push origin master
此时我们再去看一下远程仓库master分支信息,就会发现我们刚刚提交的信息已经被同步到master分支上了。