一、现有的Git 项目,要为其贡献代码,怎么关联。
1、用git clone <url> 方式(比方式2,要好,都自动关联好了)
git clone <url>
git remote#一般可以看到origin,自动关联好远程主机了,方式2没有
git branch -a#看到本地自带一个master分支,远程的都在
git remote show origin#可以看到比较详细的信息,如分支
2、下载压缩包方式
download一个.zip项目压缩包
解压成一个文件夹
git bash 中 cd 到文件根目录下
git init //初始化文件夹,使之成为一个本地仓库
git remote add origin https://github.com/laisxIsMe/APP_HMT//为本地仓库匹配一个远程仓库
/**
注意上命令中的https://github.com/laisxIsMe/APP_HMT 是自己Fork项目原本主人的项目后的链接,不是原项目本身的链接
比如原项目地址是https://github.com/1136535305/APP_HMT,我在网页fork后就会有https://github.com/laisxIsMe/APP_HMT
*/
二、push格式,pull格式
git push <远程主机名> <本地分支名>:<远程分支名> //推到远程
git pull <远程主机名> <远程分支名>:<本地分支名> //拉到本地
三、详细的分支信息
$ git log --graph --pretty=oneline --abbrev-commit
* 7825a50 merge with no-ff
|\
| * 6224937 add merge
|/
* 59bc1cb conflict fixed
引用阮一峰老师的图片,以帮助问题四的理解
四、未保存add 的撤销
情景:导入一个model后,把项目搞得乱乱的,想恢复到没导入的时候。
你可能发现版本回退中的 git reset --hard HEAD^ 回退后还是残留着你导入的model。用git status可以看到你的那个文件夹
这是因为你没add他到暂存区(没有追踪你的这些个文件),git 无法帮你回退。
用如下命令可以回复到原来最后一次commit 的样子。
git clean -df #清除到没有add的文件
git checkout . #注意后面的空格加一点,清除整个项目的,没有add 的修改
五、git auto-merge失败后的提示更改
Step 1: From your project repository, check out a new branch and test the changes.
git checkout -b 1136535305-branch1 master
git pull https://github.com/1136535305/APP_HMT.git branch1
Step 2: Merge the changes and update on GitHub.
git checkout master
git merge --no-ff 1136535305-branch1
git push origin master
注1:--no-ff 表示no FastForward。详看廖雪峰老师的分支管理策略:
注2:git merge遇到一些合并问题需要人工解决。用到的一些知识可以看下:
http://www.cnblogs.com/sinojelly/archive/2011/08/07/2130172.html
六、习惯性的操作,以保证项目主在github上合并时可以自动合并,利己利人嘛
开始写代码前
1、查看下被fork项目有没有更新,有更新在github网站上发起pull request,把自己github上的项目更到最新
2、用git pull 更新自己本地的项目
提交代码前
1、看下被fork项目有没有更新,有的话重复上面两步,以保证自己新写代码可以与github上代码融合
2、再git push
===============================================
base fork a ; head fork b
从b更新内容到a
git option --help 可以查看相关命令的解释,虽然是英文版的
git命令大全
http://blog.youkuaiyun.com/dengsilinming/article/details/8000622
参考(阮一峰):
http://www.ruanyifeng.com/blog/2014/06/git_remote.html
参考(廖雪峰)