Git命令行

芝麻凛 2021年08月03日 149次浏览

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 - #回到上一级