本文从克隆一个新项目开始举例,首先要配置SSH密钥
1.配置SSH Key
一、同一台电脑生成码云和github的SSH私钥
1).打开git bash,输入以下命令
// -f 后面为ssh key文件的别名
ssh-keygen -t rsa -C 'email' -f 'gitee_id_rsa' // email为你注册码云的邮件地址
ssh-keygen -t rsa -C 'email' -f 'github_id_rsa' // email为你注册github的邮件地址
2).连续按三次enter,生成各自的ssh key,找到路径中的文件或执行下面命令,并复制内容
cat ~/.ssh/gitee_id_rsa.pub
3).分别登录码云和github,打开设置中的ssh管理界面,把第二步中复制的内容添加到公钥栏
4).至关重要的一步:创建config文件解决ssh冲突
在.ssh文件夹下执行命令:vi config 进入编辑模式,加入以下代码
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
#github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
编辑完成后按ESC退回命令模式,然后输入:w保存
5).测试是否连接成功
ssh -T git@gitee.com // 提示后输入yes
ssh -T git@github.com
二、同一台电脑生成github不同账号的SSH私钥
1).打开git bash,输入以下命令
// -f 后面为ssh key文件的别名,email为你注册github的邮件地址
ssh-keygen -t rsa -C 'email' -f 'git_carrie_id_rsa'
ssh-keygen -t rsa -C 'email' -f 'git_carrie_xin_id_rsa'
2).连续按三次enter,生成各自的ssh key,找到路径中的文件或执行下面命令,并复制内容
cat ~/.ssh/git_carrie_xin_id_rsa.pub
3).用不同账号登录GitHub,在setting页把ssh key添加上去
4).更改ssh config文件,在.ssh文件夹下执行命令:vi config 进入编辑模式,加入以下代码
#carrie account
Host github.com-carrie
HostName github.com
User git
IdentityFile ~/.ssh/git_carrie_id_rsa
#carrie-xin account
Host github.com-carrie-xin
HostName github.com
User git
IdentityFile ~/.ssh/git_carrie_xin_id_rsa
5).建立连接后,克隆项目到本地,然后分别cd 到项目文件夹,更改git配置
eg:
// cd workspace/projectname
$ git config user.name "carrie"
$ git config user.email "project one@gmail.com"
$ git config user.name "carrie-xin"
$ git config user.email "project two@gmail.com"
然后就可以正常pull push代码了
2.克隆项目至本地
gitBash或cmd切换至存放项目的路径,然后执行 git clone ‘url’
或者直接下载压缩包到本地。
3.提交代码
1).普通提交
git add .
git commit -m"提交说明"
git pull origin 分支名
git push origin 分支名
2).合并分支代码并提交
1.执行普通提交的步骤;
2.git checkou 分支名, 切换至需要合并代码的分支;
3.git merge --no-ff 分支名,合并分支;
4.执行普通提交的步骤,提交合并后的分支代码。
4.分支管理
git branch: 查看本地分支
git branch -a:查看远程分支
git branch 分支名:创建分支
git checkout 分支名:切换到目标分支
git branch -D 分支名:删除本地分支
git push origin --delete 分支名:删除远程分支
git merge --no-ff 分支名:合并分支到当前分支
5.暂存代码区
适用场景:开发新功能到一半突然要改个bug,但是新功能还没完成不想提交,就可以用git stash缓存起来
1.git status:查看当前修改;
2.git stash: 暂存当前修改 也可用 git stash save "message" 加版本记录;
3.git stash pop: 将缓存堆栈中的第一个stash应用到当前工作区;
4.git stash list: 查看当前所有的stash目录;
5.git stash apply: 将所有的stash应用到当前工作区;
6.git stash drop stash@{0}: 删除指定的stash;
7.git stash clear: 删除所有的stash;
8.git stash branch name: 从暂存区新建分支;
6.分布式合作开发
当项目成员较多且特性分支较多时,很容易造成冲突,为了减少这种冲突,可以采用分布式开发。
首先,把公司仓库下的项目fork到个人仓库,此时更改提交不会对公司仓库项目有影响
1.git remote -v 查看当前远程仓库信息
2.git remote add upstream <url> 添加一个名为upstream的远程仓库关联
3.git fetch upstream 抓取远程仓库upstream中的代码
4.git checkout dev 切换到未更新代码的分支
5.git merge upstream/dev 远程仓库upstream中dev分支的代码与本地dev分支代码合并
6.git push origin dev 推送本地dev分支代码到远程仓库origin
7.提交审查代码
7.tag版本控制
养成良好的代码管理习惯,每次往master合代码时,最好给当前提交记录打上标签
给某次的提交打标签:
git add .
git comit -m""
git tag v1.0 // 创建一个名为v1.0的tag
git tag -a v1.0 -m"标签的描述" // 创建一段带描述的tag
git push origin master
git push origin v1.0 // 将tag 同步到远程服务器
git show v1.0 // 查看tag的详细信息如commit等
git tag // 查看所有的tag
git checkout v1.0 // 切换到某个tag
给指定的commit加tag:
git log 获取commit 编号
git tag -a v2.0 bc223557367f406a7d40ef68c5fcdcea6db6b0a1 -m"指定的版本tag"
删除tag:
git tag -d v1.0 // 本地删除
git push origin :refs/tags/v1.0 // 远端删除