git 安装完成后
$git config --global user.name "Your Name"
$git config --global user.email "email@example.com"
创建一个空的目录,作为代码仓库
mkdir gitlearn
cd gitlearn
初始化git仓库
git init
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支:git merge name
删除分支:git branch -d name
git status 查看更改的文件
如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
git checkout -b xem_toph 创建新的分支,并自动切换到新建分支
或者: git checkout xem_toph 切换到新分支
git add 文件名1 文件名2 ....... 添加需要更改的文件到新建分支
git commit -m "完成xem,toph站点代码" 提交代码
以上操作把代码 提交到了新的分支上,然后切换到主分支进行最后提交
git checkout master 切换到主分支,下一步合并分支
git merge xem_toph 将分支cyf_xem_toph合并到主分支
git push origin master 最终push代码
如果发生冲突,则会出现以下错误:
error: failed to push some refs to 'git@139.XX.XX.XX:/opt/git/dev/XXX.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
这时候需要pull下来新的代码修改
git pull
用vim 修改产生冲突的代码 ,以site.py为例:
Vim site.py
在命令模式下输入 / <<< 或者/<<
定位到要修改的地方
修改完保存退出
用 git status 查看一下
git add siteDef.py 加入到分支
git commit -m “每次提交的备注说明” 再次提交
git status
(下为转)
版本回退
git log命令显示从最近到最远的提交日志(–pretty=oneline )
回退上一个版本 ,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
git reset --hard HEAD^
git push 再次push到远程
git push origin master
小结
-
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset –hard commit_id。
-
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
-
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
3 撤销修改
命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
```
$ git checkout -- readme.txt
```
git checkout – file命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。
用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:
- 1
- 2
- 3
- 1
- 2
- 3
总结:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
- git reset HEAD^ //回退至上一版本, 并重置缓存区
- git reset HEAD~10 //回退至10个版本之前, 并重置缓存区
- git reset –soft HEAD //回退时不重置缓存区和工作区
- git reset –mixed HEAD //回退时重置缓存区, 默认选项
- git reset –hard HEAD //回退时重置缓存区和工作区
- git reset //不指定HEAD, 用来清空缓存区的修改
- git reset filename //清空缓存区指定文件的修改
- git reset –hard //不指定HEAD, 用来清空工作区和缓存区的修改
- git reset –hard filename //清空工作区和缓存区指定文件的修改
- git checkout branch //切换branch, 同时重置缓存区和工作区, 如果工作区有修改没有提交, 需要先commit或stash
- git checkout branch –force //切换branch, 同时重置缓存区和工作区
- git checkout –force //不指定branch, 用来清空工作区的修改(缓存区不变, 如果之前有add, 则工作区与缓存区一致)
- git checkout – filename //清空工作区指定文件的修改