java自学网(www.javazx.com)-java论坛,java电子书推荐:《GitHub入门与实践》
- t; U: i- u/ }. t1 N& j& ajava电子书推荐理由:git与全世界程序员分享你的代码 ,与全世界程序员分享你的代码! ) T5 _# Y# [5 K7 O E9 \5 R
1.代码审查不到位,审查效率低下 ) P$ \; `* X3 M, v
2.只有编程者本人能看懂的代码直接被部署至正式环境中
. p0 ~: c1 h) Q7 k5 s 3.因低级代码错误导致BUG频繁出现 5 o! U0 S/ ]3 U) e
4.会和其他人互相交流代码,共享知识
. A1 b: t3 Y( \5 G+ p/ J- @1 o) S. k* T" v$ E Y
作者:[日]大塚弘记 著,支鹏浩,刘斌 译
' g# R0 k& ]5 A* I; {! u出版社:人民邮电出版社
8 \- K1 Q3 Q+ _ H. y) {" }出版时间:2015年7月
% t4 G6 r! w' i8 @' j/ j" k
- ~8 h* v2 q! E) w2 r- m; U9 V9 K; ]% Y# Y% r* K/ E
! U: q1 `$ e- e9 S8 ~+ o
) g! A) T2 n& A) n& e& X
- {" Z% V P: j8 U9 @, v9 fjava电子书目录:
" C0 J2 f* G/ ?- Y0 }第1章 欢迎来到GitHub的世界
5 H9 W( M/ T. b/ h* P1 u1.1 什么是GitHub/ E. O3 ^" ?# P1 p5 ]7 U
GitHub公司与octocat2 ?; A/ T% R" A
并不只是Git仓库的托管服务
" V* R) O8 d6 n% A" A) [GitHub的使用情况
% B: C: C0 N9 ^& z& `Column 专栏:GitHub与Git的区别
- ^; d! c! R" y p1.2 使用GitHub会带来哪些变化
, B( `: @2 F- f1 ?8 z$ M: F; [协作形式变化$ |. x5 g! K! I; {# K# e K
在开发者之间引发化学反应的Pull Request# ]2 J" p5 x3 i
对特定用户进行评论4 @1 i4 t$ U* ?6 Z, y# m( A
GitHub Flavored Markdown c5 z- R1 K% p+ ]
Column 专栏:还可以这样写!!3 d) V3 _+ K, U
能看到更多其他团队的软件1 `- j, K6 }( d2 ?* Q: V
与开源软件相同的开发模式5 x P0 i+ R, S0 M9 o, U( F' G$ F
1.3 社会化编程
8 P, w1 q1 h: y* A) y1.4 为什么需要社会化编程
& k1 g% d" E+ ~; Y& ^% N不要闭目塞听,要接触不同的文化
" N1 O; u/ u. r1 g& W4 Y会写代码的程序员更受青睐9 q3 @7 M( e- ~( L
GitHub最大的特征是“面向人”
4 s J2 [/ Z0 A2 p1.5 GitHub提供的主要功能
( T7 F4 V( n" R+ o* x, c2 pGit仓库
8 _1 [& m. S3 S; X% K6 cOrganization" v; D3 L$ O2 C. s* Z
Issue. J- z+ s. O/ z4 G) i {3 i, f
Wiki
9 v9 L6 f( Z+ y, c0 \Pull Request
/ U8 T3 B1 y: E! X) r( p" LColumn 专栏:GitHub上受到瞩目的软件
x( b9 A/ _/ W* ~1.6 小结; S& I6 s/ ]0 c0 @/ j. h. Y0 [: [, ?
参考资料
; v5 m0 O4 [. }0 K% t第2章 Git的导入
7 r( J" R6 K }0 A* X) Z! a2.1 诞生背景
: q# t# q& u0 [! N b/ r& ~/ o2.2 什么是版本管理& ?# X3 [, T& j
集中型与分散型
/ m: L$ c) f% \$ L( l8 j. ^集中型( D$ t2 ]3 v) x; g/ i
分散型- r6 U- T* v# D# o0 {2 O2 C( d+ E; @
集中型与分散型哪个更好2 [2 N" y4 o. L
2.3 安装3 b7 D5 ^% ]5 \1 Z
Mac与Linux" d5 |+ O- @, E3 ^" s' l
Windows+ l) b5 ?3 C1 t. {: `
组件的选择% ^) H: }5 d8 o
设置环境变量# m; }1 ^; J! T% l
换行符的处理
' X5 W0 C& m3 i; Z: C$ GGit Bash0 j! ]) D' ~+ V- h- ~4 i
本书所用的环境) @6 R; o% D: B: l
2.4 初始设置( Y2 r5 ? u* ^6 |4 E
设置姓名和邮箱地址
2 B; U8 d; y& @ s提高命令输出的可读性
' a, ]" a/ [. @2 ~2 d2.5 小结
% P4 f2 B& W9 R
第3章 使用GitHub的前期准备9 S9 p/ ~" L" X4 f
3.1 使用前的准备
3 |/ q9 L' q! l# @1 g创建账户
5 k" g( c' D& I. R( ]) k4 B* [) q设置头像
. I/ o; g+ _' Y" `设置SSH Key
: W( R1 J4 Z2 U) K4 [添加公开密钥
: @0 A$ u- x7 `5 C使用社区功能
% q3 m( M+ W% }1 C- U3.2 实际动手使用
( u( I/ ~* q$ x创建仓库
. h7 z6 | k8 H5 {) l4 O& eRepository name, O7 e4 B0 R0 n8 T2 D0 B
Description
- J& F/ k( X$ d! d% yPublic、Private; R) n4 }% k3 g4 m6 G- {
Initialize this repository with a README" R0 x& h+ U4 x* F# [4 H
Add .gitignore
; ?3 ^8 V. ^; j0 w& R1 q i4 ZAdd a license0 Y. z6 O$ [2 m- [+ |3 f
连接仓库
0 [- T; W( S: {( T Y, t0 xREADME.md
# v! e4 S. |' ~GitHub Flavored Markdown
5 t2 O! n, n3 o+ {9 O公开代码( f3 A* v: u4 \; H w O7 {, f7 P4 m
clone已有仓库$ U; b) O# C9 U3 A0 s3 q% J
编写代码
- k2 T3 w, }& S/ t提交- g) Y3 F9 D9 l7 `
Column 专栏:公开时的许可协议
& }5 ~; |2 s( o1 _进行push
; E7 w1 f" [& r0 C& L3.3 小结
, i9 G5 m( C; ~! @第4章 通过实际操作学习Git3 ]; {! @5 W; |# B* R5 s. o
4.1 基本操作
7 k F& T: y# c( _git init--初始化仓库% T: w$ d' j& U
git status--查看仓库的状态
/ `6 R6 S! i c1 u" mgit add--向暂存区中添加文件/ j# \, X% O3 c5 X
git commit--保存仓库的历史记录3 v: I L. [) l1 M: I$ p; X
记述一行提交信息
/ F( o8 ?" K/ Q- y' C: j; k2 y" }" f记述详细提交信息
& L5 H& O" L. T# R6 _" Y- x* ~中止提交! o1 D) E- z+ _/ ` o0 H
查看提交后的状态9 v+ i; a2 \; J9 j- H x
git log--查看提交日志
8 n7 y6 z( n3 m& V1 L只显示提交信息的第一行/ G: F) l/ k. x% _
只显示指定目录、文件的日志, |+ L0 m. O0 o' o! C
显示文件的改动2 {! t& G$ h1 x
git diff--查看更改前后的差别" h, B6 Z$ N# S8 ^+ t# c* i
查看工作树和暂存区的差别 d7 p% A2 Q0 h1 Z, c
查看工作树和最新提交的差别; ], F8 ]$ i% g, B
4.2 分支的操作 f+ S3 r3 x8 T
git branch--显示分支一览表
4 D; H- A/ ~1 F) f& o! g) ?1 {$ Jgit checkout -b--创建、切换分支
1 K; j+ a) j, B4 d$ ~切换到feature-A分支并进行提交
7 G8 ?( ?2 z& G! L1 F9 Y R切换到master分支
' N% Y4 \5 m7 c; G' ^6 M1 X切换回上一个分支4 z3 \( r5 ?3 h( f
特性分支
3 z7 F7 z M% B0 b主干分支. _' I+ E. v; s; u
git merge--合并分支( {. g" s4 m. v6 B6 m2 B
git log --graph--以图表形式查看分支
. ^& J5 | c& O2 b/ U9 @4.3 更改提交的操作
) d7 y6 h7 E, V) `! ?/ g8 j: Sgit reset--回溯历史版本
. i6 _9 ?& R* Y" o回溯到创建feature-A分支前8 x- F' k3 z) f$ y- E
创建fix-B分支
0 M2 J9 m, J, h: a推进至feature-A分支合并后的状态
; G# q6 q% Q# s: b/ o消除冲突
7 X! z( i' F2 m6 _8 ~$ y* c查看冲突部分并将其解决
/ n& P( y! |1 ~, J; `提交解决后的结果
6 Y2 G8 @9 [' B. Q1 Qgit commit --amend--修改提交信息
3 }" i" _" ~& r, B n0 Z0 U1 u% _git rebase -i--压缩历史$ |+ t+ T4 X; {* V0 j
创建feature-C分支" @8 H: S% e' ?7 K, U* H
修正拼写错误0 w# |6 m o7 j% ?# R- B1 f" C' k
更改历史! x4 s2 A' C% L' m& o
合并至master分支' U( d4 a/ E) `1 Y# J3 H; {
4.4 推送至远程仓库
R6 b( z! h4 z* g" L( wgitremote add--添加远程仓库, S4 \/ r0 L, T4 I
git push--推送至远程仓库: [! W" Q* c2 M6 n) B2 n- h
推送至master分支, i/ t" U& ~$ X& r2 D
推送至master以外的分支 \$ b, p( w/ k' F( u' w' i {% z) R
4.5 从远程仓库获取* V$ H9 O6 S; R5 f" [6 Y
git clone--获取远程仓库& [5 H9 s- ]% ^6 l9 }3 m$ r5 q
获取远程仓库! `6 o' T, l! Y F' ^. m% F
获取远程的feature-D分支0 J4 ]% d4 e' c) `. u+ r1 l
向本地的feature-D分支提交更改) ~" @2 x, t4 U
推送feature-D分支
7 e- b" f4 d# Z1 A' I$ v ~git pull--获取最新的远程仓库分支
; l( d3 T. {6 E5 a, L, d$ A, X& u( p4.6 帮助大家深入理解Git的资料" u1 ]: Y# o* i, e# d3 R/ D
Pro Git \* U) r% @6 c' E7 y! q
LearnGitBranching
$ v' u3 Q! r% M' OtryGit
! J7 X- p$ p4 n% ?& U( S0 r( h4.7 小结
: B6 n, n9 b5 |, b# [7 P( \
第5章 详细解说GitHub的功能
" Y, ]; }7 z1 n1 ?9 g, g9 D. |2 I5.1 键盘快捷键
9 w8 D& E4 g2 t! T, J5.2 工具栏* @; k9 v ~; {+ V: P- ^1 V6 Q
关于UI
3 U" U6 v) a; c) _ V1LOGO+ e/ r3 A3 n+ ?$ M8 d1 j
2Notifications) ]* T3 l+ j' c+ m
3 搜索窗口
* Q/ v: ? T* f0 j6 h" J( I4Explore0 t E' O4 R: w+ r9 V
5Gist
5 k5 e5 B9 M) y0 p6Blog, k- z" x4 L+ r' b# A a0 _
7Help5 i+ ~* r, C \$ q) D
8 头像、用户名7 {3 e, } X+ u# w& ^- k( W5 a
9 Create a new$ D3 n& |2 ^# y @% ]
Account settings
3 [! j i' Q' aSign out' w8 y9 |2 f& ]3 v* [; k, K' @
5.3 控制面板
8 s% }; {" t( w0 Y) E+ }关于UI( f/ w/ V) [. S3 X
①News Feed" [5 M4 o# d# i8 G$ B b: v
②Pull Requests
H/ [3 E8 q4 Q t7 v③Issues( g9 e7 l' |4 b( n
④Stars
, X7 ^* T' b6 Q; N, {⑤Broadcast) T4 A# h7 l* T' L4 Y) l
⑥Repositories you contribute to
4 t- z* _# V- q: F⑦Your Repositories
0 _: ^( x/ p. C9 E9 n5.4 个人信息$ e9 d/ v( ^$ Q1 j4 V
关于UI
0 P( |% ~4 a+ i1 用户信息4 Y3 V4 l+ X* y
2Popular Repositories
& m* e, D9 Y4 ?5 A3Repositories contributed to4 R9 l5 G$ c9 C) H2 b. h( [3 u
4Public contributions
7 b/ K9 ?- G% C& W' D/ V; i5Contribution Activity4 ^) ?5 X- p; `4 h+ X* f9 G
6Repositories1 X& S/ d2 {) P7 Q# ?0 ~( ` Y
7Public Activity: c4 g# B4 [* i9 C: a
5.5 仓库2 D/ h% c% S# O2 \# U# O2 b
关于UI
; A/ |6 M& @9 A! c①用户名(组织名)/仓库名
' r2 _7 m6 {0 W8 P& r7 R8 z②Watch/Star/Fork9 \: H7 s1 l1 I2 A2 p! G
③Code
& y. ^4 k/ b' D④Issue( B' M2 u6 P8 y
⑤Pull Requests
: P4 w1 n5 O0 w- \5 N⑥Wiki5 x# {: R, [2 ^) m' v
⑦Pulse% u# U6 r" b9 `! [% c8 U
⑧Graphs2 s- {# `0 c, C' p0 [5 }- j
⑨Network$ o* D4 M1 y9 v+ W+ L1 Y4 D a' x
⑩Settings
1 E1 U5 K5 D7 c4 ~; j6 S" i+ f% o7 E?SSH clone URL
1 q# f5 ]- N D# W7 {. Y?Clone in Desktop
2 B9 j( a8 P: V+ |# o, c q3 }?Download ZIP
Q4 `$ Q9 N. E3 C: sacommits8 g; T' i' B8 Y5 Y k
bbranches; Z( r3 y' G9 O( t( x3 y) j
creleases
0 b# ~2 E" x1 T6 G8 ~5 ~% Fdcontributors
1 @. d% i% {% u- @+ f. p3 ~$ Q. ]eCompare & review
2 [; n5 ?; u5 e/ b5 gfbranch
3 N% f& l' }9 Q3 qgpath# P% U4 ?" F7 s, x6 H& \
hFork this project and Create a new file( u0 w/ L7 \% a3 J7 \! ^' f
ifiles0 n9 v, L8 B; B9 p9 o* T
文件的相关操作; n, ?8 r: @9 w( d
Column专栏:通过部分名称搜索文件+ E% O y; k+ q
查看差别: \. p' D3 n8 a. ~& f' l" C
查看分支间的差别
f7 N& Y& t4 o7 `: ?9 ^4 x查看与几天前的差别/ |, @; m( Y% R3 c: s+ T5 w; w/ B
查看与指定日期之间的差别' t$ C7 C6 x* G7 L
5.6 Issue; V0 D9 T( D0 q* L/ c- ~4 m' h. ~) z
简洁且表现力丰富的描述方法
6 a5 Q6 [- y) }+ C语法高亮* W* g, J! U! I8 N, b$ \9 Q9 D
添加图片
3 S% L' D* ^8 i) d添加标签以便整理
4 A- K* M$ D. V添加里程碑以便管理
1 R9 \/ E. T0 F7 u- U9 q/ [Column 专栏:了解贡献时的规则!
Y; ?' r; S+ G, K# {& ]5 J9 f5 RTasklist语法( @% r9 z5 C/ a/ F4 F' ^" K! N
通过提交信息操作Issue0 k4 Q. p% d" _0 g2 g
在相关Issue中显示提交
2 Z2 ], j8 a7 ~$ _+ y0 @Close Issue/ Q% b% c7 Y# O, A* g
将特定的Issue转换为Pull Request! z/ b }1 u1 {" e
5.7 Pull Request, Q" V" o8 o; p
Column 专栏:获取diff格式与patch格式的文件 Q& f+ T( g8 @9 x, @( c
Conversation
8 W. Q3 F6 S: XColumn 专栏:引用评论9 [1 K4 L7 @" k2 V+ S. f
Commits9 c6 i" T% Q" _# F4 h
Column 专栏:在评论中应用表情' w, t u( X! B; T% B! a
Files Changed, A" A, `+ f1 {7 o& Q
5.8 Wiki
5 n2 _$ v4 [1 B& q/ c/ W3 HPages
6 O5 K2 r d4 a; jHistory
6 ~0 \/ A; s8 J+ ]! _$ oColumn 专栏:在Wiki中显示侧边栏
( Q T# Y, K R# ?, p7 x" \5.9 Pulse0 s, y# j% A7 J4 V2 \* l
active pull requests
% G/ H9 l& u8 |4 o# vactive issue e& F" K$ I5 [# B0 N: M+ o
commits
! K9 S& u* i2 h: V* a8 tReleases published; D! t3 r0 C: y R/ c2 Q+ u1 C0 |
Unresolved Conversations
( O7 q7 D+ B% C+ c& c6 ]6 v5.10 Graphs
( e9 q P! W- v1 u( WContributors
, T9 h) K. F8 `Commit Activity
1 v8 Y% p' X) z, A7 b( P( _7 m第6章 尝试Pull Request
7 [+ S2 Z2 s4 N! R' a第7章 接收Pull Request前的准备- b4 r+ B- o9 S+ M5 W7 x& e: x
第8章 与GitHub相互协作的工具及服务
( g& P% c6 \- k' d第9章 使用 GitHub的开发流程" _* A; R. \4 f/ I
第10章 将GitHub应用到企业: r% n' A6 [7 n3 T2 }9 N$ ~
附录A 支持GitHub的GUI客户端4 r$ Y9 }" ~2 h# Z8 l; a+ b5 x
附录B 通过Gist轻松实现代码共享
5 g+ K& d# S @; }/ x$ R" x7 e) b/ }. D; U
百度网盘下载地址链接(百度云):java自学网(javazx.com)GitHub入门与实践 PDF 高清 电子书 百度云.zip【密码回帖可见】
7 `# y/ z* i( s+ [: N8 E; {9 A+ G; [+ d4 r! p2 v( Y5 I
! z* ?: D& E5 D' c e- m8 f
8 H7 N( }8 `1 ]6 d) M
1 I4 i8 o0 Q% [7 }4 T7 Q
( v% p2 Z6 P6 D5 h6 L& X |