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

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

4. 增加工作区更改到版本区
    git add 增加修改到文件到缓存区
    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 — 把暂存区的文件删除( 工作区文件需删除,否则删除失败)
     git rm --cache — 把暂存区的文件删除(工作区保留)
     git rm -f — 把暂存区的文件和工作区的文件删除
 
6. 缓存区文件提交
    git commit — 提交到版本区
    git commit -m "注释内容" —— 直接添加版本注释
    git commit -a -m "注释" —— 先将工作区内容添加到缓存区,然后提交至版本库(省略add操作)
    git commit --amend — 撤销上次版本,与本次版本合并生成新的版本(误提交后重新对这次提交进行重新操作,合并一次新的提交方案)
git commit -m "change3" --amend


7. 恢复还原缓存区(回到commit前状态,包括已经缓存)
    git reset HEAD — 缓存区撤回到工作区
    git reset --hard commit_id — 恢复制定版本
    git reset --hard HEAD^ — 恢复到前面一个版本
    git reset --hard HEAD~ — 恢复到前面第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 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
    
14. 克隆仓库   
    git clone /path/to/repository  (本地)
    git clone username@host:/path/to/repository (远端)
15. 创建branch分支
    git checkout -b feature_x
 
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

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 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

 

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

你可能感兴趣的:(工具)