您的位置:首页 > 其它

Git 学习

2015-12-01 20:53 190 查看
1、git文件的三种状态之间的转换: http://phplaber.iteye.com/blog/1699926 在该网址有详细的说明

版本回退 和 重返未来版本问题

当使用commit命令后,意味着你有了一个新的版本号,head指针指向新的版本位置, 要在回到不同版本,

当你回退到以前的版本时,首先 使用 git log命令,以便确定回退到那个版本, git reset --hard commit_id

当你要重返未来的版本时, 使用git reflog 命令查看命令历史,以便确定回到未来那个版本。

暂存区和工作区概念理解

我们直接看到的文件路径 就是工作区,当使用 git add命令时,即将工作区中的文件保存到暂存区,工作区的内容没有发生变化

,如果此时我们使用git commit命令,那么暂存区的内容就会被放到相应的分支中去,提交一次commit就会产生一个新的版本,

当commit命令后,暂存区的内容此时和 分支内容一样,并不是 网上说的 暂存区没有任何内容。 注意,commit命令提交到分支中的是暂存区的内容而不是

工作区的内容!

注意:
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013745374151782eb658c5a5ca454eaa451661275886c6000
这个 网站上说的 暂存区没有内容 是 错的 ,commit 之后暂存区的内容并不会消失

管理修改

git diff HEAD -- filename 命令可以查看工作区和版本库里面最新的区别。

git diff 查看working tree与index file的差别

git diff -cached 查看index file 与commit的差别

git diff HEAD 查看working tree 与commit的差别

git rm --

rm 删除文件后,可以使用git checkout -- filename 来恢复文件。 git checkout 其实使用版本库里的版本替换

工作区的版本,无论是删除还是修改都可以“一键还原”

撤销修改

git checkout -- filename : 可以丢弃工作区的修改

一种是 修改后没有被放到暂存区 ,撤销后和版本库一致

一种是 添加到暂存区, 撤销后 和暂存区内容一致

git reset HEAD filename : 把暂存区的修改撤销,重新放回工作区, HEAD 表示最新的版本

分支管理

git checkout -b 分支名字NAME: 创建分支,并切换到新建的分支

上述命令可以 表示为 : git branch NAME ; git checkout NAME;

git branch: 命令查看当前分支

git branch -d branchname : 删除某个分支

git log --graph --pretty=online --abbrev-commit 图形化分析commit版本

--------------------------------------------------------------------------------------------------------------------------------------------

自己对合并及其冲突的理解: 分支是为了做测试而产生的,而 矛盾是 在不同的分支 修改了同一个文件而导致的,

在图形化分析中,我之所以产生了那个错误的想法,是因为我把 每一次提交后的仓库版本 与文件混为一谈,每一次commit其实只是修改了

部分文件内容,而我下意识将 一个节点当做一个 单文件结构,故而产生这个错误的认识。

git merge --no-ff : 这个参数,其实也是我自己思维进入了一个混乱中, fast-fward是默认的合并模式,但是这种合并是建立在 分支有了new commit而

主分支没有 commit,此时为了简洁 直接将HEAD 指针指向 测试分支,但是 如果当前分支也 有了new commit,那么 即使你不加 --no-ff

参数,此时,加不加参数没有区别,因为HEAD指针没法直接指向当前分支,必须系统建立一个commit 那个合并所有修改的文件

10.23 日 关于冲突 及其系统新建 commit的思考 , 10.26在此做出 解答

--------------------------------------------------------------------------------------------------------------------------------------------

远程仓库的管理

git remote: 查看远程库的信息 git remote -v :查看跟详细的信息

git push originname localbranchname : 将本地的 分支 推送到远程库

如果本地推送到远程库失败则说明有冲突,解决如下:

1、git branch --set-upstream branch-name origin/branch-name //建立本地分支与远程分支的关联

2、git pull //把最新的提交从远程库中抓下来

冲突后再次进行推送

------------------------------------------------------------------------------------------

以下操作经过亲测

git clone只能clone远程库的master分支,无法clone所有分支,解决办法如下:

1. 找一个干净目录,假设是git_work

2. cd git_work

3. git clone http://myrepo.xxx.com/project/.git ,这样在git_work目录下得到一个project子目录

4. cd project

5. git branch -a,列出所有分支名称如下:

remotes/origin/dev

remotes/origin/release

6. git checkout -b dev origin/dev,作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支

7. git checkout -b release origin/release,作用参见上一步解释

8. git checkout dev,切换回dev分支,并开始开发。

-----------------------------------------------------------------------------------------------

标签用来在发布版本时使用,唯一确定commit的状态,也就是说,标签唯一指向了某个commit的指针,而且是常量,不能改变。

不做过多的了解。

详情:
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001376951758572072ce1dc172b4178b910d31bc7521ee4000
git的学习目前到此为止。

-------------------------------------------------------------------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: