一、参考资料
1.1、Git的分支策略介绍
1.2、Git文档
1.4、Git简易教程(推荐)
1.5、解决PUSH输用户密码的问题
1.6、Git本身不允许全空目录提交至版本库,一个最好的办法是在目录下创建一个空文件index.php
(建议可以先看简易教程,然后再看详细文档)
二、常用指令
git --help查看帮助
git remote -v 查看远程仓库
git status 查看仓库状态
git pull从远程获取最新版本到本地(在master目录执行)
git fetch origin master 从远程获取最新版本到本地
git log -p master.. origin/master 比较本地的仓库和远程参考的区别
git log查看commint信息
git show 7f12 (版本sha前(4-8位即可),可通过git log获取)
git merge origin/master 合并版本库
git branch 查看已有分支
git branch -D <分支名> 删除分支
git commit –a 这会自动把所有内容被修改的文件(不包括新创建的文件)都添加到索引中,并且同时把它们提交
git show-branch调用该命令可以查看分支历史变化情况查看,reset到dev1^
git reset [--mixed] dev1^它的作用仅是重置分支状态到dev1^, 但是却不改变任何工作文件的内容。即,从dev1^到dev1的所有文件变化都保留了,但是dev1^到dev1之间的所有commit日志都被清除了,而且,发生变化的文件内容也没有通过git-add标识,如果您要重新commit,还需要对变化的文件做一次git-add。 这样,commit后,就得到了一份非常干净的提交记录。
三、clone git代码新建分支操作示例
git clone http://xxx/git/xxx.git
git config --global user.name "yourname"
git config --global user.email"email@xxxx"
cd xxx
git branch dev(自定义分支名,开发dev)
git checkout dev
git add file
git commit -m "something"
git checkout master
git merge dev
git push origin master
四、修改后commit
方式一:
git add file1 file2 file3(git add . 选择全部)
git diff –cached(可选)
git commit –m “commit content” 或者git commit
方式二:
git commit -a
五、修改提交,冲突解决
5.1、注意不要直接在本地master上修改(本地master更新到最新版本,再与分支合并解决冲突,再提交)
git checkout master
git pull(提交修改前先pull)
git merge branch dev(开发的分支)
git commit -a
git push
5.2、本地版本与远程版本不一致
git pull
与开发分支git merge 或修改文件手动merge冲突
(冲突标记<<<<<<<(7个<)与=之间的内容是我的修改,=与>>>>>>>之间的内容是别人的修改。)
git commit -a
git push
5.3、解决冲突的方法
git rebase
git rebase --continue
git rebase –abort 放弃 rebase
git rebase –skip 直接取代分支
5.4、冲突太多使用图形界面解决
六、恢复操作
git checkout master
git reset 7f12 (git log查看SHA前几位,恢复版本,不恢复文件)
git pull
git commit –a
git push
git reset –mixed id ,是将git的HEAD变了(也就是提交记录变了),但文件并没有改变,(也就是working tree并没有改变)。
git reset –soft id. 实际上,是gitreset –mixed id 后,又做了一次git add
git reset –hard id.是将git的HEAD变了,文件也变了。(会改本地文件,慎用)
七、401错误
CentOS直接yum install git可能在clone需要用户密码的资源时会出现 error: The requested URL returned error: 401 Unauthorized while accessing
yum安装的版本1.7.1,换成版本1.8的可以解决这个问题
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
wget -O v1.8.1.2.tar.gz https://github.com/git/git/archive/v1.8.1.2.tar.gz
tar -xzvf ./v1.8.1.2.tar.gz
cd git-1.8.1.2/
autoconf
./configure
make && make install
whereis git
export PATH=$PATH:/usr/local/bin/git
git --version