git add后取消_Git 指令

7968605b0adccb9f5ad012225c2ffdeb.png

480c425b98aa3361cf70430c91f28198.png
Git 操作原理

初始化 / 新建工作区

git init:初始化一个 Git 仓库(repository),即把当前所在目录变成 Git 可以管理的仓库。

git clone git@github.com:username/<repo name>.git :从 GitHub 克隆一份远程库到本地,使用的是 SSH 协议

git clone https://github.com/username/repo name.git:使用 https 协议拉取远程仓库

添加(add)文件,把文件添加到暂存区(stage)

git add $filename:$filename表示一个文件名。把文件添加到暂存区(stage),可被追踪纪录下来。可多次使用这个方法来添加多个文件

git add -A :暂存所有的文件,包括新增加的、修改的和删除的文件。

git add . :暂存新增加的和修改的文件,不包括已删除的文件。即当前目录下所有文件。

git add -u:暂存修改的和删除的文件,不包括新增加的文件

提交(commit) 文件

git commit -m "本次提交说明" :把暂存区所有文件修改提交到仓库的当前分支。

git commit -am "本次提交说明" 把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤

注意:如果git add <file>某个文件,然后对这个文件进行修改了,再git commit -m是无法提交最新版本的文件的,但这时该文件已经被跟踪过了,因此可以使用git commit -am来提交最新版本。 它相当于git add -ugit commit –m 两句操作合并为一句进行使用。

git commit --amend重新提交,第二次提交将代替第一次提交的结果。最终只会有一个提交。

Branch & checkout 分支。分支包括远程分支和本地分支

git branch :列出本地当前所有分支。当前分支前面会标有一个 * 号。本地分支不一定包含项目的全部分支。

git branch $branchName:创建新分支

git branch -r:查看远程分支列表。

git branch -a:显示项目的全部分支,包含本地分支和远程分支。

git branch -v :查看每一个分支的最后一次提交。

git checkout $branchName:切换分支。

git checkout -b $branchName 创建切换到新的分支,相当于下面两条命令: git branch $branchName + git checkout $branchName

git checkout $branchName <file1> <file2>:将 $branchName 分支下的 file1、file2 文件 合并到本分支(注意此时处在的分支不是$branchName) 。这样做的话相当于只 merge 一部分文件

git checkout -- <file>:取消对 filename 文件做的修改( 建议使用git restore命令来代替)

git rm --cached <file>:将已经保存在暂存区的文件(已经add过的)丢弃(unstage)。不会删除本地文件。

git rm <file>:从版本库中删除该文件。注意在本地的文件也是会被删除的

如果想把<file>换成文件夹,加上-r选项即可,r 表示递归

注意:新版本的 Git 引入了两个新命令 git switchgit restore,用以替代现在的 git checkout。换言之,git checkout 将逐渐退出历史舞台。

在 Git 的新版本2.23中,有以下几种新用法:

git switch $branchName :切换分支 等价于 git checkout $branchName

git switch -c $branchName 切换并创建新的分支 等价于 git checkout -b $branchName

git restore $filename: 取消该文件所做的修改

git merge $branchName :合并指定分支到当前所在的分支。

git branch -d $branchName :删除分支(一般要在合并完分支之后)

git branch -D $branchName:强行删除分支,尤其适用于分支内容有了新的修改但还没有被合并的情况。

Pull & push

git push origin $branchName :$branchName 是分支名;把该分支上的所有本地提交推送到远程库对应的远程分支上。

git checkout <分支> origin/<分支>: 如果远程有某一个分支而本地没有,该命令将远程的这个分支迁到本地。

git pull: 从远程获取最新版本同时合并(merge)到本地

git fetch: 从远程分支拉取代码。

注意:git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。会拉取当前项目的所有分支的commit

git pull则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。

Stash

当前修改还没完成,或者暂时不想commit,然而需要做pullmerge或者checkout / switch到其他分支的操作,一般会用stash将修改暂时储藏。

stash操作是不随分支的,无论在哪个分支的stash,都可以应用到任何分支

git stash:把当前分支的工作现场储存起来,等以后恢复现场后继续工作。一般适用于还没有 commit 的分支代码。

git stash save -a "message":功能同上, 同时添加一条 message。

git stash list查看储存的工作现场纪录列表。

git stash clear:清空所有暂存区的 stash 纪录。

git stash apply恢复最近 stash 过的工作现场,恢复后,stash 内容并不删除,可以用 git stash drop 命令来删除。apply 和 drop 后面都可以加上某一指定的 stash_id。

git stash drop:如上

git stash pop:相当于上面两条命令(git stash apply + git stash drop),恢复回到工作现场的同时把 stash 内容也删除了。

Diff 比较差异

git diff <file> :比较当前文件和暂存区文件差异

git diff <branch1> <branch2> : 在两个分支之间比较,会详细地逐个列出文件的差异

git diff <branch1> <branch2> --stat:只列出两个分支间有差异的文件的文件名(相比于上一个命令了来说)

git diff <branch1> <branch2> <file>:比较两个分支中某一文件的差异,写在左边的分支是旧的,写在右边的是新的

git diff <commit_id1> <commit_id2> --stat: 比较两次提交之间的文件差异

在比较的界面用上下箭头前进、后退,按 q 退出比较

Remote 远程仓库操作

git remote :查看已经配置的远程仓库服务器,效果同 git remote show

git remote -v:显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。

git push -u origin master:关联后,使用该命令第一次推送 master 分支的所有内容,后续再推送的时候就可以省略后面三个参数了,其中参数 u 代表上游(upstream)的意思。

Log 查看日志

git log:查看项目的提交历史,会列出提交人和提交时间。常用来找到想要回退的版本号

git reflog:查看每一次命令操作记录。常用来找到未来的版本号(版本回退后)

git log --graph:输出分支合并图。

Reset 版本回退

git reset --hard <commit_id>:将版本回退到对应的这个 commit_id 上。(只需要输入commit id 的一部分让git知道是那次commit的即可)

commit id 是每次执行 commit 命令后给项目生成的一个 unique 的 id 。不会出现多次 commit 属于同一 id 的情况。因此可以用来标识每次的提交。

可以通过git log命令查看以前提交 的 commit id.

在版本回退以后是无法通过git log查看回退到的版本之后的版本的commit id,这时候要使用git reflog

其它命令

git ls-files:列出所有跟踪的文件名

本文内容同步在GitHub地址上

https://github.com/wunian12138/zhihu/blob/master/git%E6%8C%87%E4%BB%A4.md​github.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值