持续更新中。。。
git介绍
部分名词翻译
- Workspace:工作区
- Index / Stage:暂存区
- Repository:仓库区(或本地仓库)
- Remote:远程仓库
配置常用命令
- 显示当前的Git配置
git config --list
- 编辑Git配置文件
git config -e [--global]
- 设置提交代码时的用户信息
git config [--global] user.name "[name]"
git config [--global] user.email "[email address]"
常用基础命令
- 上传代码
git add [dir] // 添加指定目录到暂存区,包括子目录
git add . // 添加当前目录的所有文件到暂存区
git push origin master // 上传本地指定分支到远程仓库
git push [remote] --force // 强行推送当前分支到远程仓库,即使有冲突
- 下载代码
git clone [url] // 下载一个项目和它的整个代码历史
git fetch --all // 下载远程仓库的所有变动
git pull // 取回远程仓库的变化,并与本地分支合并
- 代码保存
git stash save {****} // 代码储藏
git stash list // 查看储藏列表
git stash apply stash@{index} // 取出指定index的储藏到工作区中
git stash drop stash@{index} // 将指定index的储藏从储藏记录列表中删除
git stash pop stash@{index} // 取出指定index的储藏到工作区中,并同时将该储藏从储藏记录列表中删除
git stash pop // 取出最近一次储藏到工作区中,并同时将该储藏从储藏记录列表中删除
- 提交
git commit -m [message] // 提交暂存区到仓库区
git commit --amend // 重做上一次commit,并包括指定文件的新变化
- 撤销
git checkout [file] // 恢复暂存区的指定文件到工作区
git checkout [commit] [file] // 恢复某个commit的指定文件到暂存区和工作区
git checkout . // 恢复暂存区的所有文件到工作区
git reset --soft HEAD^1 // 撤销上一次上传,并恢复到本地
git reset --hard // 重置暂存区与工作区,与上一次commit保持一致
git reset [commit] // 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
git reset --hard [commit] // 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
- 查看信息
git status // 显示有变更的文件
git log // 显示当前分支的版本历史
git log --stat // 显示commit历史,以及每次commit发生变更的文件
git diff // 显示暂存区和工作区的差异
git remote -v // 显示所有远程仓库
完整上传步骤:
git push add *** // 添加内容到暂存区
git commit -m *** // 提交上传备注信息
git push origin master // 上传到远程服务器
- 查看某一个文件的具体修改记录
gitk -- *** // 文件名
碰掉以下情况解决方法
- 当本地第一次下载远程仓库代码,上传时出现
1、提示第二个红框中错误时,到此次上传代码的.git
所在目录,进入到.git
然后进入 hooks/
执行scp -p -P 29418 ad@192.168.1.99:hooks/commit-msg
(第三个红色框中部分内容)
2、完成后,执行git commit --amend
3、再次执行下图中代码,如果又报错和下图中错误一样的话,上传使用git push origin HEAD:refs/for/master
基本就没有问题了
目前发现的解决冲突的万能步骤:
- git stash save “*****” 执行储存
- git stash list 查看储存
- git fetch --all 强制同步服务器代码
- git reset --hard origin/master 重置节点
- QT打开工程的话,需要保存一下代码
- git stash list 再次查看第一次储存的位置
- git stash pop stash@{0} 提取储存信息进行合并,0 代表 步骤1 的储存信息编号,按实际编号修改
- 再次保存,运行,查看是否有需要解决的冲突
- 再次add、commit、push
合并代码也可以用1-8这个步骤