用git管理源码
git管理源码,好处自不必说。学习git参考的是《pro git》。
该书的豆瓣链接:http://book.douban.com/subject/3420144/
关于文件的修改:
如果,自己想添加新的文件。最好是,自己建立一个分支:
git branch new-branch //建立新的分支
git checkout new-branch //切换到新的分支下工作
这时候,可以添加或者修改文件。
注意,这个时候,该分支下新添加的文件与master分支是没有一点关系的。
另外,说一下git revert ,git reset --hard和 --soft的区别
git reset --mixed id ,是将git的HEAD变了(也就是提交记录变了),但文件并没有改变,(也就是working tree并没有改变)。
git reset --soft id. 实际上,是git reset --mixed id 后,又做了一次git add
git reset --herd id.是将git的HEAD变了,文件也变了。
git revert与git reset最大的不同是,git revert 仅仅是撤销某次提交。
比如git revert HEAD~1 ,那么会撤销倒数第二次的提交结果。而倒数第一次的提交记录,仍然在。
如果git reset --hard HEAD~1,那么,commit退回到倒数第三次的状态中。
总体来讲,还是git revert 好啊,雁过留声嘛。
其实,通过git reset --soft id的方法,可以将原来多次的git提交记录合并为一个。
两个分支的合并:(分支也就是版本的意思)
git pull . 分支1, 将分支1的变化提交到分支2。
在分支合并部分,不要用git merge 和 git push。容易出错。
另外,还有一种分支合并的方法是rebase。这种方法,更符合思维。
git checkout A1
git rebase master
过程是,找到将A1和master的共同commit点。A1 把自分叉以来的所有补丁都达到master上。相当于:
git checkout master
git pull . A1
----or----
git checkout master
git merge A1
关于查看git 记录。
git whatchanged 可以查看最近两次提交记录,以及文件的变更。
git log 可以查看所有的git提交记录。另外,一些参数,也是很有用,比如 -p -N -stat
git diff 版本1 版本2 可以查看两个分支的差异。
主要,就是这些了。以后再有什么新的需求,一并写过来。
---
git add -i 竟然还有交互模式。很方便,不过自己仅仅使用了其中的一条。
本地-服务器查看:
omycle@omycle-desktop:/home/sda4/work/neo$ git remote show origin
* remote origin
Fetch URL: git://211.69.198.249/neo.git
Push URL: git://211.69.198.249/neo.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull': //如果git pull 缺省状态是用master分支
master merges with remote master
Local ref configured for 'git push': //如果git push 缺省状态是到master分支
master pushes to master (up to date)
如果距离上一次clone 有一定时间了,那么服务器一定是做过了不少更新工作,怎样将新的更新同时同步到本地呢?
git fetch origin
为啥用origin呢,因为,我们在clone的时候,建立默认的远程仓库名的别名 origin/master,就表示远程仓库上的master分支。因此,就用git fetch origin.意思就是,让存放在本地的origin/master分支与服务器同步。
关于diff:
git diff 要查看尚未暂存的文件(还没有git add 之前)更新了哪些部分,不加参数直接输入 。
git diff -cached 已经暂存文件更新了那些部分,也就是git add 之后,git commit之前。
其实,要是看文件具体更改详情的话,用git log,也可以。
git log -p -n,n是看最近的n次记录。
建立git服务器:
建立git服务器,其实很简单,特别是对于项目成员比较少的情况下。
比如,在本地有一个test目录,里面是要共享的项目。那么:
git clone --bare test.git test
这样,就建立了test.git了。其他成员就可以共享了。
例如:
对于我来说,用omycle@192.168.227.101就可以通过SSH的方式远程git clone 项目了。
git clone omycle@192.168.227.101:~/test.git
步骤真是简单啊。
当然,麻烦的步骤是,在一个新的目录里面git初始化后,运行:
git remote add origit omycle@192.168.227.101:~/test.git
git fetch origin
git pull origin master
这样,就可以了。
该书的豆瓣链接:http://book.douban.com/subject/3420144/
关于文件的修改:
如果,自己想添加新的文件。最好是,自己建立一个分支:
git branch new-branch //建立新的分支
git checkout new-branch //切换到新的分支下工作
这时候,可以添加或者修改文件。
注意,这个时候,该分支下新添加的文件与master分支是没有一点关系的。
另外,说一下git revert ,git reset --hard和 --soft的区别
git reset --mixed id ,是将git的HEAD变了(也就是提交记录变了),但文件并没有改变,(也就是working tree并没有改变)。
git reset --soft id. 实际上,是git reset --mixed id 后,又做了一次git add
git reset --herd id.是将git的HEAD变了,文件也变了。
git revert与git reset最大的不同是,git revert 仅仅是撤销某次提交。
比如git revert HEAD~1 ,那么会撤销倒数第二次的提交结果。而倒数第一次的提交记录,仍然在。
如果git reset --hard HEAD~1,那么,commit退回到倒数第三次的状态中。
总体来讲,还是git revert 好啊,雁过留声嘛。
其实,通过git reset --soft id的方法,可以将原来多次的git提交记录合并为一个。
两个分支的合并:(分支也就是版本的意思)
git pull . 分支1, 将分支1的变化提交到分支2。
在分支合并部分,不要用git merge 和 git push。容易出错。
另外,还有一种分支合并的方法是rebase。这种方法,更符合思维。
git checkout A1
git rebase master
过程是,找到将A1和master的共同commit点。A1 把自分叉以来的所有补丁都达到master上。相当于:
git checkout master
git pull . A1
----or----
git checkout master
git merge A1
关于查看git 记录。
git whatchanged 可以查看最近两次提交记录,以及文件的变更。
git log 可以查看所有的git提交记录。另外,一些参数,也是很有用,比如 -p -N -stat
git diff 版本1 版本2 可以查看两个分支的差异。
主要,就是这些了。以后再有什么新的需求,一并写过来。
---
git add -i 竟然还有交互模式。很方便,不过自己仅仅使用了其中的一条。
本地-服务器查看:
omycle@omycle-desktop:/home/sda4/work/neo$ git remote show origin
* remote origin
Fetch URL: git://211.69.198.249/neo.git
Push URL: git://211.69.198.249/neo.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull': //如果git pull 缺省状态是用master分支
master merges with remote master
Local ref configured for 'git push': //如果git push 缺省状态是到master分支
master pushes to master (up to date)
如果距离上一次clone 有一定时间了,那么服务器一定是做过了不少更新工作,怎样将新的更新同时同步到本地呢?
git fetch origin
为啥用origin呢,因为,我们在clone的时候,建立默认的远程仓库名的别名 origin/master,就表示远程仓库上的master分支。因此,就用git fetch origin.意思就是,让存放在本地的origin/master分支与服务器同步。
关于diff:
git diff 要查看尚未暂存的文件(还没有git add 之前)更新了哪些部分,不加参数直接输入 。
git diff -cached 已经暂存文件更新了那些部分,也就是git add 之后,git commit之前。
其实,要是看文件具体更改详情的话,用git log,也可以。
git log -p -n,n是看最近的n次记录。
建立git服务器:
建立git服务器,其实很简单,特别是对于项目成员比较少的情况下。
比如,在本地有一个test目录,里面是要共享的项目。那么:
git clone --bare test.git test
这样,就建立了test.git了。其他成员就可以共享了。
例如:
对于我来说,用omycle@192.168.227.101就可以通过SSH的方式远程git clone 项目了。
git clone omycle@192.168.227.101:~/test.git
步骤真是简单啊。
当然,麻烦的步骤是,在一个新的目录里面git初始化后,运行:
git remote add origit omycle@192.168.227.101:~/test.git
git fetch origin
git pull origin master
这样,就可以了。
Why are you so professional on this?
回复删除过奖了。术业有专攻嘛,呵呵。
回复删除