Git常用命令

在这里插入图片描述

常用命令

Git init

在本地新建一个repo,进入一个项目目录,执行git init会初始化一个repo,并在当前文件夹下创建一个.git文件夹

Git clone

获取一个url对应的远程Git repo, 创建一个local copy.一般的格式是git clone [url].clone下来的repo会以url最后一个斜线后面的名称命名,创建一个文件夹,如果想要指定特定的名称,可以git clone [url] newname指定.

Git status

查询repo的状态.

Git add

将新添加的文件或者新改动的文件放入暂存区(staging area)

git add . 递归地添加当前工作目录中的所有文件。

Git commit

提交已经被add进来的改动

git commit -m "the commit message"为commit增加说明信息

git commit -a会把所有已经track的文件的改动add进来,然后提交

git commit --amend增补提交,会使用与当前提交节点相同的父节点进行一次新的提交,旧的提交将会被取消

Git clean

是从工作目录中移除没有track的文件.
通常的参数是git clean -df:
-d表示同时移除目录,-f表示force,因为在git的配置文件中, clean.requireForce=true,如果不加-f,clean将会拒绝执行.

Git stash

把当前的改动压入一个栈.

git stash将会把当前目录和index中的所有改动(但不包括未track的文件)压入一个栈,然后留给你一个clean的工作状态,即处于上一次最新提交处.

git stash list显示这个栈的list

git stash apply取出stash中的上一个项目(stash@{0}),并且应用于当前的工作目录.
也可以指定别的项目,比如git stash apply stash@{1}.

git stash pop在应用stash中项目的同时想要删除它

git stash drop删除上一个,也可指定参数删除指定的一个项目.

git stash clear删除所有项目.

Git branch

可以用来列出分支,创建分支和删除分支

git branch -v可以看见每一个分支的最后一次提交.

git branch列出本地所有分支,当前分支会被星号标示出.

git branch (branchname)创建一个新的分支(当你用这种方式创建分支的时候,分支是基于你的上一次提交建立的).

git branch -d (branchname)删除一个分支.

git branch -D (branchName)强制删除一个分支

【注】删除当前分支。分支目前被占用,所以删除失败。先checkout到其它分支,再删除

【注】删除未merge的分支,会报error: The branch is not fully merge,确定删除用-D

Git checkout

git checkout (branchname)切换到一个分支.

git checkout -b (branchname)创建并切换到新的分支.

git checkout --<filename>此命令会使用HEAD中的最新内容替换掉你的工作目录中的文件.已添加到暂存区的改动以及新文件都不会受到影响.
注意:git checkout filename会删除该文件中所有没有暂存和提交的改动,这个操作是不可逆的.

Git merge

git merge [alias]/[branch]把一个分支merge进当前的分支.

可能需要解决文件冲突问题

Git tag

会在一个提交上建立永久性的书签,通常是发布一个release版本或者ship了什么东西之后加tag.

git tag查看已有标签

git tag -d v1.0删除标签

git show v1.0查看此版本所修改的内容

git tag -a v1.0-a参数会允许你添加一些信息

push的时候是不包含tag的,如果想包含,可以在push时加上–tags参数.

Git remote

列出、添加和删除远程存储库别名。

git remote列出所有的别名

git remote -v可以看见每一个别名对应的实际url

git remote add [alias][url]添加一个新的remote repo

git remote rm [alias]删除一个存在的remote alias

git remote rename [old-alias][new-alias] 重命名

git remote set-url [alias][url]更新url

Git fetch

从远程存储库下载新的分支和数据。

git fetch [alias]取某一个远程repo

git fetch --all取全部的repo

fetch将会取到所有你本地没有的数据,所有取下来的分支可以被叫做remote branches,它们和本地分支一样(可以看diff,log等,也可以merge到其他分支),但是Git不允许你checkout到它们.

Git pull

取远程的repo,并且尝试合并到当前分支

pull == fetch + merge FETCH_HEAD

git pull会首先执行git fetch,然后执行git merge,把取来的分支的head merge到当前分支.这个merge操作会产生一个新的commit.
如果使用–-rebase参数,它会执行git rebase来取代原来的git merge.

Git push

将新的分支和数据推到远程仓库

git push [alias][branch]将会把当前分支merge到alias上的[branch]分支.如果分支已经存在,将会更新,如果不存在,将会添加这个分支.

如果有多个人向同一个remote repo push代码, Git会首先在你试图push的分支上运行git log,检查它的历史中是否能看到server上的branch现在的tip,如果本地历史中不能看到server的tip,说明本地的代码不是最新的,Git会拒绝你的push,让你先fetch,merge,之后再push,这样就保证了所有人的改动都会被考虑进来.

git push origin -delete删除远程分支【慎用】

进阶命令

Git reflog

git reflog是对reflog进行管理的命令,reflog是git用来记录引用变化的一种机制,比如记录分支的变化或者是HEAD引用的变化.

当git reflog不指定引用的时候,默认列出HEAD的reflog.
HEAD@{0}代表HEAD当前的值,HEAD@{3}代表HEAD在3次变化之前的值.

git会将变化记录到HEAD对应的reflog文件中,其路径为.git/logs/HEAD, 分支的reflog文件都放在.git/logs/refs目录下的子目录中.

Git rebase

–-rebase不会产生合并的提交,它会将本地的所有提交临时保存为补丁(patch),放在”.git/rebase”目录中,然后将当前分支更新到最新的分支尖端,最后把保存的补丁应用到分支上.
rebase的过程中,也许会出现冲突,Git会停止rebase并让你解决冲突,在解决完冲突之后,用git add去更新这些内容,然后无需执行commit,只需要:

git rebase –continue就会继续打余下的补丁.
git rebase –abort将会终止rebase,当前分支将会回到rebase之前的状态.

Git reset

撤消更改和提交

soft (commit) < mixed (commit + add) < hard (commit + add + local working)

reset HEAD – – filename 把不小心add进去的文件从staged状态取出来

git reset --mixed id

Git revert

反转撤销提交。

git revert HEAD: 撤销最近的一个提交

git revert会创建一个反向的新提交,可以通过参数-n来告诉Git先不要提交.

Git diff

不加参数的git diff:展示未暂存的改动

git diff HEAD 比较working directory和上次提交之间所有的改动。

Git log

展示branch中commit历史记录

git log --oneline --number 每条log只显示一行,显示number条
git log --oneline --graph 可以图形化地表示出分支合并历史
git log branchname 可以显示特定分支的log
git log --oneline branch1 ^branch2 可以查看在分支1,却不在分支2中的提交 ^表示排除这个分支(Window下可能要给^branch2加上引号).
git log –-decorate会显示出tag信息.
git log –-author=[author name] 可以指定作者的提交历史.
git log --since --before --until --after根据提交时间筛选log  
e.g.(git log --since="2022-10-01")
–no-merges可以将merge的commits排除在外.
git log –-grep 根据commit信息过滤log: git log –grep=keywords
默认情况下, git log –-grep –-author是OR的关系,即满足一条即被返回,如果你想让它们是AND的关系,可以加上–-all-match的option.
Git mv

用于移动或重命名一个文件、目录或软链接

git mv [file] [newfile]

Git blame

查看指定文件的修改记录

git blame [file]

Git config

显示当前的git配置信息

git config -e编辑当前仓库的配置文件

git config -e --global编辑系统上所有仓库的配置文件

git config --global user.name "think"设置提交代码时的用户名

git config --global user.email test@qq.com设置提交代码时的邮箱信息

Git switch

git 2.23版本新增的命令

用于切换分支、创建分支并切换分支

git switch [branchName]切换分支

git switch -c [branchName]创建一个新分支并切换到该新分支

git switch -c [branchName][commit]以一个提交commit来创建一个分支

git switch -c [branchName][tagName]以一个tag来创建一个分支

git switch --detach [commit]切换到某一个commit但不创建新的分支

git switch -切换到上一个切换的分支

git switch --orphan [branchName]创建一个没有任何提交记录的分支,删除所有跟踪的文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值