首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

5.2 分布式 Git - 向一个项目贡献

是否甚至有一个如何贡献的规范? 你一次贡献多少工作? 你多久贡献一次? 所有这些问题都会影响实际如何向一个项目贡献,以及对你来说哪些工作流程更适合或者可用。...依然可以得到像离线提交、非常容易地新建分支与合并分支等高级功能,但是工作流程可以是很简单的;主要的区别是合并发生在客户端这边而不是在提交时发生在服务器那边。...在一个你不是维护者的项目上,通常有一个总是跟踪 origin/master 的 master 分支会很方便,在特性分支上做工作是因为如果它们被拒绝时你可以轻松地丢弃。...这意味着你的未来的提交将会只有一个父提交,并允许你引入另一个分支的所有改动,然后在记录一个新提交前做更多的改动。 同样 --no-commit 选项在默认合并过程中可以用来延迟生成合并提交。...区别是如何提交它们到项目中。 生成每一个提交序列的电子邮件版本然后邮寄它们到开发者邮件列表,而不是派生项目然后推送到你自己的可写版本。

58820

利用Git钩子实现代码发布

客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。 2、安装一个钩子 钩子都被存储在Git目录下的hooks子目录中。...它对一般的提交来说并没有什么用;然而对那些会自动产生默认信息的提交,如提交信息模板、合并提交、压缩提交和修订提交等非常实用。你可以结合提交模板来使用它,动态地插入信息。...它接受远程分支的名字和位置作为参数,同时从标准输入中读取一系列待更新的引用。你可以在推送开始之前,用它验证对引用的更新操作(一个非零的退出码将终止推送过程)。...假如推送者同时向多个分支推送内容,pre-receive只运行一次,相比之下update则会为每一个被推送的分支各运行一次。...用git init初始化的版本库用户也可以在该目录下执行所有git方面的操作。但别的用户在将更新push上来的时候容易出现冲突。

1.5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    8.3 自定义 Git - Git 钩子

    客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。 你可以随心所欲地运用这些钩子。...安装一个钩子 钩子都被存储在 Git 目录下的 hooks 子目录中。 也即绝大部分项目中的 .git/hooks 。...如果需要靠这些脚本来强制维持某种策略,建议你在服务器端实现这一功能。(请参照 使用强制策略的一个例子 中的例子。) 提交工作流钩子 前四个钩子涉及提交的过程。...你可以在推送开始之前,用它验证对引用的更新操作(一个非零的退出码将终止推送过程)。 Git 的一些日常操作在运行时,偶尔会调用 git gc --auto 进行垃圾回收。...假如推送者同时向多个分支推送内容,pre-receive 只运行一次,相比之下 update 则会为每一个被推送的分支各运行一次。

    1.5K20

    8.4 自定义 Git - 使用强制策略的一个例子

    你还需要让 update 钩子检阅这些规则,审视推送的提交内容中被修改的所有文件,然后决定执行推送的用户是否对所有这些文件都有权限。 先从写一个 ACL 文件开始吧。...使用 git log 的 --name-only 选项(在第二章里简单地提过),我们可以轻而易举的找出一次提交里修改的文件: $ git log -1 --name-only --pretty=format...虽然你可以在相同或单独的项目里加入并分发这些钩子,但是 Git 不会自动替你设置它。 首先,你应该在每次提交前核查你的提交信息,这样才能确保服务器不会因为不合条件的提交信息而拒绝你的更改。...出现一个不是快进(fast-forward)的引用有两种情形,要么是在某个已经推送过的提交上作变基,要么是从本地推送一个错误的分支到远程分支上。...下面是一个检查这个问题的 pre-rebase 脚本示例。 它获取所有待重写的提交的列表,然后检查它们是否存在于远程引用中。

    89340

    史上最全​Git使用手册

    因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。...master第一次推送master分支的所有内容; 此后,每次本地提交后,只要有必要,就可以使用命令 git push origin master推送最新修改; 分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在...你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。...不过,从现在开始,对工作区的修改和提交就是针对 dev分支了,比如新提交一次后, dev指针往前移动一步,而 master指针不变: ?...总之,就是在Git中,分支完全可以在本地自己藏着玩,是否推送,视你的心情而定! 便签管理 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。

    2.3K50

    Git总结笔记1-搭建和使用30条简明笔记

    ,是否已提交)  6.通过 git diff  查看当前内容和分支中最新版本的内容的修改情况(查看清楚修改了什么内容后就放心提交了git add )  7.通过...:kangvcar/learngit.git把本地仓库和远程GitHub仓库关联(url从github的repo项目里可以找到)  17.通过 git push -u origin master 把本地仓库的所有内容推送到远程库上...(第一次使用加上了-u,是推送内容并关联master分支。...(–on-ff 参数表示用普通模式合并,而不是快速模式;快速模式合并后会删除合并前的分支,而普通模式不会删除)(用此命令代替git mergo dev) 26.通过 git log --graph ...)(命令后面可以接参数来恢复指定stash,如git stash apply stash@{0} ,stash@{0} 通过git stash list 查看)  30.

    30620

    git 学习笔记 原

    log --pretty=oneline 显示简短信息 首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^...有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后, 合并分支,然后将临时分支删除。...当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交: 并不是你不想提交,而是工作只进行到一半,还没法提交...如果没有推送权限,就看不到push的地址。 推送分支 推送分支,就是把该分支上的所有本地提交推送到远程库。...$ git commit -m "add /usr/bin/env" $ git push origin dev  你的小伙伴已经向origin/dev分支推送了他的提交,而碰巧你也对同样的文件作了修改

    49330

    【Android开发丨主题周】Android Studio中的13条Git实践

    提交和推送 下载安装完Git之后,可以检查一下在Android Studio中的Git路径配置是否正确。...当我们再次修改代码进行提交时,就不用上述这么麻烦了,可以直接单击工具栏中的提交按钮,完成第二次提交和推送即可。提交和推送对应Git命令为:git commit和git push。 4 ....因为在团队开发中,一个分支可能有多个开发者提交推送,那么我们本地保存的远程分支的提交记录就有可能不是最新的,所以可以通过Fetch来进行更新。操作为:单击菜单栏VCS→Git→Fetch。...假设本地master分支多了一个第三次提交,而origin/master分支多了一个其他开发者的提交。这时本地master分支是无法将第三次提交推送到远程代码仓库的。...例如,我们在feature分支做了一个提交“待重置”,然后想重置到上一次提交“完成一个feature开发”,这时可以用鼠标选中“完成一个feature”开发的提交,单击右键,如下,在弹出的选项中选择“Rest

    1.7K20

    Git 入门指南:如何高效管理你的代码库

    可以在网络连接不稳定的情况下继续工作,等到合适的时机再推送更改。 版本历史和快照 Git 会记录每次提交的快照,而不是像其他版本控制系统那样记录差异(差异文件)。...提交(commit)时,Git 会为每次提交生成一个唯一的哈希值(SHA-1),这使得每个提交都可以通过哈希值唯一标识。...安装 Git 在 Linux (Ubuntu)系统中,使用以下命令来安装 Git : sudo apt update sudo apt install git 使用 git --version来查看是否安装成功...补充:我们进到到 test 目录里,使用 ls -al 指令,如下图: 仓库目录其实是工作区,并不是真正的本地仓库,也就是说你在仓库目录写的代码需要手动上传到本地仓库中。...暂存区存在的意义:当你需要多次提交时候,你就可以将多次提交的文件存放在暂存区,最后一次性上传到本地仓库。

    15810

    Git 简单入门(一)

    Git 的使用 版本库 版本库就是一个仓库/目录,这个目录里面的所有文件都可以被Git管理 创建版本库 创建一个空目录 在命令行中进入该目录,执行下面的命令 git init 可以发现当前目录下面多了一个...-m [message] # 提交工作区自上次commit之后的变化,直接到仓库区 $ git commit -a # 提交时显示所有diff信息 $ git commit -v # 使用一次新的...工作区是电脑中项目的目录,能够看到的 版本库 版本库是工作区中的 .git 目录,其中中的要的是 stage/index 的暂存区和git自动创建的一个分支 master 以及指向master的一个指针...上上一个版本是 HEAD^^ ,上100个版本是 git git reflog 查看所有历史命令 管理修改 第一次修改-> git add -> 第二次修改 -> git commit 这样第二次修改的内容将不会被提交...默认的叫法,也可以改成别的 将本地库的所有内容推到远程库上 git push -u origin master 第一次推送master分支是加了 -u 参数,Git 会把本地的master分支和远程的分支关联起来

    40820

    Git相关

    Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照。在进行提交操作时,Git 会保存一个提交对象(commit object)。该提交对象会包含一个指向暂存内容快照的指针。...git diff :查看尚未暂存的文件更新了哪些部分(注意,git diff 本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动) git diff --staged :查看已暂存的将要添加到下次提交里的内容...在创建完标签后你必须显式地推送标签到共享服务器上。 这个过程就像共享远程分支一样 - 你可以运行 git push origin [tagname]。...也就是说,在整个项目开发周期的不同阶段,你可以同时拥有多个开放的分支;你可以定期地把某些特性分支合并入其他分支中。...这样,在确保这些已完成的特性分支(短期分支,比如之前的 iss53 分支)能够通过所有测试,并且不会引入更多 bug 之后,就可以合并入主干分支中,等待下一次的发布。

    63520

    Git是什么,如何使用

    Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照。在进行提交操作时,Git 会保存一个提交对象(commit object)。该提交对象会包含一个指向暂存内容快照的指针。...git diff :查看尚未暂存的文件更新了哪些部分(注意,git diff 本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动) git diff --staged :查看已暂存的将要添加到下次提交里的内容...在创建完标签后你必须显式地推送标签到共享服务器上。 这个过程就像共享远程分支一样 - 你可以运行 git push origin [tagname]。...也就是说,在整个项目开发周期的不同阶段,你可以同时拥有多个开放的分支;你可以定期地把某些特性分支合并入其他分支中。...这样,在确保这些已完成的特性分支(短期分支,比如之前的 iss53 分支)能够通过所有测试,并且不会引入更多 bug 之后,就可以合并入主干分支中,等待下一次的发布。

    54510

    Git 基础命令与事件详解(基础版)

    将代码推送一次 git push 如果推送失败,可能原因是没有上游分支 git remote -v (查看是否添加了远程仓库) git remote add origin + 仓库地址 (添加远程仓库...4.将代码提交到本地仓库中 git commit -m "注释" 5.将代码推送到服务器端 git push  如果是第一次推送代码,需要配置远程分支。...git push -u origin master  检测目标分支是否存在,若不存在立即创建并推送 git push origin master  推送到指定分支  如果推送失败,可以 git remote...-v 查看是否添加了远程仓库  也可以使用 git push origin -f master 进行强制推送 常用命令 git init 初始化Git仓库 git pull 拉取数据并合并(...“我仍认为我们接受高等教育的目的是帮助我们的家乡摆脱贫困,而不是摆脱我们贫困的家乡。生如蝼蚁当有鸿鹄之志,为天地立心,为生民立命,为往圣继绝学,为万世开太平。”

    8500

    运维实用技能--Git常用命令(下部)

    命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。...不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变: ? 假如我们在dev上的工作完成了,就可以把dev合并到master上。...切换回master分支后,再查看一个README.md 文件,刚才添加的内容不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变: ?...有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。...总之,就是在Git中,分支完全可以在本地自己藏着玩,是否推送,视你的心情而定! 多人协作时,大家都会往master和dev分支上推送各自的修改。

    78320

    Git学习笔记(理论部分)

    这是 Git 区别于其它版本控制系统的一个重要特性,Git 克隆的是该 Git 仓库服务器上的几乎所有数据,而不是仅仅复制完成你的工作所需要文件。...请注意,git diff 本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。...以上的内容我并也不是特别理解,借鉴了廖雪峰的博客之后,我的理解是这样的:分支就是一条绳子,这条绳子的默认名字叫master,每次提交就相当于在绳子上打一个结,而进行每一次提交都会有一个指针指向最新的那个结...如果想要查看设置的所有跟踪分支,可以使用 gitbranch 的 -vv 选项。 这会将所有的本地分支列出来并且包含更多的信息,如每一个分支正在跟踪哪个远程分支与本地分支是否是领先、落后或是都有。...其实,还有一种方法:你可以提取在 C4 中引入的补丁和修改,然后在 C3 的基础上应用一次。 在 Git 中,这种操作就叫做 变基。

    53030

    Git 命令归纳总结

    我们在 派生的公开项目 的后面介绍了如何做一个 squashed merge (指Git 合并时将其当作一个新的提交而不是记录你合并时的分支的历史记录。)...在 发布子模块改动 一节中,我们使用 --recurse-submodules 选项来检查是否我们所有的子模块的工作都已经在推送子项目之前已经推送出去了,当使用子模块时这真的很有帮助。...在 其它客户端钩子 中我们简单的提到了 pre-push 挂钩(hook),它是一个可以用来设置成在一个推送完成之前运行的脚本,以检查推送是否被允许。...最后,在 引用规格推送 一节中,我们知道了使用完整的 refspec 来推送,而不是通常使用的简写形式。这对我们精确的指定要分享出去的工作很有帮助。...从一个分支单独一个或者两个提交而不是合并整个分支的所有变更是非常有用的。

    85240

    Git之添加远程库

    现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得...在Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库: ?...这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。...master第一次推送master分支的所有内容; 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改; 分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在...,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!

    46430

    【10】进大厂必须掌握的面试题-版本控制面试

    以下是一些基本的Git命令: ? Q7。在Git中,如何还原已经被推送并公开的提交?...为此,我将使用命令 git revert 提交的名称> Q8。您如何将最后N次提交压缩为一次提交? 有两种方法可以将最后的N个提交压缩为一个提交。...对于此答案,而不仅仅是告诉命令,请解释此命令的确切作用,这样可以说:要获取在特定提交中已更改的列表文件,请使用命令 git diff-tree -r {hash} 给定提交哈希,这将列出该提交中已更改或添加的所有文件...,并且–name-only将仅显示文件名,而不是其路径。...更新挂钩的工作方式与预接收挂钩类似,并且在实际进行任何更新之前也会被触发。但是,对于每次推送到目标存储库的提交,都会调用一次更新挂钩。 最后,在将更新接受到目标存储库之后,将调用存储库中的接收后挂钩。

    2.6K30

    Git入门学习到进阶2

    #把所有文件从工作区放入暂存区 git commit -m "comment" #把所有文件从暂存区提交进本地仓库;(提交后工作区和暂存区都为空) git push #把所有文件从本地仓库推送进远程仓库...WeiyiGeek.创建分支 (3) 不过从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变: (4) 假如我们在dev上的工作完成了...有了bug就需要修复在Git中,由于分支是如此的强大,所以每个bug都可以通过一个新的临时分支来修复,修复后合并分支,然后将临时分支删除。...(push) 推送分支,就是把该分支上的所有本地提交推送到远程库。...#注意这里需要将本地的dev推送到远程的origin/dev中 fc38031..291bea8 你的小伙伴已经向origin/dev分支推送了他的提交,而碰巧你也对同样的文件作了修改,并试图推送:

    93210

    Git入门学习到进阶2

    #把所有文件从工作区放入暂存区 git commit -m "comment" #把所有文件从暂存区提交进本地仓库;(提交后工作区和暂存区都为空) git push #把所有文件从本地仓库推送进远程仓库...WeiyiGeek.创建分支 (3) 不过从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变: (4) 假如我们在dev上的工作完成了...有了bug就需要修复在Git中,由于分支是如此的强大,所以每个bug都可以通过一个新的临时分支来修复,修复后合并分支,然后将临时分支删除。...(push) 推送分支,就是把该分支上的所有本地提交推送到远程库。...#注意这里需要将本地的dev推送到远程的origin/dev中 fc38031..291bea8 你的小伙伴已经向origin/dev分支推送了他的提交,而碰巧你也对同样的文件作了修改,并试图推送:

    1.1K20
    领券