现在的位置: 首页 > 综合 > 正文

Git–使用心得

2014年02月28日 ⁄ 综合 ⁄ 共 1958字 ⁄ 字号 评论关闭

第一步当然是下载git工具,不做记录了,部分命令用到时再做记录,没用过就暂不留


git clone:

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

git checkout -b new branch—name:

创建一个新的branch,使用命令

$ git checkout -b new v2.6.13


git checkout: 切换到新的branch

一开始使用git branch --all命令查看,发现自己新创建的分支没有找到,这里需要先同步一下代码, 使用 :git fetch origin;

我以前一般切换到某个分支,如development,则使用:git fetch origin development 或git pull origin development,这样只能同步对应的分支。

如果需要更新所有的分支信息,则直接使用:git fetch origin 或 git pull origin即可

root@MRCAndroid07:/home/project/kernel# git fetch origin

remote: Counting objects: 15, done.remote: Compressing objects: 100% (8/8), done.remote: Total 8 (delta 7), reused 0 (delta 0)Unpacking objects: 100% (8/8), done.From ssh://nsrd/project/kernel/omap

 * [new branch]      bac      -> origin/bac        //找到了新的branch

root@MRCAndroid07:/home/project/kernel# git branch --all   //列出所有的分支* master  remotes/origin/abc

  remotes/origin/working

root@MRCAndroid07:/home/project/kernel# git branch   //当前使用的分支* master  root@MRCAndroid07:/home/project/kernel#git checkout abc  // 这里就切换到了对应的abc 分支了,呵呵Checking out files: 100% (39411/39411), done.Branch abc set up to track
remote branchabc from origin.

Switched to a new branch 'abc'

git stash: 

参考http://segmentfault.com/q/1010000000184974,自己也需要了同样的疑问

在 Ruby 中文看到的 stash 的用法,
后来还真的用上了...

在多个分支切换的时候, 未提交的代码用 stash 暂存,
然后干啥干啥回来 
apply
可这样一来我从不敢存两个, 栈里的东西一多, 马上就容易记错
.. 这样还不如先 commit,
之后 
reset HEAD^ --soft 来回滚不是么
我也在想, 为什么 Git 不是默认 Stage 上的改动是自动归类到 branch 里面的呢?
如果那样, 不是每次在每个分支上做修改都不会影响到别的分支了么?
...想来 Git 有他的道理, 求讲解...
同时我也想有个更好的方案来应对切换分支时未保存的修改的问题..

存多个可以添加备注信息。

git stash save "message"

stash list 里面也有branch信息

git stash list

stash@{0}: On branch2message2
stash@{1}: On branch1message1

恢复就选择想要的就可以了。

git stash pop stash@{1} 

在不同分支切换stash应该是最好的方案了。

git reset --hard / --soft:

http://www.douban.com/note/189603387/ 参考了这篇博客,非常感谢

解决问题:1)恢复到某个版本 2)commit后,没有提交成功代码,去掉commit,但是保留代码 3)commit后,发现有问题,取消push上去的代码

git reset --hard commit-label

恢复到某个版本,原来修改的代码会丢失

git reset --soft commit-label

恢复到某个版本,但是如果之前有commit修改过代码,则还是会保留修改的代码,只是删除了commit信息

Reference:

https://www.kernel.org/pub/software/scm/git/docs/user-manual.html#repositories-and-branches

抱歉!评论已关闭.