git笔记
前置步骤
安装 Git
$ sudo apt install git
修改自己 git 的用户名和邮箱
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
查看本地和gitee网站的ssh连接
$ ssh -T git@gitee.com
创建 / 克隆仓库
以当前目录创建git仓库
git init
从远端克隆 git 仓库
# clone之前最好先cd到一个空目录文件
# 这个空文件夹就是以后你的git仓库的文件夹
$ git clone git@gitee.com:XXX/XXX.git
# clone 之后需要进入clone的文件目录下
# 可以通过下面命令查看是否与远端进行连接
$ git remote -v
# 如果没有和远端建立连接,可以执行下面命令
$ git remote add [远程主机名](例:origin) git@gitee.com:xxx/xxx.git
git 推送步骤
push文件
# 以下四个操作都必须在本地git仓库里执行
# 第一步,先对本地进行修改,例如新建一个文件
$ touch newfile
# 第二步,将修改的内容加入local仓库的暂存区
$ git add newfile
# . 代表将所有的修改提交
$ git add . (如果想指定某个修改,将 . 替换成对应的文件名即可)
# 第三步,将暂存区的修改内容加入local的git版本仓库
$ git commit -m "create a new file" //字符串里的内容是注释,是帮助开发者了解每一步的修改内容
# 最后一步,将local仓库的git版本仓库推送到远端
$ git pull [远程主机名] [分支]
# 例:git pull origin master
$ git pull [远程主机名] [分支]
# 例:git push origin master
branch的操作
查看当前本地git仓库的状态
$ git status
查看当前所在的分支
$ git branch
# git branch 命令会列出所有分支,当前分支前面会标一个 * 号
创建新分支
# Git官网鼓励大量使用分支
$ 创建分支:git branch [新分支名]
基于某个commit创建新分支
git checkout [commit ID] -b [新branch名]
# 上传到远程服务器
git push origin [HEAD:新branch名]
切换分支
$ git checkout [分支名]
查看分支图
$ gitk --simplify-by-decoration --all
合并某分支到当前分支
$ git merge [合并到的分支名]
删除分支
$ git branch -d [分支名]
回溯版本
# 查看git提交的历史,是本地的log
$ git log
# 回退到指定版本
$ git reset --hard [版本号]
# 回退到git仓库的上一个版本
$ git reset --hard HEAD^
# 回退到git仓库的上100个版本
$ git reset --hard HEAD~100
比较文件差异
# 将工作区中的文件和暂存区对应文件进行比较
$ git diff test.txt
# 将工作区中的文件和本地库历史记录比较
$ git diff HEAD test.txt 比较最新一次修改
$ git diff HEAD^ text.txt 比较上一次修改
$ git diff 46e8eaa test.txt 比较历史记录号为 46e8eaa的修改
# 不带文件名,比较所有文件的修改
$ git diff
比较未提交的commit的差异
git diff --cached [文件]
commit
查看本次commit的内容
git show
修改未提交的最后一次commit
git commit --amend
参考:https://www.iteye.com/blog/317324406-2274000
撤销未提交的commit,保留修改
git reset --soft HEAD
查找包含字符串的commit修改
git log -G "[搜索内容的regex]"
解决冲突
git commit然后git pull后,如果提示有冲突,修改代码保留需要保留的部分。
<<<<<<< HEAD
#本次提交的代码
=======
#发生冲突的代码
>>>>>>> 冲突的代码的commit版本号
此时会生成一个新的merge提交
如果不打算先commit再pull,生成merge commit,可以先stash再pull,就可以自动merge:
git stash
git pull
git stash pop
pull后会提示auto-merge,如果代码没有冲突,就会将stash的代码添加到pull的commit后;如果有冲突,就需要解决再生成merge commit
rebase 修改未提交的commit
# 修改目前所有未push到远程仓库的commit
git rebase -i
stash 暂存修改
# 暂存修改,恢复到上次commit的初始状态
git stash
# 恢复到上次保存的修改
git stash pop
# 删除暂存修改
git stash drop
浙公网安备 33010602011771号