Categories: experience.

一切从模仿开始

https://github.com/teekcode/hello-github.git
上面的网址表明teekcode的用户下hello-github的项目仓库。

如果想要得到此项目源码(用来自己修改/学习),点击 fork 按钮.

于是我(teekcode)的(hello-github)项目的代码就到了你的github仓库。

这里假设你的username是[name]那么https://github.com/[name]/hello-github.git就是你的项目地址。(从teekcode那里fork来的)

这时clone到本地

打开linux终端(windows用户自行解决)

1
2
3
4
5
6
7
8
9
10
11
12
13
cd ~
git clone https://github.com/[name]/hello-github.git
cd hello-github
// make some changes to the project
git add .
git commit -m "修改原因,相关说明"
git push

自己new一个!

  • 起个名字 我们现在就叫newproject吧

    1
    2
    3
    4
    5
    mkdir newproject
    cd ~/newproject
    git init
  • 开始写代码 然后觉得想保存一下当前进度(一般是完成一个功能模块)

    1
    2
    3
    4
    5
    6
    7
    git add .
    git commmit -m "fist step"
    git remote add origin https://github.com/你的github的用户名/newproject.git
    git push origin master

上面这句话中origin是自己最后第二句定义的。master是分支。


我这个人从小记性不好,喜欢把东西都记下来

也可点击cheat sheet

git config

1
git config --list//查看用户信息

git log

1
2
3
4
5
6
7
git log --pretty=oneline//概要:(include 一串特征数字+名称)
git log //比较详细:(commit/author/date/以及作者commit -m的注释)
git log --stat//非常详细:(增改行数统计)
git log -p -2//(展开每次提交的内容差异,-2则显示最近两次)

git branch//增删分支,没有涉及合并。

1
2
3
4
5
6
7
8
9
10
11
12
13
git branch//查看分支
git branch -a//查看所有分支
git branch nb//新建分支
git checkout nb//切换到nb
(或一起做git checkout -b nb)
git branch//观察与第一次的变化
git branch -d newbranch//error
git checkout master//切换到master分支
git branch -d nb//删除创建的nb

gitlab多人合作

(此段落里面细节有待改进,不敢保证是最优策略)

group下有所有的开发人员,负责人创建project,然后默认会有一个master分支。

这里假设有一条master分支,另外开一条develop分支,devby分支上建每个人的分支,比如devbysb,这样每个人的开发都是线性的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
git clone <你的项目>
//一开始远程库的**devby**分支是在网页上建好的。
//通过在在本地建立跟踪远程分支,如下
git checkout -t origin/devbysb
git checkout <此处输入自己分支>//后建分支找不到可以git fetch一下
...(工作啦)
git add (~自己随意)
git commit -m "尽量把此次工作描述清楚,让你在十年后看都知道这一步在干嘛"
//以上内容可以理解为你为主程序添加了功能,或加了补丁
git checkout develop//进入dev主分支
git pull//获取远端更新,此处不会冲突。
git checkout <自己的分支>
git rebase develop//冲突在这里解决
//实际上是把解决分支补丁同最新主干代码之间冲突的责任,化转为由提交补丁的人来解决。
//一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行rebase操作。
//如果你遵循这条金科玉律(虽然貌似是贬义词),就不会出差错。
//否则,人民群众会仇恨你,你的朋友和家人也会嘲笑你,唾弃你。*[4]
git checkout develop
git merge <自己的分支>
git push//不会产生冲突

Advantage:主干历史永远线性,每个人在本地解决冲突。

modified Mar 21 2015


##参考资料