git常用命令

0. 安装并初始化git server

1. 基本命令

  1. git clone url

  2. git tag

  3. git checkout v1.3.3.5

  4. coding and testing

  5. git diff # Check the changes via the diff command

  6. git add . # Add all (files and directories) to the Git repository
    # Commit the changes, -a will commit changes for modified files
    # but will not add automatically new files
    git add dir_name # 增加一个目录及目录下的所有文件和子目录

  7. git commit -a -m “add code”

  8. git tag v1.5.5.0 -m “add code”

  9. git push --tags # 把所有tags及与tags相关的代码都同步到远端仓库,
    # push所有tag,命令格式为:git push [origin] --tags
    或 git push origin v1.5.5.0 # push单个tag, 命令格式为:git push origin [tagname]

  10. 常用命令
    a) gitk --all
    b) git status
    c) git log
    d) git reset --hard #代码还原

  11. git pull origin master #更新代码

  12. git push -u origin master #上传代码,将本地的master分支推送到origin主机,
    #同时指定origin为默认主机,后面就可以不加任何参数使用git push了。

  13. git push origin master #将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。

  14. git push origin --delete master #删除origin主机的master分支

  15. git push --all origin #将所有本地分支都推送到origin主机

  16. git push origin --tags #git push不会推送标签(tag),除非使用–tags选项

  17. git clone --recurse-submodules https://github.com/tensorflow/tensorflow
    # 使用–recurse-submodules选项来获取TensorFlow需要依赖的protobuf库文件

  18. git checkout - - < file >…" to discard changes in working directory" to discard changes in working directory

  19. git 还原本地仓 与 远程仓 同步

git fetch origin
git reset --hard origin/master
  1. git 还原文件
git status
git reset HEAD diff_file
git checkout diff_file
  1. 恢复本地误删文件的状态到暂存区或仓库区该文件的最新状态
git restore diff_file
  1. Git在本地修改后并删除了一个文件后,从服务端拉取
git reset --hard HEAD # 表示回退到当前版本, HEAD指向当前版本.
                      # 如果你修改了一些代码,想去除,就可以使用 
                      # git reset --hard HEAD一次性去除.
git reset --hard HEAD^ #表示回退到上一个版本.
git checkout commit id #也可以回退到指定的版本(之前的提交还在)

2. git 公钥添加方法

  • 生成~/.ssh/id_rsa 和 ~/.ssh/id_rsa.pub
    $ ssh-keygen -t rsa -C “abc@dd.com”

  • 上传公钥到服务器,(或直接拷贝内容)
    $ scp id_rsa.pub root@10.10.1.5:/volume1/git_repos/
    输入密码即可

  • 把公钥信息追加到/volume1/git_repos/.ssh/authorized_keys
    $ ssh -l root 10.10.1.5 或 ssh root@10.10.1.5 # login git server
    $ cp authorized_keys authorized_keys.bak # backup authorized_keys
    $ cat …/id_rsa.pub >> authorized_keys
    $ cat authorized_keys # check it with e-mail

3. git创建版本库

$ ssh root@10.10.1.5
$ cd /volume1/git_repos/develop
$ mkdir MY.git //创建新仓库文件夹
$ cd MY.git
$ git init --bare //初始化
$ cd …
$ chmod 777 -R xxx.git //修改权限,即可使用

4. 总结

  • 查看远程分支
$ git branch -a
/ e.g.: 
// master
// remotes/origin/v0.9rc1
  • 查看本地分支
$ git branch   // 查看所有分支,其中前面有星号的是当前所在分支,
               // 下方即为master分支。
$ git branch -v // 查看所有分支和该分支上最后的一次提交。
$ git branch --merged // 查看已经合入当前分支的所有分支。
$ git branch --no-merged  //查看未被合入分支。
  • 切换分支
$ git checkout -b v0.9rc1 origin/v0.9rc1
// 已经切换到v0.9rc1分支了
// 切换回master分支
$ git checkout master
  • git push
$ git push <远程主机名> <本地分支名>:<远程分支名>
$ git push origin :master  //删除origin主机的master分支
$ git push origin // 将当前分支推送到origin主机的对应分支
$ git push        // 当前分支只有一个追踪分支,那么主机名都可以省略
$ git push -u origin master //当前分支与多个主机存在追踪关系,
                            //则可以使用-u选项指定一个默认主机
$ git push --all origin // 不管是否存在对应的远程分支,
                        // 将本地的所有分支都推送到远程主机
$ git push --force origin // 如果远程主机的版本比本地版本更新,
                          // 推送时Git会报错,要求先在本地做git pull合并差异,
                          // 然后再推送到远程主机。这时,如果你一定要推送,
                          // 可以使用–force选项。                        
$ git push origin --tags  // git push不会推送标签(tag),除非使用–tags选项。                        

  • git pull
$ git pull <远程主机> <远程分支>:<本地分支>
$ git pull origin master:my_test  // 将origin厂库的master分支拉取并合并
                                  // 到本地的my_test分支上
$ git pull origin master          // 如果省略本地分支,则将自动合并到当前所在分支

  • 创建新的分支并切换到该分支上进行提交
$ git branch <分支名> 
$ git branch bugfix01   // 在当前分支也就是master分支上创建了一个名为
                        // bugfix01的新分支
$ git checkout <分支名> 
$ git checkout bugfix01 //切换到我们新创建的bugfix01的新分支上
$ git commit            //在新的分支上进行代码提交
  • 创建并切换分支
$ git checkout -b <分支名> 
$ git checkout -b bugfix02 //在当前所在分支bugfix01上创建一个新的分支
                           //并且切换到新创建的bugfix02上
$ git commit               //在新的分支 bugfix02 上进行提交了            
  • 分支的合并-merge
$ git checkout master  // 切换到master分支上 
$ git merge bugfix01   // 将 bugfix01 分支的修改合入到master分支上
$ git merge bugfix02   // 将 bugfix02上的修改合入到master分支上
$ git commit           // 在master分支上进行正常提交

  • 分支的删除
$ git branch -d bugfix01  // 分支 bugfix01 进行删除
$ git branch -d bugfix02  // 对分支 bugfix02 进行删除

5. git查看提交修改的文件列表

1.查看最后一次提交记录的修改文件信息
git show --raw

2.查看指定commit id对应修改文件列表
git show --raw commit_id
git show --raw 2f80f1c8bb2cb8e91d22ad38480b681c194f6518

3.查看所有提交记录的修改文件信息
git log --stat
git log --name-only

4.查看所有修改相关的commit ID和comment信息
git log --pretty=oneline

5.查询指定author的修改信息
git log --author=jack.li

6.查看指定author在指定时间修改信息
$ git log --pretty=“%h - %s” --author=‘Junio C Hamano’ --since=“2008-10-01”
–before=“2008-11-01” --no-merges – t/
5610e3b - Fix testcase failure when extended attributes are in use
acd3b9e - Enhance hold_lock_file_for_{update,append}() API

  1. 查看指定commit id修改的文件列表
    $ git show -s --pretty=raw 8d3152407573f41fab06a5177b9aa764d790fd6f

6. GIT 查看/修改用户名和邮箱地址

  • config 配置有system级别 global(用户级别) 和local(当前仓库)三个 设置先从system-》global-》local 底层配置会覆盖顶层配置 分别使用–system/global/local 可以定位到配置文件
  • 查看系统config
git config --system --list
  • 查看当前用户(global)配置
git config --global  --list
  • 查看当前仓库配置信息
git config --local  --list

6.1 用户名和邮箱地址的作用

  • 用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变。
  • 每次commit都会用用户名和邮箱纪录。
  • github的contributions统计就是按邮箱来统计的。

6.2 查看用户名和邮箱地址

$ git config user.name
$ git config user.email

6.3 修改用户名和邮箱地址

$ git config --global user.name "username"
$ git config --global user.email "email"
<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`避免合并提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值