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"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值