如何在 GitHub 下载某个程序的特定版本(代码)?
一、在github WEB 界面情况下:
步骤一:打开项目,点击commits
步骤二:选择里面的branch或者tags
步骤三:点击按钮Download ZIP,下载源码历史版本。
二、下载指定分支的方式:
git clone -b v3.2.2 --depth 1 https://github.com/phalcon/cphalcon/tree/phalcon
# depth用于指定克隆深度,为1即表示只克隆最近一次commit. 可以提高clone速度
三、任意切换分支的方式(比起一个一个下,这样切换比较方便,但clone速度会慢):
步骤一:git clone 下载源码
步骤二:git branch -r 或者 git tag 列出所有版本号
步骤三:git checkout 某版本号
当使用FTP工具上传代码时,如何增量上传代码?
1 先找到指定的版本id,比如 05104e3475f63e1e49fbfcbd424a4a3801b95645
2 再找到最终提交的版本id,比如 a0eb9bc6d4e1801062877fd435eefb81f11598b8
3 在命令行下进入到git代码目录中,键入命令制作增量包
git archive -o ./hot-fix-20151001.zip HEAD $(git diff 05104e3...a0eb9bc --name-only)
# 注:git diff 后边的commit id, 可以只取前7位或全部写上都可以
如何查看文件修改记录?
git log -- filename
# 可以看到该文件相关的commit记录
git log -p filename
# 可以显示该文件每次提交的diff
git show commit-id filename
# 查看某次提交中的某个文件变化
#git还原某个文件到之前的版本
第一步: 在命令行中输入 git log src/main/main.c 得到该文件的commit 历史,复制需要回退版本的hash
第二步: git checkout <hash> <filename>
第三步: 如需要提交就执行 git commit -m "revert to previous version"
git blame filename
# 可以查看到每行代码是谁做了修改
rebase和merge命令如何取舍?
使用场景是不一样的,虽然merge、rebase都是合并另外一个分支的内容,但是rebase会把本分支的commits顶到最顶端假设我们现在有3个分支:
1、master分支:线上环境使用的分支
2、testing分支:测试环境使用的分支
3、my_feature分支:开发新功能的分支,也就是当前分支
A情况. 假设我在my_feature上开发了一段时间,之后另外的同事开发的功能正式上线到master分支了,那么我可以在当前的分支下rebase一下master分支,这样我这个分支的几个commits相对于master还是处于最顶端的,也就是说rebase主要用来跟上游同步,同时把自己的修改顶到最上面
B情况. 我在my_feature上开发了一段时间了,想要放到testing分支上,那就切到testing,然后merge my_feature进来,因为是个测试分支,commits的顺序无所谓,也就没必要用rebase (当然你也可以用rebase)另外,单独使用rebase,还有调整当前分支上commits的功能(合并,丢弃,修改commites msg)