导航:首页 > 程序命令 > git的常用命令有哪些

git的常用命令有哪些

发布时间:2022-09-19 21:22:37

1. git branch管理常用命令

git
branch管理常用命令查看本地分支[plain]git
branch
*
dev
master
*代表当前位于dev分支查看远程分支[plain]git
branch
--remote
origin/dev
origin/master
创建分支[plain]git
checkout
-b
new_branch
注意,new_branch的代码来自于当前分支切换分支[plain]git
checkout
another_branch
和创建分支就差-b参数push本地分支代码到远端服务器[plain]git
push
origin
branch_name
如果远端服务器没有该分支,将会自动创建pull远端分支代码到本地对应分支[plain]git
pull
origin
branch_name
删除本地分支,首先切换到别的分支,然后才能删除某个分支[plain]git
checkout
b
git
branch
-d
a
删除远程分支[plain]git
push
origin
--delete
branch_name
合并本地分支[plain]git
merge
b
假设当前分支为dev,上面的命令就是将本地的b分支代码合并到当前分支dev中合并远程分支,和前面的几乎一样,[plain]git
merge
origin/b
远程分支b被合并到本地当前分支dev中了。

2. git中,文件的状态

git中常用的一个命令便是,git status,该命令的作用是查看哪些文件处于什么状态.
可以用 git status 命令查看哪些文件处于什么状态。 如果在克隆仓库后立即使用此命令,会看到类似这样的输出:
echo 'My Project' > README
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)

nothing added to commit but untracked files present (use "git add" to track)

在状态报告中,可以看到,出现了一个untracked files文件,readme.未跟踪的文件意味着在之前的快照(提交)中没有这些文件,git不会自动的将这些文件纳入可追踪的范围,除非需要明确的指出我要跟踪做这些文件.此时,可以执行:
git add readme.txt
再运行git status
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: README
可以看到readme文件处于被追踪的状态中,是被暂存的状态.但是仍然没有commit.

此时,如果我们做了修改,对于一个被追踪的文件,进行了修改,如果你修改了一个CONTRIBUTING.md的已经被追踪的文件,然后运行:
git status
则会出现以下内容:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

意思为: 名为CONTRIBUTING.md已经跟踪的文件发生了变化.但是还没有被放入暂存区,如需要暂存本次修改,需要运行git add命令.
git add命令是一个多命令,可以使用将其从未追踪文件变为已追踪文件,还可以将已追踪文件未修改的内容,变为已追踪文件暂存.还能用户合并时将冲突文件标记为已解决的状态等.
此时,运行git status输出为:
git add CONTRIBUTING.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

可以看到,此时输出的意思为:两个文件都已经暂存,在下次commit时,会一起提交到仓库.

假设此时,需要继续在修改CONTRIBUTING.md文件,此时再运行git status命令,会出现:
git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

此时,CONTRIBUTING.md文件同时出现在暂存区和非暂存区,是因为,git add文件只是暂存了上次执行git add命令时文件的暂存,如若继续暂存,需要继续运行git status
git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

如果我们需要查看当前工作区文件和暂存区文件的差异,可以使用git diff命令.若要查看已暂存的将要添加到下次提交里的内容,可以用 git diff --staged 命令。 这条命令将比对已暂存文件与最后一次提交的文件差异.

此时,可以进行commit,进行提交啦.现在的暂存区已经准备就绪,可以提交了。 在此之前,请务必确认还有什么已修改或新建的文件还没有 git add 过, 否则提交的时候不会记录这些尚未暂存的变化。 这些已修改但未暂存的文件只会保留在本地磁盘。 所以,每次准备提交前,先用 git status 看下,你所需要的文件是不是都已暂存起来了, 然后再运行提交命令 git commit.

现在你已经创建了第一个提交! 可以看到,提交后它会告诉你,当前是在哪个分支(master)提交的,本次提交的完整 SHA-1 校验和是什么(463dc4f),以及在本次提交中,有多少文件修订过,多少行添加和删改过。

提交记录的是放在暂存区域的快照.任何还未暂存的文件仍然保持已修改的状态,可以在下次提交时纳入版本管理,每次运行一次git commit都是对项目做一次快照,以后可以回到这个状态,或者进行比较.

跳过使用暂存区域
尽管使用暂存区域的方式可以静心准备要提交的细节,但是,有个问题就是繁琐,git提供了一个暂存区域的方式,只要提交的时候,git commit -a,则git会将已经跟踪过的文件暂存起来一起提交.从而省略一次git add,省略的步骤是,将那些已被追踪的文件改为暂存.这是因为 -a 选项使本次提交包含了所有修改过的文件。 这很方便,但是要小心,有时这个选项会将不需要的文件添加到提交中。

查看git提交历史,使用git log命令.会出现下面输出:
$ git log
commit
Author: Scott Chacon [email protected]
Date: Mon Mar 17 21:52:11 2008 -0700

commit
Author: Scott Chacon [email protected]
Date: Sat Mar 15 16:40:33 2008 -0700

commit
Author: Scott Chacon [email protected]
Date: Sat Mar 15 10:31:28 2008 -0700

在不传入任何参数的前提下,git log会按照时间顺序列出所有的提交,按照时间顺序倒排,commit之后是每次提交的SHA-1校验和(是一个十六位的长度为四十的哈希值),以及作者信息和提交说明.

3. Git工作流程和常用命令分享

git是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。林纳斯·托瓦兹在编写第一个版本时就使用了“git”这个名称, 他将工具描述为“愚蠢的内容跟踪器”。

[图片上传失败...(image-c23291-1619063471664)]

四个专有名词:

Workspace:工作区

Index / Stage:暂存区

Repository:仓库区(或本地仓库)

Remote:远程仓库

打开本地生成的.git隐藏文件

创建新项目gittest

创建新文件test.txt

git add <file>

git status显示有变更的文件

git restore <file> 撤回文件修改内容

git commit –m “注释”

修改内容-> 执行git diff工作区和本地仓库的差异

git log显示当前分支的版本历史

git reset --hard HEAD^ 当前版本回退到上一个版本

git reset --hard HEAD^ ^ 当前版本回退到上上一个版本

git reset --hard HEAD~100 回退到前100个版本

恢复已经删除的版本

git reflog 展示所有的提交记录

git reset --hard <版本号> 回退到指定版本

git push origin master 将本地master分支推送到远程master分支,相当于创建远程分支

git checkout -b dev = git branch dev + git checkout dev 创建并切换分支

git branch 不带参数,会列出所有本地的分支;带参数表示创建分支

git branch –d name 删除本地分支(-D表示强制删除)

git branch –r 不带参数,会列出所有远程的分支

git branch --set-upstream-to=origin/<branch本地> 本地和远程分支关联

git push origin –delete <branch> 删除远程分支

git merge release用于合并指定分支到当前分支上

注:Fast-forward表示的合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。在这种模式下,删除分支后,会丢掉分支日志信息。可以使用带参数 --no-ff来禁用”Fast forward”模式。

git merge --no-ff -m “注释”dev

git checkout release 切换release分支

vim test.txt 修改某条内容

git commit test.txt -m “release修改某条内容”

git checkout master 切换master分支

vim test.txt 修改某条同release内容

git commit test.txt -m “master修改某条内容”

git merge release 显示冲突

git status 显示冲突提示

Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中>>>>release 是指release上修改的内容
vim test.txt 修改内容

git add test.txt

git commit -a -m “fix conflict”

当前分支有没有提交但也不合适现在就提交的内容,Git提供了暂储功能stash

git checkout release

vim test.txt 修改test.txt内容

git checkout develop 此时会提示Aborting

git status 查看当前状态

Git stash list 查看所有暂储列表

git stash apply恢复,恢复后stash内容并不删除,你需要使用命令git stash drop来删除;
另一种方式是使用git stash pop,恢复的同时把stash内容也删除了

创建Git Tag并推送远程服务器

git tag -a V1.0.0 –m“注释” //创建TAG

git push origin V1.0.0 //推送到远程服务器

git push origin --tag //提交所有tag至服务器

git tag -d V1.0.0 //删除本地标签

git push origin --delete tag <tagname> //删除远程标签

HEAD,它始终指向当前所处分支的最新的提交点。你所处的分支变化了,或者产生了新的提交点,HEAD就会跟着改变

add相关命令很简单,主要实现将工作区修改的内容提交到暂存区,交由git管理。

git add .添加当前目录的所有文件到暂存区

git add 添加指定目录到暂存区,包括子目录

git add 添加指定文件到暂存区

commit相关命令也很简单,主要实现将暂存区的内容提交到本地仓库,并使得当前分支的HEAD向后移动一个提交点。

git commit -m 提交暂存区到本地仓库,message代表说明信息

git commit --amend -m 使用一次新的commit,替代上一次提交

上传本地仓库分支到远程仓库分支,实现同步。

git push 上传本地指定分支到远程仓库

git push --force强行推送当前分支到远程仓库,即使有冲突

git push --all推送所有分支到远程仓库

关于分支,大概有展示分支,切换分支,创建分支,删除分支这四种操作。

git branch列出所有本地分支

git branch -r列出所有远程分支

git branch -a列出所有本地分支和远程分支

git branch 新建一个分支,但依然停留在当前分支

git checkout -b 新建一个分支,并切换到该分支

git checkout 切换到指定分支,并更新工作区

git branch -d 删除分支

git push origin --delete 删除远程分支

关于分支的操作虽然比较多,但都比较简单好记

merge命令把不同的分支合并起来。在实际开放中,我们可能从master分支中切出一个分支,然后进行开发完成需求,中间经过R3,R4,R5的commit记录,最后开发完成需要合入master中,这便用到了merge。

git merge 合并指定分支到当前分支

注:如果在merge之后,出现conflict,主要是因为两个用户修改了同一文件的同一块区域。需要针对冲突情况,手动解除冲突。

rebase又称为衍合,是合并的另外一种选择。

在开始阶段,我们处于new分支上,执行git rebase dev,那么new分支上新的commit都在dev分支上重演一遍,最后checkout切换回到new分支。这一点与merge是一样的,合并前后所处的分支并没有改变。

git rebase dev,通俗的解释就是new分支想站在dev的肩膀上继续下去。

rebase操作不会生成新的节点,是将两个分支融合成一个线性的提交。

rebase也需要手动解决冲突。

1.如果你想要一个干净的,没有merge commit的线性历史树,那么你应该选择git rebase

2.如果你想保留完整的历史记录,并且想要避免重写commit history的风险,你应该选择使用git merge

reset命令把当前分支指向另一个位置,并且相应的变动工作区和暂存区。

git reset —soft 只改变提交点,暂存区和工作目录的内容都不改变

git reset —mixed 改变提交点,同时改变暂存区的内容

git reset —hard 暂存区、工作区的内容都会被修改到与提交点完全一致的状态

git revert用一个新提交来消除一个历史提交所做的任何修改。

在回滚这一操作上看,效果差不多。git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。

在 Git工作区的根目录创建一个特殊的.gitignore文件。

在.gitignore文件中,添加需要忽略的文件。

git rm -r --cached . //将仓库中的index递归删除

git add . //重新添加仓库索引

git commit -m “update git.ignore” //提交

git branch --set-upstream-to=origin/<branch> <branch> //重现将本地仓库和远程仓库关联

最后,如果此篇博文对你有所帮助,别忘了点个赞哟~

4. 【学了就忘】Git操作 — 14.Git基本操作(一)

要对现有的某个项目开始使用Git管理,只需到此项目所在的根目录,执行 git init 命令即可。

准备一个新的Git本地版本库:

说明:初始化Git仓库后,在当前目录下会出现一个名为 .git 的目录,所有Git需要的数据和资源都存放在这个目录中。

不过目前,仅仅是按照既有的结构框架,初始化好了Git仓库中所有的文件和目录,但我们还没有开始跟踪管理项目中的任何一个文件。

使用 git status 命令进行查看。

进入本地版本库查看工作区、暂存区中文件的状态。

1)创建文件后查看工作区、暂存区中文件的状态

我们在仓库目录中创建一个 readme.txt 文件后,在执行 git status 命令。

说明:

2)将工作区的文件添加到暂存区

执行 git add 命令,将 readme.txt 文件添加到暂存区。

3)再次查看工作区、暂存区状态

执行 git status 命令查看工作区、暂存区状态。

说明:

总结:

只要在 "Changes to be committed" 这行下面显示的文件,就说明是已暂存状态。

如果此时提交,那么该文件此时此刻的版本,将被留存在历史记录中。

在 git add 命令后面可以指明要跟踪的文件或目录路径。

如果是目录的话,就说明要递归跟踪该目录下的所有文件。(其实 git add 命令的潜台词就是把目标文件快照放入暂存区域,同时未曾跟踪过的文件标记为已跟踪。)

4)将文件从暂存区撤回到工作区

执行 git rm --cached 命令,将 readme.txt 文件从暂存区撤回到工作区。

并执行 git status 命令查看工作区、暂存区状态。

可以看到结果, readme.txt 文件又成为了一个未被Git追踪的文件。

5. git网页版怎么查看操作命令

进入网页版之后鼠标点击右键,选择网页检索,在里面可以查到命令记录

6. 几个常用的git命令

1.安装Git

7. git常用操作

如果不用"pick"或者"edit",而是指定"squash",Git 会同时应用那个变更和它之前的变更并将提交说明归并。因此,如果想将这三个提交合并为单一提交, 可以将脚本修改成这样

保存并退出编辑器,Git 会应用全部三次变更然后将送回编辑器来归并三次提交说明。

然后保存,就会拥有包含前三次提交的全部变更的单一提交 。

注:最顶行pick 不能修改为squash

当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。解决这个问题的办法就是 git stash 命令。

“‘储藏”“可以获取工作目录的中间状态——也就是修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。

当追准备切换分支,但是还不想提交你正在进行中的工作;所以储藏这些变更。为了往堆栈推送一个新的储藏,只要运行? git stash :

这时,你可以方便地切换到其他分支工作;你的变更都保存在栈上。要查看现有的储藏,你可以使用? git stash list :

git stash apply :重新应用你刚刚实施的储藏

git stash apply stash@{number} :应用更早的储藏

只需回到需要合并的源分支,运行 git merge 命令指定要合并进来的分支即可;Git 作了合并,但没有提交,它会停下来等你解决冲突。要看看哪些文件在合并时发生冲突,可以用 git status 观察

任何包含未解决冲突的文件都会以未合并(unmerged)的状态列出。Git 会在有冲突的文件里加入标准的冲突解决标记,可以通过它们来手工定位并解决这些冲突。可以看到此文件包含类似下面这样的部分:

可以看到 ======= 隔开的上半部分,是? HEAD (即 master 分支,在运行 merge 命令时所切换到的分支)中的内容,下半部分是在 iss53 分支中的内容。解决冲突的办法无非是二者选其一或者亲自整合到一起。比如可以通过把这段内容替换为下面这样来解决:

在解决了所有文件里的所有冲突后,运行? git add ?将把它们标记为已解决状态(译注:实际上就是来一次快照保存到暂存区域。)

pull时为了防止更改后pull Feiled的出现,先执行commit,stash or revert。

8. git如何查看当前分支是从哪个分支拉的

Git可以使用git reflog --date=local | grep +分支名来查看当前分支是从哪个分支拉下来的。

可以使用git log --graph --decorate --oneline --all来查看当前分支来查看是从哪个分支拉的。

用一个git branch这个比较万能的命令来查看当前分支是从哪个分支拉取的。

(8)git的常用命令有哪些扩展阅读:

Git的功能特性:

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

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

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

在单机上合并分支。

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

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

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

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

Git常用基本命令

gitinit:创建一个版本库。

git add:增加内容跟踪信息。

gitcommit:提交内容到版本库。

gitstatus:看 git 的状态提示。

gitshow-branch:这个命令让我们看到版本库的发展记录。

参考资料来源:网络-Git

9. 【Git】checkout 用法总结

切克闹(checkout)作为git中最为常用的命令之一,对它使用的熟练程度直接决定了你对git理解和掌握的熟练程度,因此我们有理由为这个命令好好的做一下总结。

checkout最常用的用法莫过于对于工作分支的切换了:

该命令会将当前工作分支切换到branchName。另外,可以通过下面的命令在新分支创建的同时切换分支:

该命令相当于下面这两条命令的执行结果:

该命令的完全体为:

该命令的一个应用场景为:当我们刚从git上clone一个项目后,我们可以查看该项目的分支情况

可以看到,克隆完后,只会默认创建一个master本地分支,其他都是远程分支,此时如果我们想切换到newBranch的远程分支该怎么操作呢?方法有很多种,我们简单介绍两种:
方法一:使用git checkout -b

方法二:使用git branch <branchname> [<start-point>]

方法一其实是方法二的简化版

要想更深入的了解checkout,我们需要了解checkout的作用机制。该命令的主要关联目标其实是.git 文件夹下的HEAD文件,我们可以查看工程下面的.git文件夹:

该文件夹下HEAD文件记录了当前HEAD的信息,继续查看HEAD文件:

可以看到当前HEAD文件指向了refs/heads路径下的master文件,该文件记录了master分支最近的一次commit id,说明当前HEAD指向了master分支。如果我们将当前分支切换到newBranch 分支,我们再看HEAD文件:

可以看到HEAD文件内容指向了newBranch分支

用法1:

该命令主要用于检出某一个指定文件。
如果不填写commit id,则默认会从暂存区检出该文件,如果暂存区为空,则该文件会回滚到最近一次的提交状态。
例如:
当暂存区为空,如果我们想要放弃对某一个文件的修改,可以用这个命令进行撤销:

如果填写commit id(既可以是commit hash也可以是分支名称还可以说tag,其本质上都是commit hash),则会从指定commit hash中检出该文件。用于恢复某一个文件到某一个提交状态。

用法2:

该命令是文章开头部分所说的checkout常见用法的扩展,我们可以指定某一个分支或者某一次提交来创建新的分支,并且切换到该分支下,该命令相当于下面两条命令的执行结果:

用法3:

该命令主要加了一个可选参数B,如果已经存在了同名的分支,使用 git checkout -b <new_branch>会提示错误,加入-B可选参数后会强制创建新分支,并且会覆盖原来存在的同名分支。

用法4:

假如你的某个分支上,积累了无数次的提交,你也懒得去打理,打印出的log也让你无力吐槽,那么这个命令将是你的神器,它会基于当前所在分支新建一个赤裸裸的分支,没有任何的提交历史,但是当前分支的内容一一俱全。新建的分支,严格意义上说,还不是一个分支,因为HEAD指向的引用中没有commit值,只有在进行一次提交后,它才算得上真正的分支。

用法5:

这个命令适用于在切换分支的时候,将当前分支修改的内容一起打包带走,同步到切换的分支下。
有两个需要注意的问题。
第一,如果当前分支和切换分支间的内容不同的话,容易造成冲突。
第二,切换到新分支后,当前分支修改过的内容就丢失了。
所以这个命令,慎用

用法6:

这个命令可以用来打补丁。这个命令主要用来比较两个分支间的差异内容,并提供交互式的界面来选择进一步的操作。这个命令不仅可以比较两个分支间的差异,还可以比较单个文件的差异哦!

注:文中如有任何错误,请各位批评指正!

阅读全文

与git的常用命令有哪些相关的资料

热点内容
流星蝴蝶剑解压失败 浏览:292
如何确认方舟编译器 浏览:664
奶粉源箱源码什么意思 浏览:178
台州程序员兼职一般去哪些网站 浏览:388
旧版本怎么下载到新的安卓 浏览:966
flash个人网站源码下载 浏览:723
javasocketbyte 浏览:264
素描基础教程pdf 浏览:541
香港商报pdf版 浏览:427
安卓手机怎么录制吉他弹奏 浏览:382
ie文件夹缓存在哪里 浏览:265
围棋排名算法 浏览:963
zigbee加密算法 浏览:464
柏杨版资治通鉴pdf 浏览:395
事业编程序员下班时间 浏览:10
linux中命令大全 浏览:40
pic单片机学习网站 浏览:165
843除6的算法 浏览:378
arduino编程视频 浏览:746
pdf背景绿色 浏览:613