1、基础操作
1.补交提交代码
git add hello.txt
git commit -m "submit hello all file"
git add heelo_world.txt
git commit --amend
2.取消暂存
git add a.txt b.txt
git reset head a.txt
3.撤销文件修改
git checkout [commit_id] -- a.txt --没有commit_id就是拉取最新的
4、远程仓库的使用
git remote -v --查看已配置的远程仓库的链接
git remote add <short name> <url> --添加远程仓库
git fetch <remote name> --抓取远程仓库数据(上面的short name)
git remote show <remote name> --查看远程仓库等多信息
git remote rename <old> <new name> --远程仓库重命名
git remote rm <remote name> --删除远程仓库
5、回退
git checkout <version> <file or dir> --回退某个文件或者文件夹到某个版本
git reset --hard head^ --回退上一个版本 (--hard 不会保修本地修改回退)
git reset --hard <version>
git reset --soft <version> --Changes to be committed:
git reset --mixed <version> --Untracked files (默认)
6、查看不同
git diff --staged -- <filename> --查看(Changes to be committed)文件的不同
git diff -- <filename> --查看(Changes not staged for commit)文件的不同
git diff HEAD -- <filename> --HEAD HEAD^ .. HEAD~n
git diff OLD_COMMIT_ID_HERE NEW_COMMIT_ID_HERE
git diff --diff-filter=ACM --过滤文件.A => 新增, C => 复制, M => 修改, D => 删除, R => 重命名
git diff --cached --name-only -- 获取add的(暂存)文件有哪些
7、挑拣提交
git cherry-pick <commit-id> [branchname] -- 合并某个分支的某次提交h合并到本地分支
git cherry-pick <commit-id> -n -- 合并但不提交
git cherry-pick <commit-id> -e -- 合并可重新编辑提交信息
8、查看文件
git ls-files --cached -- 查看跟踪racked的全部文件(--cached也是默认的)
git ls-files --other -- 查看untracked的文件
git ls-files --modifie -- 查看已修改的文件(修改、删除)
git ls-files --delete -- 查看删除的文件
2、分支操作
git branch --查看分支 *指向当前的分支
git branch <branch name> --创建本地分支
git checkout <branch name> --切换分支
git checkout -b <branch name> --创建并切换分支
git checkout --orphan <branch name> --创建一个空分支
git checkout -b <branch name> <origin/branch name>--创建并切换分支和跟踪指定远程分支
git merge <branch name> --将指定分支的提交合并到当前分支
git merge --no-commit <branch name> --不生成合并的commit
git branch -d <branch name> --删除分支
git branch -v --查看每个分会的最优一次提交(蛮有用的)
git branch -vv --查看所有跟踪的分支
git branch --no-merged --查看哪些分支没有还没有合并到当前分支
git branch --merged --查看哪些分支已合并到当前分支
git brancn --track <origin/branch name> --当前分支指定跟踪远程分支(1)
git branch --set-upstream-to=origin/master master-backup
git push --set-upstream origin <branch name> --当前分支指定跟踪远程分支(2)
--设置当前分支跟踪远程分支
git push origin <branch name> --推送远程分支没有则创建
git push origin :<branch name> --删除远程分支(1)
git push --delete origin <branch name> --删除远程分支(2)
git clone -o <origin> -b <branch name> <url> --远程拉取某个分支的代码
3、tag
git tag -l --查看tag列表
git tag v1.0.0 -lights --创建轻量标签
git tag -a v1.0.0 --附带备注信息(推荐)
git tag -a v1.0.0 bcd4a4fc17a726201564e964d05870875a30b271 --对某个commit打标签(默认HEAD)
git tag -d v1.0.0 --删除某个tag
git show v1.0.0 --查看标签版本信息
git push origin v1.0.0 --推送某个tag到服务器(--tags是所有)
git push origin --tags --推送所有tag
git tag -v v1.0.0 --查看标签信息
4、submodule
git submodule add <url> -- 添加一个git项目(子项目)到本地项目
git submodule init -- 初始化本地.gitmodules文件
git submodule update -- 同步远端的submodule源码
git clone --recurse-submodules <main_project_url> -- 获取主项目和所有子项目的源码
# 操作子项目源码,只要进入对应的submodule目录下进行操作即可
git submodule foreach '<git commabd>' -- 批量的管理多个submodule
2、历史操作
git log --oneline --单行显示提交
git log -- <filename> --查看某个文件的修改历史
git log --pretty=format:"%h %an,%cd : %s" -- <filename>
选项 说明
%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 -date= 选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明
3、配置设置
git config -l #显示所有的配置信息
git config user.name "廖钺焕" #设置配置信息
git config --unset user.name #消除设置的配置信息
简单常识
1、-- filename #指定文件路径
2、--name-only 和 --name-status #前者只显示文件清单,后者显示含有增(A)、删(D)、改(M)的文件清单
常见问题
1、gitignore不起效
git update-index --assume-unchanged -- filename
2、如何导出改变的文件
git archive -o D:/update.zip HEAD $(git diff --name-only OLD_COMMIT_ID NEW_COMMIT_ID)
3、如何设置代理和取消代理
#### 设置代理
git config --global http.proxy http://127.0.0.1:1111
git config --global https.proxy https://127.0.0.1:1111
git config --global http.proxy socks5://127.0.0.1:1111
git config --global https.proxy socks5://127.0.0.1:1111
#### 取消代理
git config --global http.proxy
git config --global https.proxy
4、RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
git config --global hthttp.sslVerify false