Git命令(本地仓库)
使用操作前需要配置,安装Git或者使用cmder
git config --global user.name '名称'
git config --global user.email '邮箱'
git config --global push.default simple
git config --global core.quotepath false
git config --global core.editor "code --wait"
git config --global core.autocrlf input
git config --global --list 查看配置是否成功
PS:user.name和user.email输入自己的名字和邮箱,与Github保持一致,也可以不一致。
git常用命令
git init //初始化
git add 文件名 //标记选中要提交的文件或目录,可设置.gitignore,在其中添加不需要提交的文件名称
git status
git commit -m "版本01" //提交, -m "字符串" 备注提交内容
git commit -v //同上,可回顾修改的内容,添加修改备注后保存然后关闭文件即可。
git log //可查看之前修改的具体信息
git reset --hard [commit 前六位ID] //回退版本,通过git log查看commit行前六位id
git reflog // 查看当前log并且可查看已经回退前的log
git branch x // 创建分支
git checkout master // 切换分支
history //查看执行过的git命令
git branch //查看分支 在当前分支前有*号
git merge x //合并分支
git branch -d x //删除分支
合并分支遇到冲突
git merge x 遇到以下提示:
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.
git status -sb 查看哪里发生了冲突
首先vim 打开冲突的文件解决冲突代码,在两个代码块中选择要保留的代码,删除git提示======和<<<<<<< HEAD,保存退出
再次git add index.html,直到没有冲突后。直接运行git commit
.git目录就是本地仓库,它不会复制相同的文件,能够支持多个分支。
git add 处理的是文件变化而不是文件,当删除一个文件后依然要使用git add 来添加到待提交区
Git命令(远程仓库)
ssh-keygen -t rsa -b 4096 -C '邮箱地址' //然后命令行会有三次提问,不管直接按三次回车,成功后会在用户目录下生成一个.ssh的文件夹,这里面就是公钥和私钥
// 然后将私钥保存到Github中,登录Github -- Settings -- SSH and GPG keys -- New SSH key
cat ~/.ssh/id_rsa.pub // 查看公钥内容并从ssh-rsa开始全部复制保存到Github中
ssh -T git@github.com // 输入yes,进行验证
使用ssh key
电脑上存放私钥,Github账号里存放公钥,上传代码使用私钥加密,Github使用公钥解密。
同时需要Github提供一个公钥给我,让我知道对方是Github。所以需要输入yes来接收对方的公钥
上传代码
// 新建GitHub Repo 复制项目的ssh地址
git remote add origin git@xxxxxxx
// 在本地添加远程仓库地址,origin是远程仓库的默认名称,可以换,但是不建议。不要使用https://地址,这种方式每次都需要密码
git push -u origin master
// 推送本地master分支到远程origin的master分支
// 也可能需要先git pull一下,如果遇到提示的话,git pull 是先把远程分支合并到本地对应分支
// 如果远程分支没有更新过,才可以省略git pull; -u origin master 的意思是设置上游分支 之后就不用再设置上游分支了,直接 git pull; git push;
//使用VScode打开项目新建终端输入以下命令
git remote add origin git@github.com:XXXXXX/git-demo-1.git //XXXXXX替换成github用户名
git branch -M main // 强制修改分支名称,可不做
git push -u origin main // -u默认,按照这次的设置一样推送到origin main仓库。第一次需要加下次可直接git push;
// 如何上传其他的分支
// 方法一
git push origin x:x //从本地的x push到远程的x
// 方法二
git checkout x
git push -u origin x
新版Github新建Repo后给的代码强制修改分支名称位main,修改后第一次push名称也要使用main(原来是master没有修改分支名称这一步。)
所有代码都能用 ssh 和 https 协议下载,ssh 协议传输速率会高一些。
下载Github上的代码 git clone git@XXXXXX[目标路径]; 需要先在电脑上生成ssh key
cd 目标路径,git add / git commit / [git pull] / git push 四步操作。
解决冲突的办法
发现冲突
在合并分支的时候,会得到conflict提示,使用git status -sb 查看那些文件冲突了
解决冲突
依次打开每个文件,找到很多=====等于号的行,在上下两部分中选择要保留的代码,然后删除不需要的代码,删除=====>>>><<<<<<等等标记。
然后再git add 对应的文件,再次git status -sb,解决下一个文件的冲突。最后运行git commit直接提交~
git clone / git pull / git push
远程仓库只是本地仓库的备份,所有变化都需要先commit到本地仓库。然后push到远程!
运行以下命令,给git添加缩写:
touch ~/.bashrc
echo 'alias ga="git add"' >> ~/.bashrc
echo 'alias gc="git commit -v"' >> ~/.bashrc
echo 'alias gl="git pull"' >> ~/.bashrc
echo 'alias gp="git push"' >> ~/.bashrc
echo 'alias gco="git checkout"' >> ~/.bashrc
echo 'alias gst="git status -sb"' >> ~/.bashrc
source ~/.bashrc //刷新
alias glog="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit -- | less" //这行直接加到~/.bashrc 文件末尾
git rebase -i xxxxxxx //操作美化log,主要关注r采用,但是改写message。s采用,但是合并到上一个提交
git stash/git stash pop //不想提交代码又不想删除,那么可以将代码历史藏起来
git reset --hard HEAD //清楚所有代码变动,回到最开始的状态(慎用,不可恢复)
git push -f -u origin master //强制覆盖之前的仓库
git remote add mayun git@gitee.com:centaurusR/webpack.git //修改源名称
git remote set-url mayun git@gitee.com:centaurusR/webpack.git //重置url
#使用webpack时 git脚本
yarn build &&
git checkout gh-pages &&
rm -rf *.html *.js *.css *.png *.jpg *.jpeg &&
mv dist/* ./ &&
rm -rf dist
git add . &&
git commit -m 'update' &&
git push &&
git checkout - #回到上一级