Git 常用操作

                                                Git 常用操作命令
1.查看状态
    git status — 查看工作区和缓存区的状态如果没有要提交的内容会出现以下:
    on branch master 在master主分支上
    nothing to commit,working directory clean 没有任何要提交的,工作区是干净的

   git status -uno (仅仅查看已经add的文件)--no - Show no untracked files

2. 对比
   git diff — 对比的是工作区和暂存区的差异
   git diff <filename>— 对比的是工作区和暂存区的差异
   git diff --cached(--staged) — 对比的是暂存区和版本区
   git diff master( 这里写分支名字 ) — 对比的是工作区和版本库

3. 恢复还原工作区文件
   git checkout commit_id <file.name> — 恢复指定文件
   git checkout <file.name> — 工作区文件还原到版本区状态

4. 增加工作区更改到版本区
    git add <filename> 增加修改到文件到缓存区
    git add . —— 将所有新增修改添加到暂存区

    git add . —— 将所有新增修改添加到暂存区,包括文件内容修改(modified)以及新文件(new);不包括被删除的文件(仅仅GIT Ver1.0);包括删除文件(Git Ver2.0)。
    git add --ignore-removal —— 修改(modified)以及新文件(new),不包括删除的文件;
    git add -u :它仅监控已经被add的文件(即tracked file),不会提交新文件(untracked file),(git add --update的缩写)但包括删除的文件;
    git add -A :(git add --all的缩写),包括tracked file(修改文件),新文件,删除的文件;
    
5. 删除
     git rm <file.name> — 把暂存区的文件删除( 工作区文件需删除,否则删除失败)
     git rm --cache <file.name> — 把暂存区的文件删除(工作区保留)
     git rm -f <file.name> — 把暂存区的文件和工作区的文件删除
 
6. 缓存区文件提交
    git commit — 提交到版本区
    git commit -m "注释内容" —— 直接添加版本注释
    git commit -a -m "注释" —— 先将工作区内容添加到缓存区,然后提交至版本库(省略add操作)
    git commit --amend — 撤销上次版本,与本次版本合并生成新的版本(误提交后重新对这次提交进行重新操作,合并一次新的提交方案)
git commit -m "change3" --amend


7. 恢复还原缓存区(回到commit前状态,包括已经缓存)
    git reset HEAD <file.name> — 缓存区撤回到工作区
    git reset --hard commit_id — 恢复制定版本
    git reset --hard HEAD^ — 恢复到前面一个版本
    git reset --hard HEAD~<num> — 恢复到前面第num个版本
    git fetch --all 放弃本地更改,强制更新
    git reset --hard origin/master
    git reset --soft head(保留本地更改,add后的文件将不会被清除)
    git reset --hard head(不保留本地更改,add后的文件将被清除)
    git clean -xdf (删除没有add的文件,但是add后的文件不清除)


8. 暂存(在合并之前要保证没有未提交的文件,如果有未提交的文件但现在又不想提交,用stash命令暂存)
         git stash    #将本地修改暂时存储起来,包括未添加到暂存区的修改(unstaged changes)和添加到暂存区的修改(staged changes),但不包括工作目录中新的文件(untracked files)和忽略的文件(ignored files;
                        #-u或者--include-untracked可以stash untracked文件
                       #-a或者--all命令可以stash当前目录下的所有修改,
        git stash save "message" #将本地修改暂时存储起来,并增加记录信息
        git stash list #查看暂存的信息
        git stash pop  #应用最近一次暂存的内容,执行后该stash就不再stash list;
        git stash apply stash@{1} #应用指定版本的暂存内容
        git stash drop stash@{0} #移除存储
        git stash clear  #清空暂存栈
        git stash show stash@{0}#查看指定stash和当前工作环境的diff,后面可以跟着stash名字;-p或--patch可以查看特定stash的全部diff;
        git stash branch #创建一个新的分支,检出你储藏工作时的所处的提交,重新应用到的工作环境,如果成功,将会丢弃储藏!

9. 合并指定的几次提交(回退某个版本或在缓存状态下,合并commit)
        git reset --hard 1d7444 #回退到某个版本
        git cherry-pick 626335 #将某次commit的更改应用到当前版本
        git cherry-pick …

      
        
10. 获取最新节点和更新改动到本地仓库
   git fetch origin(仓库) master(branch)#获取远端仓库分支最新改动到本地仓库

   git fetch origin(仓库)  #获取远端仓库最新改动到本地仓库

git fetch ssh://192.168.8.32:29418/a/b/c refs/changes/65/7265/1 && git checkout FETCH_HEAD
git fetch ssh://192.168.8.32:29418/a/b/c refs/changes/65/7265/1 && git cherry-pick FETCH_HEAD
git fetch ssh://192.168.8.32:29418/a/b/c refs/changes/65/7265/1 && git format-patch -1 --stdout FETCH_HEAD
git pull ssh://192.168.8.32:29418/a/b/c refs/changes/65/7265/1

   git fetch ssh://user@192.168.1.24:29418/a/b/c/d/e/f/g refs/changes/65/7265/1 && git cherry-pick FETCH_HEAD #应用某地提 交到本地
   git merge (合并改动后需要commit)
   git pull origin(仓库) master(branch)(等同于git fetch和git merge)
   git pull origin(仓库) master(branch)--rebase(在最新节点基础上提交,没有该参数则自动merge本地,自动产生节点)
   git fetch origin master;git checkout origin/branch #获取远端最新改动到本地仓库,然后取出最新提交改动的代码
   
11. 推送更新提交节点到远端仓库
      git push origin(仓库) HEAD:refs/for/master(branch) --force(强制提交,可不用)
   
12. Gerrit进行审核合并
      reply-->submit
13. 新建仓库
    git remote add origin <server>
    
14. 克隆仓库   
    git clone /path/to/repository  (本地)
    git clone username@host:/path/to/repository (远端)
15. 基于origin/master分支创建本地branch分支feature_x
    git checkout -b feature_x origin/master
 
16. 删除branch分支
    git branch -d feature_x
17. 切换branch分支
    git checkout master
    git merge feature_x(合并分支feature_x 到 master)
18. 切换branch分支
    git checkout master
    
19. 推送分支到远端仓库(其他人可见)
    git push origin <branch>

    git push origin HEAD:refs/for/master

20. 日志:
    git reflog — 查找操作记录,可回到当前版本
    git log — 查看提交历史(版本较多用回车键查看省略的历史版本,按q键可退出版本查看)
    git log -n 查看3条提交历史
    git config --global alias.ls "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit" (log 格式化,有点像hg)
    git lg(log 格式化,有点像hg)

    git log --graph   ---查看提交节点

21 .版本
    git rev-parse HEAD ----长commit
    git rev-parse --short HEAD  ---短commit

git版本自动生成:
version=$(git rev-parse --short HEAD)
echo "linux version:$version"

   @/bin/echo -e "/*****auto create version file by makefile***************/\n" >git_version.h
   @/bin/echo -e "#ifndef __GIT_VERSION_H_  \n#define __GIT_VERSION_H_\n" >>git_version.h
   @/bin/echo -ne "#define GIT_SDK_VERSION \"$(version)\" \n" >>git_version.h
    @/bin/echo -ne "#endif\n" >>git_version.h
    
git Windows界面:
    Git GUI
    Git Bash
    Git CMD  
git 深入理解与应用参考:http://www.runoob.com/git/git-tutorial.html

git log 格式化

git config --global alias.ls "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit"

#git lg

常见问题:

若git clone出现“no matching key exchange method found”字段,请在以下用户路径生成config文件

解决方法:

1,设置环境变量

exportGIT_SSH_COMMAND=ssh -o KexAlgorithms=+diffie-hellman-group1-sha1  (linux 平台,windows在系统环境变量添加)

2,在.ssh 目录下创建config文件并增加

KexAlgorithms diffie-hellman-group1-sha1

本地建立远端仓库:

建立远程仓库时用git init --bare,建立一个空仓库,本地其他地方用git init 初始化一个仓库或者克隆远端仓库,然后推送到远端的空仓库里面;

创建远端仓库:

mkdir -p remoteRepo/testproject

cd remoteRepo/testproject

git init --bare

克隆仓库:
git clone /home/usenane/work/remoteRepo/testproject testproject

增加用户提交配置(--local):(也可以在/home/usenane 进行全局配置--global)
git config user.name cgf
git config user.email cgf@163com
git config push.default simple

初始化仓库:

git checkout –b master

echo initRepo>init.txt
git add init.txt
git commit -m "initRepo"
git branch
* master
git push origin master

# 更新目标仓库
git pull origin master

#更改添加
git add -u
git add <file&paths>
git commit -am "test for push"
git push origin master

git push origin master
git push origin HEAD:refs/heads/master

#查看远端提交记录:
 git log remotes/origin/master

常见问题:

1,push 后找不到master

本地仓库需要 clone 后 git init 或git reset --hard 才能看到push后的内容.
或者远端创建时没有 --bare参数;需要登录到远程的那个文件夹,使用
    git config --bool core.bare true 进行配置;

2,由于用户权限的问题,远端仓库objects没有权限
错误:
remote: error: insufficient permission for adding an object to repository database ./objects
chown -R git:git git仓库
chmod 777 -R ./objects

3,远端仓库创建默认权限设置为同组用户可读权限,需要将 git 仓库下文件的默认权限设置为同组用户均可读写执行 git init --bare --shared 或者
git init --bare --shared[=(false|true|umask|group|all|world|everybody|0xxx)]
如果仓库已经启用,在远程仓库目录下更改 git 配置的语法:
git config core.sharedRepository [(false|true|umask|group|all|world|everybody|0xxx)]

4,如果是允许其他用户组访问需要设置该仓库下所有新生成的对象文件的默认权限为7777,即拥有者和同组用户拥有读写执行权限,代码如下:
git init --bare --shared=7777
或者初始化仓库时
git config core.sharedRepository 7777
//已启用后配置

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

查看最后一次提交记录的修改文件信息

 git show --raw

查看指定commit id对应修改文件列表

git show --raw commit_id

git show --raw 2f80f1c8bb2cb8e91d22ad38480b681c194f6518

查看所有提交记录的修改文件信息

git log --stat

git log --name-only

查看所有修改相关的commit ID和comment信息

git log --pretty=oneline

查询指定author的修改信息

git log --author=cgf

Git 仓库的继承和迁移:

git clone --mirror xxx

$ git remote add remote2 xxx
$ git push --mirror remote2


 

集成管理平台包括:Gerrit,Jenkins

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值