你应该知道的那些 GIT 命令

    技术2025-06-22  11

    文章目录

    一、常用命令1. ADD AND COMMIT2. DIFF AND SHOW3. remote4. reset & log5. Others二、分支管理6. 创建与merge(合并)分支7. 解决冲突8. 分支管理

    本文参考廖雪峰Git教程

    一、常用命令

    1. ADD AND COMMIT

    git init //初始化git

    git add ./filename //提交到版本库放入暂存

    git add * //效果同 git add all

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

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

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

    git add -i //交互式添加文件到暂存区。

    git add -p //暂存文件的一部分。

    git commit -m “备注” //提交到版本库

    git commit -am “本次提交说明” //自动把暂存所有跟踪过的文件一并提交,从而跳过 git add 步骤,参数 -am 也可写成 -a -m。

    git commit --amend //重新提交

    2. DIFF AND SHOW

    git status //查看文件状态

    git status -s 或 git status --short //状态简览

    git diff //查看工作区中的修改。

    git diff --staged 或 git diff --cached //查看暂存区中的修改。

    git diff //比较两次 commit 之间的差异。

    git diff //在两个 branch 之间比较。

    git diff filename //查看指定文件具体修改了哪些内容

    git diff HEAD – filename //命令可以查看工作区和版本库里面最新版本的区别

    git show //查看最后一个 commit 的修改。

    git show HEAD~3 //查看倒数第四个 commit 的修改

    3. remote

    git remote add origin “远程仓库地址” //关联远端仓库

    git remote rm origin //删除远端仓库关联

    git remote -v //查看已关联远端库

    git push -u origin master //提交到远端仓库 第一次以后用:git push origin master

    由于远程库是空的,我们第一次推送master分支时,加上了-u参数, Git不但会把本地的master分支内容推送的远程新的master分支, 还会把本地的master分支和远程的master分支关联起来, 在以后的推送或者拉取时就可以简化命令。

    4. reset & log

    git reset --hard HEAD^ //回退版本 HEAD HEAD^ HEAD^^ HEAD~100

    git reset --hard 版本号(十六进制一大串的前五位)

    git reset HEAD 可以把暂存区的修改撤销掉(unstage),重新放回工作区

    HEAD严格来说不是指向提交,而是指向mastermaster才是指向提交的,所以,HEAD指向的就是当前分支。

    git log //查看记录 (按q退出)

    git reflog//记录每次命令查找id

    git log -pretty=oneline 一大串类似1094adb…的是commit id(版本号)

    git log --oneline

    5. Others

    git rm filename //删除文件cat filename//查看文件内容 VIM 模式中,修改完之后按esc键退出编辑状态,再按大写ZZ就可以保存退出vim编辑器

    二、分支管理

    6. 创建与merge(合并)分支

    git branch //查看分支

    git branch -a 查看远程分支和本地分支

    git branch -v 查看各个分支最后一个提交信息

    git branch --merged 查看哪些分支已经合并入当前分支

    git branch //创建分支

    git checkout //切换分支

    git checkout -b //创建+切换分支

    git merge //合并某分支到当前分支

    git branch -d //删除(本地)分支

    git branch -D 强行本地删除

    git push origin --delete 分支名(remotes/origin/分支名):删除远程分支

    git log --graph命令可以看到分支合并图。

    git删除远程分支

    1 $ git branch -r //查看远程库分支 2 $ git branch -r -d origin/branchname //删除 3 $ git push origin :branchname //推送 :branchName 之间没有空格

    7. 解决冲突

    当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

    8. 分支管理

    $ git merge --no-ff -m “merge with no-ff” dev

    合并时,如果可以,默认会选择 ‘fast forward’ 模式,但会丢失分支信息 –no-ff参数,表示禁用Fast forward

    因本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。

    分支策略

    master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;干活都在dev分支上,dev分支是不稳定的

    2.4 Bug 分支 每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。 Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作: $ git stash Saved working directory and index state WIP on dev: f52c633 add merge 用git stash list命令查看工作现场存在哪 恢复方法: 一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop stash@{0}来删除;stash list就查看不到 另一种方式是用git stash pop,恢复的同时把stash内容也删了 可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:$ git stash apply stash@{0}

    2.5 Feature 分支 开发一个新feature,最好新建一个分支 丢弃一个没有被合并过的分支,可以通过git branch -D 强行本地删除

    2.6 多人协作 要查看远程库的信息,用git remote 用git remote -v显示更详细的信息 推送分支 git push origin master 推送分支,就是把该分支上的所有本地提交推送到远程库 master(主分支)与dev(开发分支)需要推送,bug与feature分支不需要推送 抓取分支 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交; 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致; 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name; 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

    2.7 Rebase 特点:把分叉的提交历史“整理”成一条直线,看上去更直观。 缺点是本地的分叉提交已经被修改过了 –pretty — 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式) –abbrev-commit — 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。 $ git log --graph --pretty=oneline --abbrev-commit //找到历史提交的commit id 效果* 582d922 (HEAD -> master) add author * 8875536 add comment * d1be385 (origin/master) init hello * e5e69f1 Merge branch ‘dev’ |\ | * 57c53ab (origin/dev, dev) fix env conflict | |\ | | * 7a5e5dd add env | * | 7bd91f1 add new env

    Tag Manage 3.1 Creating Tag $ git tag v1.0 //可以打一个名为 v1.0的新标签 $ git tag //查看所有标签 $ git tag v0.9 f52c633 //为 commit id 为 f52c633 的提交版本创建标签v0.9 $ git log --graph --pretty=oneline --abbrev-commit //找到历史提交的commit id $ git show 查看标签信息 $ git tag -a v0.1 -m “version 0.1 released” 1094adb //-a指定标签名,-m指定说明文字

    3.2 Operating Tag 命令git push origin 可以推送一个本地标签;

    命令git push origin --tags可以推送全部未推送过的本地标签;

    命令git tag -d 可以删除一个本地标签;

    命令git push origin :refs/tags/可以删除一个远程标签。

    配置别名 $ git config --global alias.st status //告诉Git,以后st就表示status –global参数是全局参数,对当前用户生效所有Git仓库下都有用。位于用户主目录下的一个隐藏文件.gitconfig 不加–global 与–system,只对当前仓库起作用。位于.git/config文件中 –system ,将会对所有的用户生效 位于./etc/gitconfig 删除:别名就在[alias]后面,要删除别名,直接把对应的行删掉即可 $ cat ~/.gitconfig //查看已经配置的所有别名

    多人协作详解 github 创建 repository → settings → collaborators → 输入要加入的 partner 的用户名 → add collaborator 系统发送邮件至 partner 邮箱,对方接受后即可 同理,可被对方 add collaborator 从对方pull & push branch 在本地新建文件夹(建议与要 pull 的 repository 名一致) 进入文件夹,右键 Git Bash Here 初始化 git init 关联远程库 git remote add origin git@github.com:用户名/库名 查看远程库 git remote -v 拉取master分支 git pull origin master 创建dev分支 git checkout -b dev 修改分支并提交 git add . git commit -m"dedcribe" 推到远程库 git push origin dev

    Processed: 0.018, SQL: 9