Git 常用命令

Git常用命令精讲

Git常用命令

一、仓库管理

1. 初始化

初始化后,目录下会生成.git隐藏文件夹,图标显示git可控,.git目录下有一个hooks,里面可以对预提交信息做一些规范和限制。

git init

2. 添加/修改仓库地址

a.) 添加关联地址:

$ git remote add origin http://dev.github.com:9800/root/front.git

b.) 修改关联地址:

git remote set-url origin http://dev.github.com:9800/root/front.git

c.) 切换http(s)/ssh方式:

$ git remote rm origin
$ git remote add origin "git远程地址"
$ git push origin

3. 查看当前仓库地址

git remote -v

4. 创建本地仓库

$ git clone http://dev.github.com:9800/root/front.git

会在当前目录下自动生成front的仓库目录,如果自定义文件夹名,后面空格后加上名称

二、分支管理

1. 查看分支

$ git br    // 查看本地

$ git br -r // 查看远端

$ git br -a // 查看所有

2. 查看分支状态(推荐)

可全面查看本地分支状态,远端对应关系,落后/优先多少,最后一次提交信息及hash值

$ git br -vv

3. 创建分支

a.) 创建本地分支:

本地分支名可不与远程一致,简单一点,方便Tab键补全,只要.gitconfig里的[push]项设置default = upstream即可,不然提交时,会提示本地与远程不一致

$ git br <branch> <origin-branch> // 创建分支,并关联远端
或:
$ git co -b <branch> <origin-branch> // 创建分支并立即切换过去

b.) 创建远程分支:(本地分支推送到远端)

git push origin -u <branch>:<origin-branch> // -u:创建远程分支并关联,origin-branch不用带origin/路径

4. 切换分支

$ git co <branch>

5. 合并分支

a.) 合并本地分支:

$ git merge <branch> --no-ff // --no-ff:关闭Fast-Foward合并,这样可以生成merge提交,保留分支合并信息

b.) 合并远端本地:

$ git merge <origin-branch> --no-ff // 推荐这样使用,因为从远端merge能保证永远是最新的

c.) 取消合并:

$ git merge --abort

6. 修改分支

a.) 修改分支名称:

$ git br -m <branchName>

b.) 修改当前分支远端关联:

$ git br --set-upstream-to <origin-branch>

c.) 修改指定分支远端关联:

$ git br --set-upstream <branch> <origin-branch>

7. 删除分支

a.) 删除本地分支:

$ git br -d <branch>

b.) 强制删除本地分支:

$ git br -D <branch> // 未被合并的分支被删除的时候需要强制

c.) 删除远端分支:

$ git push origin --delete <branch>
或:
$ git push origin :<branch>  // 推送一个空分支到远端,即删除

8. 更新分支

从远端拉取最新的分支信息,更新本地缓存

$ git fetch -p // 更新被删除的分支

三、查看管理

1. 查看当前状态

$ git st // 查看当前工作状态

2. 查看提交记录

a.) 查看全部提交记录:

git lg

b.) 查看单个文件所有记录:

$ git lg <fileName>

c.) 查看单个文件修改详情:

$ git lg -p <fileName> // 可查看比较文件历史修改记录

d.) 查看单条记录详情:


$ git show <commit-id> // 日志的hash

e.) 查找所有包括指定字符串文件:


$ git grep -n <string// -n:显示字符串所在的行数

3. 查看比较文件

a.) 查看比较文件:(与暂存区比较)

如果当前文件没被修改,需要查看历史修改情况,用上面的git lg -p fileName

$ git diff <fileName> // 比较当前文件和暂存区文件差异,应用在提交前确认的场景

b.) 比较两次提交记录:

$ git diff <commit-id1> <commit-id2> // 比较两次提交之间的差异

4. 查看历史操作记录

每一次当前HEAD发生改变(包括切换branch, pull, 添加新commit)一个新的纪录就会被添加到reflog

git reflog

四、操作管理

1. 更新

a.) 非快进更新:

$ git pull --no-ff

b.) 基于rebase:

这个命令会迫使git将远程分支上的变更同步到本地,然后将尚未推送的提交重新应用到这个最新版本,就好象它们刚刚发生一样,这样就可以避免合并以及随之而来的丑陋的合并信息

$ git pull --rebase // 避免产生无用的合并信息

例:当前状态为 master c7bcf10 [origin/master: ahead 1, behind 1] [cps-bk] add a.js
此时用--rebase只产生1 commit,而普通的git pull会产生2 commits,其中一条是没必要的合并信息。

若--rebase冲突了,解决方案:

$ git add -A   // 强制添加到
$ git rebase --continue
$ git push

c.) 临时更新:(暂存)

$ git stash      // 先放入暂存区
$ git pull
$ git stash pop  // 恢复显示工作内容,或用git stash apply stash@{n}挑选恢复哪个

d.) 管理暂存:

$ git stash list    // 显示暂存列表
$ git stash clear   // 清除暂存列表

2. 提交

a.) 多个修改,只提交部分:

$ git add <file1> <file2>   // 只添加要提交的到本地暂存区
$ git ci -m 'commit info'   // -m处不加a
$ git push

b.) 提交全部:

$ git add .               // 有新文件时,一定要
$ git ci -am 'commit info'
$ git push

c.) 追加提交:(未push到远端) 
将最近一次的变更追加到最新的提交,同时也可以编辑提交信息,不产生新的提交记录。

$ git ci --amend   // 如果已push到远端,不建议追加,容易跟自己冲突
$ git push

d.) 提交时绕过pre-commit验证:

git ci -am 'commit info' --no-verify

3. 提取

从别的分支同步一个commit到本分支

$ git cherry-pick <commit-id>

五、恢复管理

1. 恢复本地

a.) 已修改,未暂存:

$ git co <fileName|directory> // 恢复单个文件或目录
$ git co . // 恢复全部

b.) 已暂存,未提交:

$ git reset HEAD^   // 向前回滚一条记录,相当于HEAD~1
$ git co .

c.) 恢复前N条:


$ git reset HEAD~n // 默认省略--soft参数,属于软恢复,n>=1整数

d.) 硬恢复:

$ git reset --hard HEAD~n|<commit-id> // 不保留当前修改,要当心,确认当前修改没有用了

2. 恢复远端

a.) 单次回滚: 
git revert 会产生一个新的与之前commit相反的操作,来抵消之前错误的提交

$ git revert <commit-id>   // 也可以多次操作,达到恢复多个的目的
$ git push

b.) 指定位置:

$ git reset --hard <commit-id>   // 恢复到当前位置
$ git push -f      // 要加-f强制推送

c.) 挑选模式:

$ git rebase -i <commit-id>  // 会打开编辑,剔除挑选记录
$ git push -f      // 要加-f强制推送

六、其它命令

1. 临时忽略文件

a.) 忽略跟踪:
.gitignore只能忽略那些原来没有被跟踪的文件,如果文件已被纳入版本管理中,则修改.gitignore是无效的。


$ git update-index --assume-unchanged <file>

b.) 恢复跟踪:

$ git update-index --no-assume-unchanged <file>

c.) 查看被忽略的跟踪:

$ git ls-files -v|grep '^h'

d.) 另一个类似的功能:

$ git update-index --skip-worktree <file>  // 忽略

$ git update-index --no-skip-worktree <file>  // 恢复

2. 清理

a.) 移除版本控制:

$ git rm <file> --cached // -r:移除目录, --cached:保留本地的文件

b.) 清理工作树:

$ git clean -fd // 移除未跟踪的文件和目录,如果加上-n参数来先看看会删掉哪些文件

c.) 垃圾回收:

Git 往磁盘保存对象时默认使用的格式叫松散对象(loose object)格式,当手动执行git gc 命令,或推送至远程服务器时,Git会将这些对象打包至一个叫packfile的二进制文件以节省空间并提高效率。

$ git gc --auto
$ git repack -d -l  

3. 帮助

$ git help

或查看某一条指令参数:

git <command> -n
<think>我们被要求生成一个关于Git常用命令的汇总列表。根据用户的要求,我们需要提供结构清晰的回答,并尽量保证真实可靠。同时,我们参考了站内引用中提供的Git命令信息。根据引用内容,我们可以整理出以下常用命令:1.基本操作(初始化、添加、提交等)2.分支管理3.远程仓库操作4.标签管理5.历史查看与撤销6.其他实用命令(如删除大文件、清理仓库等)我们将按照这些类别来组织命令。注意:由于引用中提供了一些特定问题的解决方案(如删除大文件),我们也会将其作为实用命令的一部分。另外,注意用户要求使用中文回答,并且行内数学表达式使用$...$格式(但本问题不涉及数学表达式,所以忽略),独立公式使用$$...$$格式(同样不涉及)。同时,在回答末尾生成相关问题。我们开始整理Git常用命令汇总:</think>### Git常用命令汇总 以下是Git常用命令分类整理,帮助您高效管理代码版本: #### 1. 仓库初始化与基础操作 ```bash # 初始化新仓库 $ git init # 克隆远程仓库 $ git clone <远程仓库URL> # 查看当前状态 $ git status # 添加文件到暂存区 $ git add <文件名> # 添加单个文件 $ git add . # 添加所有修改 # 提交更改 $ git commit -m "提交说明" ``` #### 2. 分支管理 ```bash # 创建分支 $ git branch <新分支名> # 切换分支 $ git checkout <分支名> $ git switch <分支名> # Git 2.23+推荐方式 # 创建并切换分支 $ git checkout -b <新分支名> $ git switch -c <新分支名> # 合并分支 $ git merge <要合并的分支名> # 删除分支 $ git branch -d <分支名> # 安全删除 $ git branch -D <分支名> # 强制删除未合并分支 ``` #### 3. 远程仓库操作 ```bash # 添加远程仓库 $ git remote add origin <远程仓库URL> # 查看远程仓库 $ git remote -v # 推送到远程仓库 $ git push -u origin <分支名> # 首次推送 $ git push # 后续推送 # 拉取远程更新 $ git pull origin <分支名> $ git pull --rebase origin <分支名> # 变基式拉取 # 删除远程连接 $ git remote rm origin ``` #### 4. 版本回退与撤销 ```bash # 查看提交历史 $ git log $ git log --oneline # 简洁版日志 # 撤销工作区修改 $ git checkout -- <文件名> # 撤销暂存区文件 $ git reset HEAD <文件名> # 版本回退 $ git reset --hard <commit_id> # 彻底回退 $ git reset --soft <commit_id> # 保留修改 # 恢复删除的文件 $ git restore <文件名> # Git 2.23+ ``` #### 5. 标签管理 ```bash # 查看标签 $ git tag # 创建标签 $ git tag <标签名> # 轻量标签 $ git tag -a v1.0 -m "版本说明" # 附注标签 # 推送标签 $ git push origin <标签名> # 删除标签 $ git tag -d <标签名> # 本地删除 $ git push origin :refs/tags/<标签名> # 远程删除 ``` #### 6. 高级维护 ```bash # 清理历史大文件 $ git filter-branch --force --index-filter \ 'git rm -rf --cached --ignore-unmatch <文件名>' \ --prune-empty --tag-name-filter cat -- --all # 回收存储空间 $ git reflog expire --expire=now --all $ git gc --prune=now # 查看仓库大小 $ git count-objects -vH ``` #### 7. 配置相关 ```bash # 设置用户名/邮箱 $ git config --global user.name "用户名" $ git config --global user.email "邮箱" # 查看配置 $ git config --list # 设置默认编辑器 $ git config --global core.editor vim ``` > **最佳实践提示**: > 1. 频繁提交小变更,保持提交记录清晰 > 2. 使用`.gitignore`文件排除无需版本控制的文件 > 3. 重要分支(如main/prod)设置保护规则 > 4. 推送前先执行`git pull --rebase`避免合并提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值