git config --global user.name pengxu
git config --global user.emial pengxu@qq.com
git config --global credential.helper store //保存用户名和密码
git config --global init.defaultBranch main
git config --global --list
git init git init --initial-branch=main //初始化并设置分支为main
git init mydir //在mydir目录下初始化git
git clone 仓库地址
echo "file1.txt" > file.txt //新增一个文件 git add file1.txt //将文档跟踪 添加到暂存区 等待commit git add . 当前文件夹下所有文件
git rm --cached file1.txt //将暂存区的文件移出暂存区 但不删除就是在保留在工作区 git rm file1.txt //直接删除文件
git commit -m "提交说明" //只会提交暂存区中的文件,不会提交工作区中的文件 即add进来的文件
git reset //用于回退版本 三种模式 软 硬 混和 (HEAD^表示前一个版本 HEAD~ 表示上一个版本) git reset --soft //回退到某一个版本并且保留工作区和暂存区的所有修改内容
git reset --hard //回退到某一个版本并且丢弃工作区和暂存区的所有修改内容,相当于直接删除了 (谨慎使用)
git reset --mixed (默认) //回退到某一个版本并且只保留工作区所有修改内容,丢弃暂存区的内容
git reflog //可以查看操作的历史纪录 如果确认误操作了,可以找到误操作前的版本号 使用 git reset --hard 误操作前的版本号 回退回去即可
git diff
1查看文件在工作区,暂存区 本地仓库之间的差异
2查看文件在两个特定版本间的差异
3查看文件在两个不同分支间的差异
git diff 后面什么都不加会默认比较工作区和暂存区间的差异 会显示发生更加的文件以及更改的详细信息
git diff HEAD 比较工作区+暂存区和本地版本库间的差异
git diff --cached/--staged 比较暂存区和本地版本库间的差异
git diff 第一个版本id 第二个版本id (文件名可加可不加)
git ls-files 列出所有已跟踪的文件,包括已修改但尚未暂存的文件
如何从版本库中删除文件
1,先删除文件再add commit 这样才从版本库中删除了
2,先git rm 文件名 再commit 这样才从版本库中删除了
ssh-keygen -t rsa -b 4096
tail -5 config //创建一个conf文件 如果生成秘密时指定了文件名test则把下面内容加入到config中
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/test
上面的意思当我们访问github.com的时候指定使用ssh下的test这个密钥
git remote add
git remote add origin git@github.com:xxxx.git //其中origin是远程仓库的别名 一般默认是这个
git remote -v //可以查看我们当前仓库所对应的远程仓库的别名和地址
git branch -M main //指定分支名称为main git push -u origin main //把我们本地mian分支和远程的origin仓库的main分支关联起来 全称应该是这样的 git push -u origin main:main //u 是upstream缩写 mian:main是把本地的main分支推送给远程仓库的mian <本地分支名>:<远程分支名>
git pull <远程仓库别名一般origin> <远程分支名>:<本地分支名>
如果直接 git pull 默认就是拉取仓库别名为origin的main分支并执行合并
git fetch 也可以拉取,但是只会拉取远程仓库的修改,但是并不会自动合并到本地仓库中,需要手动合并
git merge 后面的分支名称是将要被合并的分支 当前所在分支为合并后的目标分支
git log --graph --oneline --decorate --all 查看分支图
git branch -D/d 分支名 //小d和大D的区别在于 d表示删除已经被合并的分支 没有被合并小d是不行的,D是强制删除
git merge 操作如果有main和dev两个分支,把dev合并到main要先切换到main分支上再执行merge操作 合并后在main上有一个merge的提交纪录,两条分支就像两条溪流一样汇集到一起
如果是git rebase 则可在任意分支上执行rebase操作 如果是在dev上 git switch dev git reabse main 那么dev的提交记录就会变基到main末尾上 如果是在main上 git switch main git rebase dev 那么main的提交记录就会变基到dev末尾上
执行rebase后,最后的结果都是一条直线 但是中间顺序会稍微有些不同
在git中每个分支都有一个指针,指向当前分支最新提交记录,执行rebase操作的时候,git会找到当前分支 和目标分支共同的祖先,再把当前分支上从共同祖先到最新提交纪录的所有提交,都移动到目标分支的最新提交后面
本文为big4ever.com原创文章,转载无需和我联系,但请注明来自www.big4ever.com
最新评论