第一步当然是下载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:
$ 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 branch2: message2
stash@{1}: On branch1: message1
恢复就选择想要的就可以了。
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