Git self-learning
---恢复内容开始---
使用后的总结
git config --global user.name "" #设置和查看用户名
git config --global user.email "" #设置和查看用户邮箱
git clone 地址 #克隆代码库到本地
git status #查看本地库状态
git add #把未追踪的文件(修改或者新添加的文件)变成追踪的文件
git commit #把已add的文件提交到本地工作区
git push #把本地工作区文件提交到服务器端
------------------------------------------------
若push的时候,已经有人也修改了同一个文件
git pull #从服务器端取下来服务器端最新的代码
git status #查看本地是否有与服务器端相冲突的文件,显示冲突文件信息
git diff #查看冲突
vi 文件名字 #打开文件
删除<<<<<XXXXXXXYYYYYY=======>>>>>,留下要保存的文件
git commit "文件名"
git push
输入账号名,密码.
这样,就将"更加新的文件F"上传到服务器端.解决冲突问题.
这个冲突解决问题,实际上和其他版本管理工具,没有啥本质区别.
------------------------------------------------
版本回滚操作步骤:
1. 命令: git log // 显示所有提交记录.
2. 在所有提交记录中,选择需要回退到的commit ID(一个长字符串),复制.
3. 命令: git reset --hard XXYYZCCRERR // 最后一串是commit ID.完成回滚操作.
4. 命令: git log // 显示新的提交记录.
这里 利用 git reset 命令,可以任意回滚到过去,同时也可以穿越到未来.
很方便.
(回到未来 (fast -forward)
git reflog查看该用户的所有操作
git reset --hard commit id
--------------------------------------------------------------
建立分支与合并
http://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging
$ git checkout -b hotfix
$ vim xxx
$ git commit -a -m 'fixed in file xxx'
$ git checkout master
$ git merge hotfix
$ git branch -d hotfix
-----------------------------------------------------------
分支开发,例子场景,已经发布了一个版本的代码,有bug,但是master主分支已经开发了新的未经测试的功能代码。
用分支解决bug
在github建立新的分支:
点击“+”,起名新的分支名称
使用merge功能将修改好的代码合并到新的开发中的项目中去:
---------------------------------------------------------------------
注册地址:
https://github.com/
下载git
http://www.git-scm.com/
1. 通过以下命令来设置用户名和邮箱,目的是用来查询是谁提交的改动。
#设置用户名 $ git config --global user.name "YOUR NAME" #设置邮箱 $ git config --global user.email "YOUR EMAIL ADDRESS" #查看用户名 $ git config --global user.name #查看邮箱 $ git config --global user.email
2. 登陆github,点击右下角New Repository去创建一个自己的库。(这里起名叫example)
3.点击右下角复制git repository地址
4.在git中输入git clone命令,复制代码库到本地。
$ git clone https://github.com/deldong/example.git
5. 添加一个log文件,是用vi文本编辑程序。
vi 可以打开一个文件,若不存在会创建并打开这个文件
i 允许插入字符
:q! 不保存退出文件
:wq! 保存退出文件
:w 保存文件
【Vi 有三种工作模式,分别为:命令模式、插入模式(编辑模式)和末行模式,三种模式分 别进行不同的操作,它们之间可以进行切换。 1. 命令模式:进入 Vi 后,首先进入的就是命 令模式,等待用户输入编辑命令,此时输入的字母将作为编辑命令来解释。 2. 插入模式: 在命令模式下输入插入命令 i 、 附加命令 a 、 打开命令 o 等命令可以进入插入模 式, 在插入模式下, 用户输入可以对文本进行编辑, 输入的任何字符都被当作文件内容保存 起来。 【 Esc 】键可以返回命令模式。 3. 末行模式:在命令模式下,按【 : 】键可以进入末行模式, Vi 光标会显示在窗口的最后一 行,以“ : ”作为末行模式的提示符,等待用户输入命令。末行命令执行后,Vi自动回到命令模式。】
6. 用git status可以查看当前工作区的状态
上图意思是有一个名为log的未追踪的文件,需要使用git add去添加追踪。
7.使用git add 文件名去添加未追踪文件。
下图意思是可以使用git reset命令取消新添加的文件。
8. 使用git commit命令提交文件到本地库。
9.再次使用git status命令查看状态,会提示需要使用git push命令。
是因为git commit只是提交到了本地工作区,并没有提交到git服务器,所以需要用git push把改动提交到git服务器。
10.使用命令git push去提交本地代码到服务器,输入github的用户名和密码。
中文翻译:
在此处输入用户名和密码。
11.再次使用git status查看工作区状态,会发现不需要任何命令了,现在是一个很干净的工作区。
解决冲突
假设同一个F文件,被操作者A和B都修改了.
解决思路:
1. A先提交文件F,正常提交,无冲突问题.
2. B提交文件F时,报冲突.
3. B需要执行: git pull 操作,会自动将服务器端最新文件,合并到本地F.(该文件F中,同时保留2个不同的修改点)
4. B执行: git status 操作,显示冲突文件信息.
5. B执行: git diff 操作,显示文件F中的冲突点.
6. B执行: 用vi 打开 文件F, 查看到冲突处标记 <<<<<XXXXXXXYYYYYY=======>>>>>,手动删减,保留需要确认的部分.
7. 到这里,B本机的文件F已经在同步服务器端最新的F基础上,做了修改,变成"更加新的文件F"(比服务器端还新).
8. 这样,再提交文件F.就不存在冲突问题.剩下的操作,就是正常的提交步骤.
9. git add XXXX
10. git commit "xxxxyww"
11. git push
12. 输入账号名,密码.
13. 这样,就将"更加新的文件F"上传到服务器端.解决冲突问题.
14. 这个冲突解决问题,实际上和其他版本管理工具,没有啥本质区别.
---恢复内容结束---