导航:首页 > 程序命令 > git命令自动补全

git命令自动补全

发布时间:2023-08-02 15:25:42

❶ git如何使用

由于Git对于项目的管理很高效,因此现在使用Git的公司很多,在java开发中,我们经常使用的IDEA和Eclipse都可以很好的集成Git;

在IDEA中,天然集成Git插件,因此我们不需要再额外的进行操作,只需要在本地中安装Git就可以。

首先我们需要从远程仓库将代码克隆到本地:

git clone https://github.com/test, clone后面跟随远程仓库的链接地址

当我们打开本地的Git仓库项目之后,我们可以在项目中右击进行Git操作,其中包含提交,拉去,推送等命令

我们也可以在git->repository->pull将代码从远程仓库拉取下来进行更新

对应命令 git pull

Git基本命令简介

克隆远程仓库到本地:git clone https://github.com/test [myproject],将远程代码克隆到本地并重命名myproject(可选)

Git查看远程仓库地址: git remote -v

查看修改过的文件列表:git status

查看每个文件的修改对比: git diff

提交文件: git commit -m ‘提交信息’ filename

查看提交日志:git log

查看创建新分支:git branch [name] 如果name不为空则创建一个新的分支name

切换分支: git checkout name 需要切换的分支名name

撤销对文件的修改: git checkout filename 将filename(文件名)的修改内容撤销

拉取远程仓库代码: git pull origin/name 如果之前拉取过这个分支,直接使用git pull就可以

将代码推送到远程仓库: git push

.gitignore文件介绍

有时候我们在上传代码的时候,只需要将主要的文件上传即可,对于一些编译后的文件,我们并不需要上传,因此我们可以在.gitignore讲我们不需要的文件进行过滤;

a.txt 忽略指定文件a.txt

target/ 忽略target路径下的所有文件

*.class 忽略所有以.class结尾的文件

/project/build/ 路径在project/build下的所有文件

**/build/ 忽略所有build下的文件

希望以上内容对您有所帮助,点击这里领取我们线上学习免费课程。更多Java干货可以持续关注浙江优就业官方网站以及浙江优就业公众号具体了解哦。如果大家有时间的话,最好是能到我们线下基地进行实地考察。

❷ Git常用命令--(ls,cat,mv,touch)

描述:列出有关文件的信息(默认为当前目录)。如果没有指定-cftuvSUX或——Sort,则按字母顺序排序。

-a 列出所有文件,包括隐藏文件和以“.”开头的文件;
-d 列出目录本身;
-l 列出条目的详细信息;
-r 以反序排列;
-t 按时间排列;
-h 显示的文件大小按人类可读的方式;
-R 递归处理子目录 ;
-X 以文件名的后缀排序;
-S 按文件大小排序

ls
列出当前目录下的所有文件,这个用的最多。
ls -al
列出所有文件(包括隐藏文件和以“.”开头的文件),及其详细信息;
ls - lt
列出所有文件详细信息,并按时间排序,时间最近的靠前。

描述:连接和查看文本文件

-n 从1开始对所有输出行进行编号;
-b 和n相似,但是空行不编号;
-s 遇到连续空行时合并为一行;

cat file1
打印文件内容
cat file1 file2 > file3
合并文件1和2的内容输出到文件3,如果文件3存在则覆盖
cat -n file1 >> file2
把文件1的内容按行编号后追加到文件2

描述:用来移动文件或者重命名

-b 若需覆盖文件,则覆盖前先备份;
-f 如果目标文件存在,强制覆盖;
-i 若目标文件存在,询问是否覆盖;
-t 移动多个源文件到一个目录,使用中目标目录写在前,源文件在后

mv aa.txt bb.txt
将文件aa.txt改名为bb.txt;
mv aa.txt demo
将文件aa.txt移动到目录demo中;
mv aa.txt bb.txt dir1; mv -t ~/Desktop/demo-1/dir2 aa.txt bb.txt
先将文件aa.txt和bb.txt移动到目录dir1,然后再将文件aa.txt和bb.txt移动到目录dir2中;
mv dir1 dir2
如果目录dir2不存在,将目录dir1改名为dir2;如果dir2存在,将dir1移动到dir2

描述:用来新建一个文件,或者修改已存在文件的时间戳

-a 只更改存取时间;
-c 不建立任何文档;
-d 使用指定的日期时间;

touch aa.txt bb.txt
创建文件aa.txt和bb.txt
touch -c cc.txt
如果cc.txt不存在就不更改时间戳也不建立cc.txt
touch -r bb.txt
更新bb.txt的时间戳

Git命令和参数都很多,需要慢慢学。可以使用Git的 --help命令查看详细用法,如输入cat --help,查看cat命令的参数及使用方法。也可以使用网站explainshell.com,输入各种组合参数的命令来查询,每一个参数都会有解释。

❸ Git 中 6 个基本常用命令

大家好啊,我是大田。

想更深刻了解 Git 常用命令,先来看看原理图:

我们使用 Git 操作的核心步骤就是:

先add代码到git缓存

然后commit到git本地仓库

最后push到远程Github代码仓库

备注:

workspace:当前工作区,需要经过 add、commit、push 才能上传到远程仓库

index:缓存区,标仔镇记你本地的哪些内容是被 git 管理的

repository:本地仓库,保存各个版本的提交

remote:远程仓库

1、克隆远程项目到本地

git clone url

2、克隆后,创建新分支,名字叫 dev

git checkout -b dev

3、加到缓存区

1)git add .:添加所有项目至缓存区

2)git add 目录名:添加指定目录腔陆到缓存区

3)git add 文件名:添加指定文件到缓存区

4、提交至本地仓库

git commit -m "注释信息"

5、推送本地仓库信息至远程仓库

git push origin master:将本地分支的更新内容,全部推送至远程仓库 master 分支

git push origin dev:将本地 dev 分支推送到远程,再由一个人统一加到 master 分念圆粗支上

6、拉取远程仓库最新文件

git pull:拉取远程仓库所有分支合并到本地

git pull origin master:拉取远程master分支,合并到当前本地master分支

git fetch:仅做拉取操作,不做合并,合并需要自己再找其他方法

备注:一般都用 git pull

❹ git bash中输入文件名一部分,按什么快捷快可以让bash输出全名

tab键,用于自动补全。
通用的不全是文件名和文件夹
定制的补全可以拥有更多特性。

❺ git常用命令是什么

1、在当前目录新建一个Git代码库,:$ git init

2、新建一个目录,将其初始化为Git代码库,:$ git init [project-name]

3、下载一个项目和它的整个代码历史,:$ git clone [url]

4、显示当前的Git配置,:$ git config --list

5、编辑Git配置文件,:$ git config -e [--global]

6、设置提交代码时的用户信息,:$ git config [--global] user.name "[name]",:$ git config [--global] user.email "[email address]"

7、添加指定文件到暂存区,:$ git add [file1] [file2] ...

8、添加指定目录到暂存区,包括子目录,:$ git add [dir]

9、添加当前目录的所有文件到暂存区,:$ git add .

10、对于同一个文件的多处变化,可以实现分次提交,:$ git add -p

11、删除工作区文件,并且将这次删除放入暂存区,:$ git rm [file1] [file2] ...

12、停止追踪指定文件,但该文件会保留在工作区,:$ git rm --cached [file]

13、改名文件,并且将这个改名放入暂存区,:$ git mv [file-original] [file-renamed]

14、提交暂存区到仓库区,:$ git commit -m [message]

15、提交暂存区的指定文件到仓库区,:$ git commit [file1] [file2] ... -m [message]

16、提交工作区自上次commit之后的变化,直接到仓库区,:$ git commit -a

17、提交时显示所有diff信息,:$ git commit -v

18、使用一次新的commit,替代上一次提交

19、 如果代码没有任何新变化,则用来改写上一次commit的提交信息,:$ git commit --amend -m [message]

20、重做上一次commit,并包括指定文件的新变化,:$ git commit --amend [file1] [file2]

(5)git命令自动补全扩展阅读:

git有以下功能:

1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。

2、在自己的机器上根据不同的开发目的,创建分支,修改代码。

3、在单机上自己创建的分支上提交代码。

4、在单机上合并分支。

5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。

6、生成补丁(patch),把补丁发送给主开发者。

7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。

8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

❻ Git 经典操作场景,专治不会合代码

git 对于大家应该都不太陌生,熟练使用git已经成为程序员的一项基本技能,尽管在工作中有诸如 Sourcetree 这样牛X的客户端工具,使得合并代码变的很方便。但找工作面试和一些需彰显个人实力的场景,仍然需要我们掌握足够多的git命令。

下边我们整理了45个日常用git合代码的经典操作场景,基本覆盖了工作中的需求。

如果让困你用 git commit -a 提交了一次变化(changes),而你又不确定到底这次提交了哪些内容。你就可以用下面的命令显示当前 HEAD 上的最近一次的提交(commit):

或者

如果你的提交信息(commit message)写错了且这次提交(commit)还没有推(push), 你可以通过下面的方法来修改提交信息烂吵(commit message):

这会打开你的默认编辑器, 在这里你可以编辑信息. 另一方面, 你也可以用一条命令一次完成:

如果你已经推(push)了这次提交(commit), 你可以修改这次提交(commit)然后强推(force push), 但是不推荐这么做。

如果这只是单个提交(commit),修改它:

如果你需要修改所有 历史 , 参考 'git filter-branch'的指南页.

通过下面的方法,从一个提交(commit)里移除一个文件:

这将非常有用,当你有一个开放的补丁(open patch),你往上面提交了一个不必要的文件,你需要强推(force push)去更新这个远程补丁。

如果你需要删除推了的提交(pushed commits),你可以使用下面的方法。可是,这会不可逆的改变你的 历史 ,也会搞乱那些已经从该仓库拉取(pulled)了的人的 历史 。简而言之,如果你不是很确定,千万不要这么做。

如果你还没有推到远程, 把Git重置(reset)到你最后一次提交前的状态就可以了(同时保存暂存的变化):

这只能在没有推送之前有用. 如果你已经推了, 唯一安全能做的是 git revert SHAofBadCommit , 那会创建一个新的提交(commit)用于撤消前一个提交的所有变化(changes);或者, 如果你推的这个分支是rebase-safe的 (例如:其它开发者不会从这个分支拉), 只需要使用 git push -f 。

同样的警告:不到万不得已的时候不要这么做.

或者做一个 交互式rebase 删除那些你想要删除的提交(commit)里所对应的坦历念行。

注意, rebasing(见下面)和修正(amending)会用一个 新的提交(commit)代替旧的 , 所以如果之前你已经往远程仓库上推过一次修正前的提交(commit),那你现在就必须强推(force push) ( -f )。注意 – 总是 确保你指明一个分支!

一般来说, 要避免强推 . 最好是创建和推(push)一个新的提交(commit),而不是强推一个修正后的提交。后者会使那些与该分支或该分支的子分支工作的开发者,在源 历史 中产生冲突。

如果你意外的做了 git reset --hard , 你通常能找回你的提交(commit), 因为Git对每件事都会有日志,且都会保存几天。

你将会看到一个你过去提交(commit)的列表, 和一个重置的提交。选择你想要回到的提交(commit)的SHA,再重置一次:

这样就完成了。

一般来说, 如果你想暂存一个文件的一部分, 你可这样做:

-p 简写。这会打开交互模式, 你将能够用 s 选项来分隔提交(commit);然而, 如果这个文件是新的, 会没有这个选择, 添加一个新文件时, 这样做:

然后, 你需要用 e 选项来手动选择需要添加的行,执行 git diff --cached 将会显示哪些行暂存了哪些行只是保存在本地了。

git add 会把整个文件加入到一个提交. git add -p 允许交互式的选择你想要提交的部分.

多数情况下,你应该将所有的内容变为未暂存,然后再选择你想要的内容进行commit。但假定你就是想要这么做,这里你可以创建一个临时的commit来保存你已暂存的内容,然后暂存你的未暂存的内容并进行stash。然后reset最后一个commit将原本暂存的内容变为未暂存,最后stash pop回来。

注意1: 这里使用 pop 仅仅是因为想尽可能保持幂等。注意2: 假如你不加上 --index 你会把暂存的文件标记为为存储。

如果你只是想重置源(origin)和你本地(local)之间的一些提交(commit),你可以:

重置某个特殊的文件, 你可以用文件名做为参数:

如果你想丢弃工作拷贝中的一部分内容,而不是全部。

签出(checkout)不需要的内容,保留需要的。

另外一个方法是使用 stash , Stash所有要保留下的内容, 重置工作拷贝, 重新应用保留的部分。

或者, stash 你不需要的部分, 然后stash drop。

这是另外一种使用 git reflog 情况,找到在这次错误拉(pull) 之前HEAD的指向。

重置分支到你所需的提交(desired commit):

完成。

先确认你没有推(push)你的内容到远程。

git status 会显示你领先(ahead)源(origin)多少个提交:

一种方法是:

在main下创建一个新分支,不切换到新分支,仍在main下:

把main分支重置到前一个提交:

HEAD^ 是 HEAD^1 的简写,你可以通过指定要设置的 HEAD 来进一步重置。

或者, 如果你不想使用 HEAD^ , 找到你想重置到的提交(commit)的hash( git log 能够完成), 然后重置到这个hash。使用 git push 同步内容到远程。

例如, main分支想重置到的提交的hash为 a13b85e :

签出(checkout)刚才新建的分支继续工作:

假设你正在做一个原型方案(原文为working spike (see note)), 有成百的内容,每个都工作得很好。现在, 你提交到了一个分支,保存工作内容:微信搜索公众号:Java后端编程,回复:java 领取资料 。

当你想要把它放到一个分支里 (可能是 feature , 或者 develop ), 你关心是保持整个文件的完整,你想要一个大的提交分隔成比较小。

假设你有:

我去可以通过把内容拿到你的分支里,来解决这个问题:

这会把这个文件内容从分支 solution 拿到分支 develop 里来:

然后, 正常提交。

Note: Spike solutions are made to analyze or solve the problem. These solutions are used for estimation and discarded once everyone gets clear visualization of the problem.

假设你有一个 main 分支, 执行 git log , 你看到你做过两次提交:

让我们用提交hash(commit hash)标记bug ( e3851e8 for #21, 5ea5173 for #14).

首先, 我们把 main 分支重置到正确的提交( a13b85e ):

现在, 我们对 bug #21 创建一个新的分支:

接着, 我们用 cherry-pick 把对bug #21的提交放入当前分支。这意味着我们将应用(apply)这个提交(commit),仅仅这一个提交(commit),直接在HEAD上面。

这时候, 这里可能会产生冲突, 参见交互式 rebasing 章 冲突节 解决冲突.

再者, 我们为bug #14 创建一个新的分支, 也基于 main 分支

最后, 为 bug #14 执行 cherry-pick :

一旦你在github 上面合并(merge)了一个pull request, 你就可以删除你fork里被合并的分支。如果你不准备继续在这个分支里工作, 删除这个分支的本地拷贝会更干净,使你不会陷入工作分支和一堆陈旧分支的混乱之中(IDEA 中玩转 Git)。

如果你定期推送到远程, 多数情况下应该是安全的,但有些时候还是可能删除了还没有推到远程的分支。让我们先创建一个分支和一个新的文件:

添加文件并做一次提交

现在我们切回到主(main)分支,‘不小心的’删除 my-branch 分支

在这时候你应该想起了 reflog , 一个升级版的日志,它存储了仓库(repo)里面所有动作的 历史 。

正如你所见,我们有一个来自删除分支的提交hash(commit hash),接下来看看是否能恢复删除了的分支。

看! 我们把删除的文件找回来了。Git的 reflog 在rebasing出错的时候也是同样有用的。

删除一个远程分支:

你也可以:

删除一个本地分支:

首先, 从远程拉取(fetch) 所有分支:

假设你想要从远程的 daves 分支签出到本地的 daves

( --track 是 git checkout -b [branch] [remotename]/[branch] 的简写)

这样就得到了一个 daves 分支的本地拷贝, 任何推过(pushed)的更新,远程都能看到.

你可以合并(merge)或rebase了一个错误的分支, 或者完成不了一个进行中的rebase/merge。Git 在进行危险操作的时候会把原始的HEAD保存在一个叫ORIG_HEAD的变量里, 所以要把分支恢复到rebase/merge前的状态是很容易的。

不幸的是,如果你想把这些变化(changes)反应到远程分支上,你就必须得强推(force push)。是因你快进(Fast forward)了提交,改变了Git 历史 , 远程分支不会接受变化(changes),除非强推(force push)。这就是许多人使用 merge 工作流, 而不是 rebasing 工作流的主要原因之一, 开发者的强推(force push)会使大的团队陷入麻烦。使用时需要注意,一种安全使用 rebase 的方法是,不要把你的变化(changes)反映到远程分支上, 而是按下面的做:

假设你的工作分支将会做对于 main 的pull-request。一般情况下你不关心提交(commit)的时间戳,只想组合 所有 提交(commit) 到一个单独的里面, 然后重置(reset)重提交(recommit)。确保主(main)分支是最新的和你的变化都已经提交了, 然后:

如果你想要更多的控制, 想要保留时间戳, 你需要做交互式rebase (interactive rebase):

如果没有相对的其它分支, 你将不得不相对自己的 HEAD 进行 rebase。例如:你想组合最近的两次提交(commit), 你将相对于 HEAD~2 进行rebase, 组合最近3次提交(commit), 相对于 HEAD~3 , 等等。

在你执行了交互式 rebase的命令(interactive rebase command)后, 你将在你的编辑器里看到类似下面的内容:

所有以 # 开头的行都是注释, 不会影响 rebase.

然后,你可以用任何上面命令列表的命令替换 pick , 你也可以通过删除对应的行来删除一个提交(commit)。

例如, 如果你想 单独保留最旧(first)的提交(commit),组合所有剩下的到第二个里面 , 你就应该编辑第二个提交(commit)后面的每个提交(commit) 前的单词为 f :

如果你想组合这些提交(commit) 并重命名这个提交(commit) , 你应该在第二个提交(commit)旁边添加一个 r ,或者更简单的用 s 替代 f :

你可以在接下来弹出的文本提示框里重命名提交(commit)。

如果成功了, 你应该看到类似下面的内容:

--no-commit 执行合并(merge)但不自动提交, 给用户在做提交前检查和修改的机会。 no-ff 会为特性分支(feature branch)的存在过留下证据, 保持项目 历史 一致(更多Git资料,参见IDEA 中如何完成 Git 版本回退?)。

有时候,在将数据推向上游之前,你有几个正在进行的工作提交(commit)。这时候不希望把已经推(push)过的组合进来,因为其他人可能已经有提交(commit)引用它们了。

这会产生一次交互式的rebase(interactive rebase), 只会列出没有推(push)的提交(commit), 在这个列表时进行reorder/fix/squash 都是安全的。

检查一个分支上的所有提交(commit)是否都已经合并(merge)到了其它分支, 你应该在这些分支的head(或任何 commits)之间做一次diff:

这会告诉你在一个分支里有而另一个分支没有的所有提交(commit), 和分支之间不共享的提交(commit)的列表。另一个做法可以是:

如果你看到的是这样:

这意味着你rebase的分支和当前分支在同一个提交(commit)上, 或者 领先(ahead) 当前分支。你可以尝试:

如果你不能成功的完成rebase, 你可能必须要解决冲突。

首先执行 git status 找出哪些文件有冲突:

在这个例子里面, README.md 有冲突。打开这个文件找到类似下面的内容:

你需要解决新提交的代码(示例里, 从中间 == 线到 new-commit 的地方)与 HEAD 之间不一样的地方.

有时候这些合并非常复杂,你应该使用可视化的差异编辑器(visual diff editor):

在你解决完所有冲突和测试过后, git add 变化了的(changed)文件, 然后用 git rebase --continue 继续rebase。

如果在解决完所有的冲突过后,得到了与提交前一样的结果, 可以执行 git rebase --skip 。

任何时候你想结束整个rebase 过程,回来rebase前的分支状态, 你可以做:

暂存你工作目录下的所有改动

你可以使用 -u 来排除一些文件

假设你只想暂存某一个文件

假设你想暂存多个文件

这样你可以在 list 时看到它

首先你可以查看你的 stash 记录

然后你可以 apply 某个 stash

此处, 'n'是 stash 在栈中的位置,最上层的 stash 会是0

除此之外,也可以使用时间标记(假如你能记得的话)。

你需要手动create一个 stash commit , 然后使用 git stash store 。

如果已经克隆了:

如果你想恢复一个已删除标签(tag), 可以按照下面的步骤: 首先, 需要找到无法访问的标签(unreachable tag):

记下这个标签(tag)的hash,然后用Git的 update-ref

这时你的标签(tag)应该已经恢复了。

如果某人在 GitHub 上给你发了一个pull request, 但是然后他删除了他自己的原始 fork, 你将没法克隆他们的提交(commit)或使用 git am 。在这种情况下, 最好手动的查看他们的提交(commit),并把它们拷贝到一个本地新分支,然后做提交。

做完提交后, 再修改作者,参见变更作者。然后, 应用变化, 再发起一个新的pull request。

在 OS X 和 Linux 下, 你的 Git的配置文件储存在 ~/.gitconfig 。我在 [alias] 部分添加了一些快捷别名(和一些我容易拼写错误的),如下:

你可能有一个仓库需要授权,这时你可以缓存用户名和密码,而不用每次推/拉(push/pull)的时候都输入,Credential helper能帮你。

你把事情搞砸了:你 重置(reset) 了一些东西, 或者你合并了错误的分支, 亦或你强推了后找不到你自己的提交(commit)了。有些时候, 你一直都做得很好, 但你想回到以前的某个状态。

这就是 git reflog 的目的, reflog 记录对分支顶端(the tip of a branch)的任何改变, 即使那个顶端没有被任何分支或标签引用。基本上, 每次HEAD的改变, 一条新的记录就会增加到 reflog 。遗憾的是,这只对本地分支起作用,且它只跟踪动作 (例如,不会跟踪一个没有被记录的文件的任何改变)。

上面的reflog展示了从main分支签出(checkout)到2.2 分支,然后再签回。那里,还有一个硬重置(hard reset)到一个较旧的提交。最新的动作出现在最上面以 HEAD@{0} 标识.

如果事实证明你不小心回移(move back)了提交(commit), reflog 会包含你不小心回移前main上指向的提交(0254ea7)。

然后使用git reset就可以把main改回到之前的commit,这提供了一个在 历史 被意外更改情况下的安全网。

阅读全文

与git命令自动补全相关的资料

热点内容
重庆农村商业银行app怎么老出问题 浏览:465
慧编程配置要求 浏览:667
数控机床编程与操作视频 浏览:458
文件夹资料误删怎么办 浏览:81
手机app怎么下载安装 浏览:492
最新的java版本 浏览:993
万卷小说缓存在哪个文件夹 浏览:687
st单片机怎样烧 浏览:871
watch怎么下载APP 浏览:821
银行程序员面试 浏览:358
我的世界的服务器为什么不能更新 浏览:769
命令与征服绝命时刻比赛视频 浏览:827
电脑捕获视频的文件夹怎么换 浏览:482
windows编译安卓软件 浏览:210
加密dns列表 浏览:990
股市操练大全八册pdf 浏览:120
c传递指针到python 浏览:163
手动添加引导的命令 浏览:54
740服务器小蓝条是做什么的 浏览:523
linux文件操作命令 浏览:129