Git 常用指令

2018-08-24  本文已影响15人  琢磨先生lf

版本库操作

git init # 把当前的目录变成可以管理的git仓库,生成隐藏.git文件(但要commit一次以后才会创建master分支)

git clone <director of project> # 从远程主机克隆版本库到本地,-o指定远程主机名

git remote # 查看所有远程主机,一般是origin

git remote –v # 查看远程主机的网址

git remote show # 查看远程主机详细信息

git remote add <主机名> <网址> # 添加一个远程主机,如 git remote add origin url地址

git remove rm <主机名> # 删除远程主机

git remote rename <原主机名> <新主机名 # 重命名远程主机

分支操作

git branch # 查看本地分支,-r远程分支,-a所有分支,-vv分支最近一次提交记录

1. 分支创建、切换、删除

git branch <本地分支名> # 创建本地分支

git checkout <本地分支名> # 切换本地分支

git checkout –b <本地分支名> # 等于前面两个指令,创建并切换到新分支上

git branch --track <本地分支名> origin/<远程分支名> # 根据远程分支创建一个本地分支

git branch --set-upstream-to=origin/<远程分支名> # 设置本地分支和origin/<远程分支>的追踪关系

git branch –d dev 删除dev分支

git branch -D <本地分支名> # 强行删除本地分支

2.拉取远程仓库

git fetch # 取回所有分支更新,不影响本地开发代码,通常用来查看其他人进程

git fetch <远程主机名>(origin)<分支名> # 拉取特定分支更新,还需merge或rebase进行合并

git pull <远程主机名> <远程分支名>:<本地分支名> # 取回origin主机的远程分支,与本地分支合并,等于git fetch origin加git merge origin/<远程分支>

git pull # 本地分支与远程分支建立追踪关系后可用,拉取远程分支更新、合并本地分支

3. 分支合并

git merge <要合并的分支名> # 合并分支到当前分支

git merge –no-ff -m “注释” # 保存你之前的分支历史,能够查看 merge历史和branch 状态

git cherry-pick # 单独把其他分支上的 commit 合并到当前分支

git rebase <要衍合分支名> # 把当前分支的提交记录衍合到目标分支,生成干净的提交记录(把当前分支上的提交记录跟在目标分支的记录后面,而不像merge按时间),不会产生merge的commit,就好像是在目标分支上提交的一样

git rebase --continue # 当衍合冲突,解决冲突以后,先git add再执行该指令。不需要commit

git rebase --abort # 终止rebase的操作,回到rebase开始前的状态

git rebase -i HEAD~3 # 修改最近三次提交,可以撤销或者合并/拆分提交记录

4. 分支改名

git branch -m <现有的分支名> <改的分支名>

5.Git 清理无效的远程追踪分支

http://blog.csdn.net/u010544187/article/details/71404523

git remote prune origin

本地仓库文件操作

git status # 查看分支状态

git add XX # 把xx文件添加到暂存区去。

git commit –m “XX” # 提交文件到本地仓库 –m添加注释,--amend修改最近一次提交记录,并产生新的提交记录

git diff XX # 查看XX文件当前修改的内容

git checkout — XX # 把XX文件在工作区的修改全部撤销

git checkout . # 把本地分支上有所修改全部撤销

git rm XX # 删除文件,同时还会将这个删除操作记录下来

git mv <文件名> <改后文件名> # 文件重命名后跟踪,当于运行了下面三条命令: mv README.md README git rm README.md git add README

远程仓库分支同步

git push origin <本地分支名>:<远程分支名> # origin是远程主机名,如果远程分支不存在会自动创建分支,如果不填本地分支名会删除远程分支

git push origin --delete master # 等同于git push origin :master,删除远程分支

git push –u origin <本地分支名> # 把本地分支推送到远程主机,此后可以直接使用git push

git push --set-upstrean origin <远程分支名> # 推送远程分支并做关联,此后可以直接git push

git push origin master -f # -f 参数是强制提交,因为reset之后本地库落后于远程库一个版本,因此需要强制提交

git revert <哈希值> # 放弃指定提交的修改,生成一次新的提交

git revert <哈希值> -m <parent number> # 当撤销的commit是一次merge操作,其包含两个parent(合并的两个分支),-m 指定保留内容的parent,另一个分支内容被revert。parent number的顺序是从左到右,左1右2

image.png

git revert HEAD # 撤销前一次 commit,HEAD^是撤销前前一次 commit

查看记录与回退

git log # 查看提交记录,按 q退出,回车输出更早commit历史记录

git log <fileName> # 查看文件历史记录,按 q退出,回车输出更早commit历史记录

git reflog # 查看历史记录的版本号id

git show <哈希值> # 查看某次提交的修改记录

git reset -hard <哈希值> # 回退到commit版本

git reset –hard HEAD^ # 回退到上一个版本,git reset –hard HEAD~5往上5个版本

缓存操作

git stash # 把当前的工作隐藏起来 等以后恢复现场后继续工作

git stash list # 查看所有被隐藏的文件列表orginal

git stash apply # 恢复被隐藏的文件,但是内容不删除

git stash apply stash@{0} # 恢复 git stash list中的第一个工作现场

git stash drop stash@{0} # 删除第一个工作现场

git stash pop # 恢复第一个工作现场,同时也删除记录

标签管理

git tag # 查看所有标签

git tag <tag名> # 打一个新标签,-a指定标签名,-m指定说明文字

git tag <tag名> <commit id> # 根据commitId创建tag

git show <tagname> # 查看标签信息

git tag -d <tag名> # 删除标签

git push origin <tagname> # 推送某个标签到远程

git push origin :refs/tags/v0.9 # 删除远程v0.9tag,删除远程tag前先删除本地tag

生成 SSH key

设置Git的user name和email

git config --global user.name "user name"

git config --global user.email "email"

生成SSH密钥

cd ~/.ssh # 查看是否已经有了ssh密钥

ssh-keygen -t rsa -C "emial" # 生成密钥

pub后缀文件保存了公钥,登录网站添加ssh

测试

ssh git@github.com

Git相关资源

廖雪峰-最浅显易懂的Git教程https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

使用原理视角看 Git https://blog.coding.net/blog/principle-of-Git

Git Community Book 中文版 http://gitbook.liuhui998.com/index.html

25个 Git 进阶技巧 https://linux.cn/article-5418-2.html

其他命令

mkdir XX # 创建一个空目录 XX指目录名

mv XX # 文件重命名

type XX # 查看XX文件内容

上一篇下一篇

猜你喜欢

热点阅读