一、git的基本操作,不讲具体的原理,只有一些在实际中经常会用到的命令
1、下载git下载地址
2、配置git ssh
(1) git config --global user.name "username"
username是github的用户名
(2) git config --global user.email "usermail"
usermail是注册的邮箱账号
(3) ssh-keygen -t rsa -C 'usermail'
创建ssh
(4) 打开.ssh/id_rsa.pub文件,将添加到github上
3、git新建仓库,可以直接在github上新建仓库
4、配置文件名大小写敏感(默认时敏感的,会明确区分大小写)
git config core.ignorecase false
5、克隆远程仓库到本地
git clone url
例如:git clone https://github.com/yangpan4485/git_hahah.git
6、查看当前修改文件的状态
git status //建议多执行这个命令,可以知道自己修改了哪些内容
7、查看已被忽略的文件
git status --ignored
8、将文件添加到本地暂存区
git add filename/dirname
9、git add撤销
撤销单个文件
git reset HEAD filename/dirname
撤销全部添加的文件
git reset --mixed
或者
git reset HEAD .
10、将暂存区里面的内容提交到本地
git commit -m "message"
11、撤销git commit
git reset --soft HEAD^
撤销多次commit
git reset --soft HEAD^N
12、使用上次的commit,不产生新的commit(建议不要这么做)
git commit --amend
13、将本地仓库的内容推送到远程仓库
git push
将本地仓库的内容强制推送到远程仓库,使用场景有git commit --amend只能使用git push -f,或者本地仓库的commit落后于远 程仓库的commit,一般用于版本回退
git push -f
14、将文件恢复到最开始的样子(不保留改动)
将单个文件恢复最开始的样子
git checkout - filename
git restore filename
将当前目录以及当前目录的子目录文件恢复成最开始的样子
git checkout -- .
15、切换分支
git checkout branch-name
16、快速切换分支到上次使用的分支
git checkout -
17、创建分支
git branch branch-name
18、创建分支并切换分支
git checkout -b branch-name
19、查看提交的历史
git log
git log --oneline // 查看提交历史只显示一行
git log --follow filename // 查看重命令过后的文件的提交历史
二、git扩展命令
1、重命名文件,重命名之后如果要看文件的commit,需要使用git log --follow filename
git mv src dest
2、合并分支
git merge branch-name
3、git merge撤销
merge 已完成撤销
git reset --hard commit-id //commit-id为merge前的commit-id
merge 有冲突未完成,撤销
git merge --abort
merge 有冲突时,想要保留另外一个分支的内容
git reset --hard origin/master // 比如想要保存的是 master 的内容
4、回退版本,回退完如果要推代码,要使用push -f
git reset --hard commit-id
一般经常使用的是
git reset --hard HEAD // 将文件恢复到最开始的地方
5、清除文件
git clean -f 删除当前目录下没有被track过的文件,但是不会删除.gitignore里面的文件
git clean -n 告诉你git clean -f 要删除的文件
git clean -f path 删除指定目录下面没有被track过的文件
git clean -xf 删除当前目录下面没有被track过的文件,不管是不是.gitignore里面的文件
git clean -df 删除当前目录下面没有被track过的文件和文件夹
6、将当前仓库恢复到最初始的状态,注意这一点会删除你新加的文件
1、git reset --hard HEAD
2、git clean -xdf
7、同步远程分支的代码
git pull 远程仓库名 远程分支:本地分支
git pull 远程仓库名 远程分支 // 如果本地分支是当前分支可以不加本地分支名
git pull // 如果想要同步的分支当前仓库的当前分支,可以直接使用git pull
git pull = git fetch + git merge
8、拉取远程分支的代码
git fetch 远程仓库名 分支名
9、使用rebase的方式同步远程分支代码
git pull --rebase
10、配置默认的git pull 为 git pull --rebase
git config --bool pull.rebase true
11、git pull之后如何撤销,当我们发现git pull之后之后的东西不是我们想要的,还要撤销这次git pull操作
(1)如果知道你在git pull之前的commit id,可以直接使用git reset操作
git reset --hard commit_id
(2)当然大多时候我们都是记不到的,这个使用git reflog查看你的变更记录
可以看到我这边有两次commit记录,一次是pull的,一次是pull之前的,这个时候的我们要恢复的commit id就是pull之前的那一个,这个时候使用步骤1就可以撤销这一次pull操作了
12、从历史中删除一个文件,不然回退版本就可以看见文件
git filter-branch --tree-filter 'rm -f passwords.txt' HEAD
13、查看本地分支
git branch
查看本地和远程分支
git branch -a
14、删除本地分支
git branch -d branch-name
git branch -D branch-name
删除远程分支
方法一、直接在远程服务器里面删除
方法二、git push origin --delete branch-name
15、查看文件的行记录
git blame filename
16、将本地修改保存起来和恢复本地保存的修改
git stash
git stash pop
17、二分法查找问题bisect参考文章
git bisect
18、显示本地所有仓库的commit
git reflog
19、将某些commit合入到现在的分支
git cherry-pick commit-id
20、更新 submodel
git submodule update --init --recursive
git参考文档:https://git-scm.com/book/zh/v2
https://www.bookstack.cn/read/git-doc-zh/docs-37.md
写在最后:有写错的大家可以指正出来,或者其他git常用到的命令也欢迎大家一起交流