基本操作
个人对git的了解:数据不真实,但命令是没错的。
场景(该场景是最频繁的):现在你的远程仓库(我的仓库地址是solink@so-link.org:/git/solink/solink_android.git,大家可以使用github上的开源项目的地址)有个dev分支,专门用于日常开发,现在需要将该分支clone到本地、编辑、提交。
1) 从git上clone下dev分支
命令:
//-b指定clone远程的哪个分支
git clone -b dev solink@so-link.org:/git/solink/solink_android.git
如果发生你没有权限clone的情况,可能需要你输入账号密码或将你的公钥添加到该仓库(前提是别人愿意将你的公钥添加到他的仓库)
2) 运行完步骤1,现在本地已经有了该dev分支,切换到本地dev分支,在该dev分支下新建自己的分支,命令:
//checkout表示检出分支:如果本地有该分支,则直接切换到该分支;如果远程有该分支,则检出到本地并切换到该分支;如果没有,则失败。
//checkout -b:表示检出;当该分支不存在的时候就在本地新建一个分支
git checkout -b Given
3) 运行完步骤2,此时已切换到了自己的工作分支,即2中所建的分支Given,这样就可以进行自己的工作了(在eclipse中更改代码)
4) 完成自己的工作后,就可以提交到自己的工作分支Given
命令
git add the_file_or_dir_that_you_change
git commit -m "对你自己的工作的描述,比如修复了某个bug或者添加了xx功能"
5) 切换到本地dev分支,命令:
git checkout dev
6) 将dev分支与自己的工作分支合并 命令:
git merge Given
后面的工作就是将自己做的东西提交到远程仓库dev。注意不能直接就将本地dev push上去,因为如果你直接这样会将他人提交过的成果直接覆盖(因为在你clone分支dev之后,别人也有可能对dev进行修改并提交到远程,这时你的dev就跟远程的不一样了;如果你直接推送,就会将将别人的代码覆盖,会被打死的)
7) 从远程分支fetch或者pull,建议用fetch
命令 :
git fetch origin dev:temp //将远程的dev拉下来作为temp分支(因为别人如果push过,远程的dev就和你本地的dev不一样了)
git merge temp //如果有冲突的话会有提示,然后解决冲突
解决完冲突后,再add,commit,然后git merge temp, 最后git push origin dev
git add the_conflict_file
git commit -m "fix the conflict between Given and Tom"//你和Tom的代码发生的冲突,当然实际中最好还是写上发生了什么冲突
git push origin dev
8)push完了之后,你们可以将那些temp分支删掉,随意
git branch -d temp //-d 代表删除
修改仓库地址
当git服务器变更时,如果要将代码推到远程,会发现:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:cnucP/uvrPLl/7jFPOqDgU5yk/SADsJjHSy7XQfK/3k.
Please contact your system administrator.
Add correct host key in /home/zjw/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/zjw/.ssh/known_hosts:5
remove with:
ssh-keygen -f "/home/zjw/.ssh/known_hosts" -R git.so-link.org
ECDSA host key for git.so-link.org has changed and you have requested strict checking.
Host key verification failed.
fatal: 无法读取远程仓库。
此时就需要更改远程仓库地址:
方法一,先删除后添加:
git remote rm origin
git remote add origin [url]
方法二,修改:
git remote origin set-url [url]
windows上的git使用
- 在windows上开发有时是极其蛋疼,不像linux一两条命令就行了。
- windows git的安装