首先上张git的概述图,图片中应该包含了git大部分的简单命令。
1.基础篇
git clone https://github.com/PX4/Firmware.git git clone
git config --list 查看配置等基础信息
git config --global user.name "new_name" 更改名字,不加global为本地,或者直接修改当前仓库的.git/config文件
git config --global --edit 修改config配置
git config --global credential.helper store 保存账号密码
git config --global credential.helper cache 保存默认15min
git config credential.helper 'cache --timeout=3600' 1小时后失效
rundll32.exe keymgr.dll,KRShowKeyMgr win+r后输入,删除账号信息
git push -u origin master
stash
----------------------------------------------------------------------------------------
git stash 将当前更改保存到缓存
git stash save "test-cmd-stash" 将当前添加说明更改保存到缓存
git stash list 显示缓存信息
git stash apply 将上一个缓存提出
git stash apply stash@{2} 将第二个缓存提出
2.查看篇
git log 查看提交log记录
git status 查看当前状态
git branch 查看分支
git tag 查看所有标签
git reflog 查看提交简写哈希码
git gui ui查看
3.提交篇
提交3步曲
git add -u 加入已跟踪版本
git commit -m"说明" 提交到本地
git push 提交到远程服务器
4.跟踪篇
添加文件
git add [path] 加入指定文件到版本跟踪
git add -u 仅监控已经被add的文件(即tracked file)
git add . 监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区
git ls-files 查看跟踪文件列表
取消已跟踪文件
git rm --cached FILENAME 移除跟踪文件
git rm -r --cached FOLDERNAME 移除跟踪文件夹
git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了
忽略不跟踪版本文件-gitignore
在当前分支下新建.gitignore文件,在里面添加要忽略的文件和目录,如当前分支目录目录下obj文件夹下的.obj文件在.gitignore
中写入
/out/*.obj
使gitignore中忽略生效需要执行
git rm -r --cached .
git add .
git commit -m "update .gitignore"
1).gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
2)想要.gitignore起作用,必须要在这些文件不在暂存区中才可以,.gitignore文件只是忽略没有被staged(cached)文件,
对于已经被staged文件,加入ignore文件时一定要先从staged移除,才可以忽略
5.回退篇
git checkout 316ffa3 回退到316ffa3版本前6位即可
git push回退,将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录
git reset --hard 回退上一次版本
git reset --hard $HEAD^ 回退上一次版本
git reset --hard $HEAD^^ 回退上上一次版本
git reset --hard $HEAD~4 回退上4次版本
git reset --soft $HEAD 只退回commit内容
git reset --hard 316ffa3 回退到316ffa3版本前6位即可
git如何取消merge
git merge --abort 未合并完成时使用
git reset --hard commit id 合并完成情况下,先用 git reflog 指令显示历史的操作查看commit id
6.分支篇
分支建立:
git branch name_branch 在当前分支下建立name_branch分支
git push origin name_branch 将name_branch推向远程origin下
git push --set-upstream origin name_branch 新分支内容push时需要建立流
git checkout -b name_branch 从当前分支新建分支复制当前分支内容
删除分支:
git branch -D name_branch 在本地删除一个未merge分支
git branch -d name_branch 在本地删除一个分支
git push origin --delete name_branch 删除远程分支
重命名分支
git branch -m name_pre name_now 如不是当前分支
git branch -m name_now 如是当前分支
标签
git tag 查看标签
git ls-remote --tags origin 查看远程tag
git fetch origin tag <tagname> 获取远程分支到本地
分支合并
git merge issueFix 切到主分支后合并issueFix分支
分支对比
git diff branch1 branch2 --stat 显示出所有有差异的文件列表
git diff branch1 branch2 具体文件路径 显示指定文件的详细差异
git diff branch1 branch2 显示出所有有差异的文件的详细差异
git diff branch1:file_path branch1:file_path 显示两个分支中同一文件差异
git diff>log.txt branch1:file_path branch1:file_path 显示两个分支中同一文件差异到log.txt
切换服务器,推送所有分支
git clone <upstream-repo-url/repo.git> --mirror
cd <repo>
git remote add <your-remote-name> <your-remote-url/repo.git>
git push <your-remote-name> --mirror
7.远程篇
更改远程地址
git remote -v 查看远程地址
git remote set-url origin new_url 更换远程地址
git remote add origin url.git 关联到远程库
合并仓库
8.子模块
git submodule init 初始化 初次拉取代码更新i子模块时需要
git submodule update 更新子模块
删除子模块
1)删除并移除跟踪 git rm --cached [path]
2)编辑“.gitmodules”文件,将子模块的相关配置节点删除掉
3)编辑“.git/config”文件,将子模块的相关配置节点删除掉
9.SSH-Keys添加
使用 HTTPS url 克隆对初学者来说会比较方便,复制HTTPS url 然后到 git Bash 里面直接用 clone 命令克隆到本地就好了,但是每次 fetch 和 push 代码都需要输入账号和密码,也可以保存到本地。而使用 SSH url 克隆却需要在克隆之前先配置和添加好SSH key,因此,如果你想要使用SSH url克隆的话,你必须是这个项目的拥有者或管理员。否则你是无法添加 SSH key 的,另外 SSH 默认是每次 fetch 和 push 代码都不需要输入账号和密码。
cd ~/.ssh/
ssh-keygen -t rsa -C "your_email@example.com"
>Generating public/private rsa key pair.
>Enter file in which to save the key (/c/Users/xxx/.ssh/id_rsa): /c/Users/xxx/.ssh/id_rsa_gitlab
>
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/xx/.ssh/id_rsa_gitlab
Your public key has been saved in /c/Users/xx/.ssh/id_rsa_gitlab.pub
The key fingerprint is:
SHA256:XblGclRJ590dA5NB+Ua2sYSooALesuW7uTeEMYMA3aU xxx.xx@xxx.me
The key's randomart image is:
+---[RSA 3072]----+
|o. . .. .o+++o+|
|. o o. +..o++|
| . =E. ..* o+|
| . B . =..= |
| . * S.. o+ + |
|. . o o . ... o |
| o o . . . |
| . ..o |
| == . |
+----[SHA256]-----+
cat id_rsa_gitlab.pub
>
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDFhqlsSuSuIBAwaIDmbWUFLVnoECmxBgXH+rV+8YjPZ/oEw3++vPgGHnDFFAVzlZOCEGV0SEhyPYflhFhhO4dk1lV+Dy3zd6P04Mu1aGZSiD927Z9Q.....