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

posted on 2022-05-16 11:30  平ping  阅读(40)  评论(0)    收藏  举报