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. 这个冲突解决问题,实际上和其他版本管理工具,没有啥本质区别.

---恢复内容结束---

posted @ 2015-06-29 14:28  疲惫的豆豆  阅读(265)  评论(0编辑  收藏  举报