Git使用基本

参考链接
https://www.cnblogs.com/jamiechoo/articles/18408791
https://www.runoob.com/note/56524 //菜鸟
https://zhuanlan.zhihu.com/p/402325945 //知乎
https://segmentfault.com/a/1190000042347483 //奇想派
https://liaoxuefeng.com/books/git/introduction/index.html //廖雪峰
https://learngitbranching.js.org/?locale=zh_CN //模拟学习网站

https://blog.youkuaiyun.com/weixin_45611297/article/details/124365343 //基础常用操作

工作区
暂存区 git add
本地仓库 git commit
远程仓库 git push

一、初始配置

配置用户名

git config --global user.name “yourname”

配置用户邮箱

git config --global user.email “youremail@xxx.com”

查看当前的配置信息

git config --global --list

通过 alias 配置简写

例如使用 git co 代替 git checkout

git config --global alias.co checkout

一、高频命令
1、git clone克隆仓库
git clone: 克隆仓库

克隆远端仓库到本地

git clone

克隆远端仓库到本地,并同时切换到指定分支 branch1

git clone -b branch1

克隆远端仓库到本地并指定本地仓库的文件夹名称为 my-project

git clone my-project

2、git add提交到暂存区

将所有修改的文件都提交到暂存区

git add .

将修改的文件中的指定的文件 a.js 和 b.js 提交到暂存区

git add ./a.js ./b.js

将 js 文件夹下修改的内容提交到暂存区

git add ./js

3、git commit提交到本地仓库

将工作区内容提交到本地仓库,并添加提交信息 your commit message

git commit -m “your commit message”

将工作区内容提交到本地仓库,并对上一次 commit 记录进行覆盖

例如先执行 git commit -m “commit1” 提交了文件a,commit_sha为hash1;再执行 git commit -m “commit2” --amend 提交文件b,commit_sha为hash2。最终显示的是a,b文件的 commit 信息都是 “commit2”,commit_sha都是hash2

git commit -m “new message” --amend

将工作区内容提交到本地仓库,并跳过 commit 信息填写

例如先执行 git commit -m “commit1” 提交了文件a,commit_sha为hash1;再执行 git commit --amend --no-edit 提交文件b,commit_sha为hash2。最终显示的是a,b文件的 commit 信息都是 “commit1”,commit_sha都是hash1

git commit --amend --no-edit

跳过校验直接提交,很多项目配置 git hooks 验证代码是否符合 eslint、husky 等规则,校验不通过无法提交

通过 --no-verify 可以跳过校验(为了保证代码质量不建议此操作QwQ)

git commit --no-verify -m “commit message”

一次性从工作区提交到本地仓库,相当于 git add . + git commit -m

git commit -am

4、git push提交到远程仓库

将当前本地分支 branch1 内容推送到远程分支 origin/branch1

git push

若当前本地分支 branch1,没有对应的远程分支 origin/branch1,需要为推送当前分支并建立与远程上游的跟踪

git push --set-upstream origin branch1

强制提交

例如用在代码回滚后内容

git push -f

5、git pull

若拉取并合并的远程分支和当前本地分支名称一致

例如当前本地分支为 branch1,要拉取并合并 origin/branch1,则直接执行:

git pull

若拉取并合并的远程分支和当前本地分支名称不一致

git pull <远程主机名> <分支名>

例如当前本地分支为 branch2,要拉取并合并 origin/branch1,则执行:

git pull git@github.com:zh-lx/git-practice.git branch1

使用 rebase 模式进行合并

git pull --rebase

6、git checkout

切换到已有的本地分支 branch1

git checkout branch1

切换到远程分支 branch1

git checkout origin/branch1

基于当前本地分支创建一个新分支 branch2,并切换至 branch2

git checkout -b branch2

基于远程分支 branch1 创建一个新分支 branch2,并切换至 branch2

git checkout origin/branch1 -b branch2

当前创建的 branch2 关联的上游分支是 origin/branch1,所以 push 时需要如下命令关联到远程 branch2

git push --set-upstream origin branch2

撤销工作区 file 内容的修改。危险操作,谨慎使用

git checkout –

撤销工作区所有内容的修改。危险操作,谨慎使用

git checkout .

7、git restore取消缓存

将 a.js 文件取消缓存(取消 add 操作,不改变文件内容)

git reset --staged a.js

将所有文件取消缓存

git reset --staged .

8、git reset回滚代码
git reset 用于撤销各种 commit 操作,回滚代码

将某个版本的 commit 从本地仓库退回到工作区(取消 commit 和 add 操作,不改变文件内容)

默认不加 – 参数时时 mixed

git reset --mixed <commit_sha>

将某个版本的 commit 从本地仓库退回到缓存区(取消 commit 操作,不取消 add,不改变文件内容)

git reset --soft <commit_sha>

取消某次 commit 的记录(取消 commit 和 add,且改变文件内容)

git reset --hard <commit_sha>

以上三种操作退回了 commit,都是退回本地仓库的 commit,没有改变远程仓库的 commit。通常再次修改后配合如下命令覆盖远程仓库的 commit:

git push -f

二、常用命令
1、git revert: 取消某次 commit 内容
git revert 相比于 git reset,会取消某次 commit 更改的内容,但是不会取消掉 commit 记录,而是进行一次新的 commit 去覆盖要取消的那次 commit:

2、git rebase
git rebase 命令主要是针对 commit 的,目的是令 commit 记录变得更加简洁清晰。

进行 git rebase 可交互命令变基,end-commit-sha 可选,不填则默认为 HEAD

start 和 end commit-sha 左开右闭原则

git rebase -i

若是中间毫无冲突,变基则一步到位,否则需要逐步调整

上次变基为完成,继续上一次的变基操作

git rebase --continue

变基有冲突时丢弃有冲突的 commit

git rebase --skip

若是变基中途操作错误但是未彻底完成,可以回滚到变基之前的状态

git rebase --abort

3、git cherry-pick合并指定commit

将 commit-sha1 的变动合并至当前分支

git cherry-pick commit-sha1

将多次 commit 变动合并至当前分支

git cherry-pick commit-sha1 commit-sha2

将 commit-sha1 到 commit-sha5 中间所有变动合并至当前分支,中间使用…

git cherry-pick commit-sha1…commit-sha5

pick 时解决冲突后继续 pick

git cherry-pick --continue:

多次 pick 时跳过本次 commit 的 pick 进入下一个 commit 的 pick

git cherry-pick --skip

完全放弃 pick,恢复 pick 之前的状态

git cherry-pick --abort

未冲突的 commit 自动变更,冲突的不要,退出这次 pick

git cherry-pick --quit

4、git stash

把本地的改动缓存起来

git stash

缓存代码时添加备注,便于查找。强烈推荐

git stash save “message”

查看缓存记录

eg: stash@{0}: On feat-1.1: 活动功能

git stash list

取出上一次缓存的代码,并删除这次缓存

git stash pop

取出 index 为2缓存代码,并删除这次缓存,index 为对应 git stash list 所列出来的

git stash pop stash@{2}

取出上一次缓存的代码,但不删除这次缓存

stash apply

取出 index 为2缓存代码,但不删除缓存

git stash apply stash@{2}

清除某次的缓存

git stash drop stash@{n}

清除所有缓存

git stash clear

三、其他常用命令
1、git init
git init 会在本地生成一个 .git 文件夹,创建一个新的本地仓库:
git init

2、git remote: 关联远程仓库
git remote 用于将本地仓库与远程仓库关联

关联本地 git init 到远程仓库

git remote add origin

新增其他上游仓库

git remote add

移除与远程仓库的管理

git remote remove

修改推送源

git remote set-url origin

3、git status: 查看工作区状态

查看当前工作区暂存区变动

git status

以概要形式查看工作区暂存区变动

git status -s

查询工作区中是否有 stash 缓存

git status --show-stash

4、git log: 查看 commit 日志

显示 commit 日志

git log

以简要模式显示 commit 日志

git log --oneline

显示最近 n 次的 commit 日志

git log -n

显示 commit 及分支的图形化变更

git log --graph --decorate

5、git branch: 管理分支

删除分支

git branch -D <分支名>

重命名分支

git branch -M <老分支名> <新分支名>

将本地分支与远程分支关联

git branch --set-upstream-to=origin/xxx

取消本地分支与远程分支的关联

git branch --unset-upstream-to=origin/xxx

6、git rm:重新建立索引

删除某个文件索引(不会更改本地文件,只会是 .gitignore 范围重新生效)

git rm --cache – <文件名>

清除所有文件的索引

例如你首次提交了很多文件,后来你建立了一个 .gitignore 文件,有些文件不想推送到远端仓库,但此时有的文件已经被推送了

使用此命令可以是 .gitignore 重新作用一遍,从远程仓库中取消这些文件,但不会更改你本地文件

git rm -r --cached .

7、git diff: 对比差异

当工作区有变动,暂存区无变动,对比工作区和本地仓库间的代码差异

当工作区有变动和暂存区都有变动,对比工作区和暂存区的代码差异

git diff

显示暂存区和本地仓库间的代码差异

git diff --cached

or

git diff --staged

显示两个分支之间代码差异

git diff <分支名1> <分支名2>

8、git fetch: 获取更新

获取远程仓库特定分支的更新

git fetch <远程主机名> <分支名>

获取远程仓库所有分支的更新

git fetch --all

9、git merge

将本地某分支合并至当前分支

git merge <分支名>

将远程某分支合并至当前分支

git merge <远程主机名> <分支名>

wiki注意事项
1、clone需要在docker外进行
2、commit要在docker内进行
(追加提交)
如果push过一次,但是还想要在上次的基础之上修改一下,不abandon的话,使用git commit -a --amend
3、push的时候需要在docker外面进行

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值