码云帮助文档:http://git.mydoc.io/?t=83150
在码云上创建一个新的仓库,并获取这个仓库的HTTP地址,下边有讲SSH方式操作代码。
HTTP方式操作代码
1 创建一个空的文件夹,右键选择:Git bash here,登录你的git账号密码开始clone
- git config --global user.name "username"//注意,上面user.name 空格 "username"
- git config --global user.email "你的邮箱"
- git init //初始化
- git status //主分支状态还是什么的,不清楚,知道的请留言谢谢。
- git add -A
- git commit -m"helloworld"
- git remote add origin git@gitee.com:XXXX/XXXX.git //关联远程仓库
- git remote -v //查看是否关联成功,当然,你也可以不查看
- git clone git@gitee.com:XXX/XXXX.git //clone远程仓库代码,下载整个master仓库
- //git clone git@gitee.com:xxx/xxx.git -b dev //clone远程仓库master下dev分支的代码
这时候会根据输入的地址弹出弹窗,请输入您的码云账号密码即可下载。
注意:这里的远程仓库地址是HTTPS 不是SSH
**********************分割线***************
为什么先说下载仓库的代码,是需要先获取到远程仓库的地址来完成操作。
- git add . //将所有项目代码添加到Git(本地)
- git commit -m"first commit"//添加提交注释, -m后边紧跟着",没有空格
- git push origin master //提交代码 ,强力推荐使用下面那行
- git push origin master -f //如果提交个代码遇到阻碍,或者不自信阳痿等等,使用这句强力提交……
当反复提交失败时:
git config --system --unset credential.helper
可以重置账号密码,来重新登录完成提交!
Git/Gerrit中SSH配置
使用git命令获取SSH公钥
在任何一个文件git bash打开git命令输入框开始输入:
ssh-keygen.exe -t rsa -C "your@email.com"
然后一路enter!
查看ssh公钥:cat(一个空格)~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa/pub
拿到ssh公钥以后放到你要下载项目的设置-->SSHkey-->Add New SshKey
git/gerrit使用SSH方式操作代码
SSH途径下载代码(HTTP途径下载使用的时候需要输入账号、密码)
//登录
git config --global user.name "your name"
git config --global user.email "your email"
//初始化
git init
//clone
git clone "ssh@git"
//clone指定分支的代码,这里分支名称dev
git clone "ssh@git" -b dev
//修改代码以后提交代码
//添加修改的文件
git add .
//查看状态
git status
//添加备注
git commit -m "fix:更新内容 bug单号"
//另一种添加备注到指定分支dev
git commit -m "fix:更新内容 bug单号" -b dev
//先同步代码
git pull
//提交代码到dev分支,其中HEAD:refs/for/是固定开头
git push origin HEAD:refs/for/dev
//继续使用git命令,生成change-id
git commit --amend --no-edit
//最后重新提交一次
git push origin HEAD:refs/for/dev
最终提示:
Enumerating objects: 19, done.
Counting objects: 100% (19/19), done.
Delta compression using up to 12 threads
Compressing objects: 100% (9/9), done.
Writing objects: 100% (10/10), 881 bytes | 881.00 KiB/s, done.
Total 10 (delta 7), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Resolving deltas: 100% (7/7)
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: http://gerrit-sejv.smartchina.com.cn/c/gkui_wh/apps/XCNotificationCenterUI/+/5432 fix:情景模式卡片右侧显示切割异常 SHU104S-14439 Pcode:Master [NEW]
remote:
To ssh://gerrit-sejv.smartchina.com.cn:29418/gkui_wh/apps/XCNotificationCenterUI
* [new reference] HEAD -> refs/for/p/gkui/s/dhu23/13/dev
git push origin HEAD:refs/for/dev提交报错
第一种提交失败提示
(过来人提示:以下报错多出现在SSH clone代码的时候没有将git/hook/commit-message文件同步下来,强烈建议使用Greeit中SSH的clone with commit-message hook同步方式,特别是关于第一次提交代码提示确实hook/commit-message文件的时候。即便是本地自行创建了该文件,也会提示hook/commit-message是空的)
Enumerating objects: 19, done.
Counting objects: 100% (19/19), done.
Delta compression using up to 12 threads
Compressing objects: 100% (9/9), done.
Writing objects: 100% (10/10), 840 bytes | 840.00 KiB/s, done.
Total 10 (delta 7), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Resolving deltas: 100% (7/7)
remote: Processing changes: refs: 1, done
remote: ERROR: commit de51d4d: missing Change-Id in message footer
remote:
remote: Hint: to automatically insert a Change-Id, install the hook:
remote: gitdir=$(git rev-parse --git-dir); scp -p -P 29418 e-jiantao.lu@gerrit-sejv.smartchina.com.cn:hooks/commit-msg ${gitdir}/hooks/
remote: or, for http(s):
remote: f="$(git rev-parse --git-dir)/hooks/commit-msg"; curl -o "$f" http://gerrit-sejv.smartchina.com.cn/tools/hooks/commit-msg ; chmod +x "$f"
remote: and then amend the commit:
remote: git commit --amend --no-edit
remote: Finally, push your changes again
remote:
To ssh://gerrit-sejv.smartchina.com.cn:29418/gkui_wh/apps/XCNotificationCenterUI
! [remote rejected] HEAD -> refs/for/p/gkui/s/dhu23/13/dev (commit de51d4d: missing Change-Id in message footer)
error: failed to push some refs to 'ssh://gerrit-sejv.smartchina.com.cn:29418/gkui_wh/apps/XCNotificationCenterUI'
//根据提示使用git命令(在-p前面添加-O 大写的呕)
gitdir=$(git rev-parse --git-dir); scp -O -p -P 29418 e-jiantao.lu@gerrit-sejv.smartchina.com.cn:hooks/commit-msg ${gitdir}/hooks/
//继续输入git指令
f="$(git rev-parse --git-dir)/hooks/commit-msg"; curl -o "$f" http://gerrit-sejv.smartchina.com.cn/tools/hooks/commit-msg ; chmod +x "$f"
//继续使用git命令,生成change-id
git commit --amend --no-edit
//最后重新提交一次
git push origin HEAD:refs/for/dev
第二种提交失败的报错提示
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Processing changes: refs: 1, done
To ssh://gerrit-sejv.smartchina.com.cn:29418/gkui_wh/apps/XCNotificationCenterUI
! [remote rejected] HEAD -> refs/for/p/gkui/s/dhu23/13/dev (no new changes)
error: failed to push some refs to 'ssh://gerrit-sejv.smartchina.com.cn:29418/gkui_wh/apps/XCNotificationCenterUI'
根据以上错误提示内容[remote rejected] HEAD -> refs/for/p/gkui/s/dhu23/13/dev (no new changes)来看,说明是在此次提交过程中改分支no new changes(没有新的变化),但上面确实使用了git commit -m "XXXXX"的git命令行,所以这不是我们的问题,是git或者Gerrit存在的问题,接下来(本人是Android开发,用的编译工具是Android studio)用编译工具把Commit的内容提交上去(图片1-1),然后再使用编辑工具进行正常提交操作即可
(1-1)
总结:IT的世界确实考验人,单独一种常规处理问题的方法不行的时候,完全可以尝试多种方法一起使用,看是否能处理掉问题。
QQ群:88627109
欢迎进群讨论。