liutizhong

导航

Git

Git 创建仓库

#1、安装git
yum install  git -y
#2、在github创建Repository(仓库)
#git端配置自己的user.name和user.email,这些都是创建Repository时设置的账户
#配置本地.config文件
git config --global user.name "liutizhong"
git config --global user.email "liutizhong@163.com"
#创建本地仓库
mkdir /home/git_repos
cd  /home/git_repos
mkdir test_repos
git init
touch Readme
git add Readme
git commit -m 'first commit'
git remote add origin git@github:liutizhong/test_repos
git push -u origin master

Git 初始化

#设置修改后代码的高亮显示
git config --global color.ui ture
#设置别名
git config --global alias.co checkout
git config --global alias.ci commit
git cofing --global alias.st status
git config --global alias.br branch
#这些配置文件都配置本地的.gitconfig文件中,可以通过全盘扫描查到

Git 初始化项目

#初始化一个本地版本库
git init
#clone远程版本库
git clone git@github:liutizhong/test_repos
#添加远程版本库
git remote add origin git@github:liutizhong/test_repos

Git 查看

#查看
git help <command> #显示command的帮助信息
git show           #显示最近一次提交
git show <version>  # 显示指定版本的提交
git log             # 查看提交历史,以便确定要回退到哪个版本
git log --pretty=onwline    # 以一行的格式显示提交历史
git log -p <file>   # 查看每次详细修改内容的diff
git log -p -2       # 查看最近两次详细修改内容的diff
git reflog          # 查看命令历史,以便确定要恢复到历史的哪一个版本
git status          # 查看文件状态
git log --oneline   #把每次提交间显示的信息压缩成缩减的hash值和提交信息,在一行显示。
git log --graph     #该选项会在输出界面的左手边用一种基于文本的图形表示法来显示历史。如果你只是浏览一个单独分支的历史,那么这个功能是没有用的
git --all           #显示全部分支的历史

Git 添加修改的文件到index

git add <file>  #将工作文件修改提交到index
git add .       #将所有修改过的工作文件(包括新增)提交至index
git add -u      #直降已tracked文件的修改内容提交至index,不包括新增文件

Git 提交将index中数据提交到本地仓库

git commit <file> #将修改提交至本地库
git commit -a     #将git add(或git rm)和 git commit等操作都合并在一起操作
git commit -am "some notes for files" #待提交备注的提交操作

Git 重置

git checkout  -- file #直接放弃对文件修改,使文件回到未修改前,前提是修改的内容为执行git add 操作,即没有添加到index
git reset --mixed #此为默认方式,不带任何参数的git reset即为这种方式,他将重置head到另一个commit,并且重置index以便和head匹配,working copy不会被更改;即取消了git add 操作,恢复到没有执行git add 之前,但前提是此时还没有执行git commit,该功能才生效
git reset --soft HEAD #实际上是git reset --maxed 后又做了一次git add 即取消了commit的操作
git reset --hard HEAD~1 #类似于快照恢复操作(即彻底回到指定的某个版本,包括修改的源码)。将本地文件空间恢复为指定的版本,同时修改所有的index及本地库,version默认是HEAD。如果出现失误可以通过git  reflog 找回来
git reset --hard origin/master #将本地的状态回退到和远程的一样
git reset <version>  #回退到某个版本
git reset HEAD <FILE> #撤销某个文件的git add 操作

Git 撤销

git revert <version>        # 撤销某次提交,撤销动作本身也创建了一次提交对象,不同于reset方式
git revert HEAD             # 撤销最后一次提交,撤销的历史被记录下来了,回退到上一个版本

Git 推送

git remote add origin git@liutizhong/Algorthm.git   # 添加远程仓库,命名为origin
git push origin master  # 将本地仓库分支master推送至远程仓库(别名origin

Git 删除

git rm <file>           # 将文件从index区和工作区删除
git rm --cached <file>  # 只将文件从index区删除,本地工作区保留
git mv <file1> <file2>  # 在工作区和index区内同时重命名文件,或将文件移至目录下

Git 比较

git diff            # 比较当前工作区和index区的文件(包括内容)差异,通过它可以查看针对文件修改了那些内容
git diff <file>     # 比较某文件file在工作区和index区的差异
git diff <V1> <V2>  # 比较2个提交版本的差异
git diff --cached   # 比较index与本地库的差异

Git 高级应用

分支

#创建分支
git branch <new_branch> # 创建新的分支

# 查看
git branch      # 查看当前分支
git branch -a   # 查看所有分支
git branch -r   # 查看远程分支
git branch -v   # 查看各个分支最后提交时间
git branch -d   # 删除某个分支

#切换分支
git checkout <branch>  #切换到某个分支
git checkout -b <new_branch>    # 创建新的分支,并切换到新分支
git checkout -b <new_branch> <branch>   # 基于branch分支创建新的分支new_branch,并切换到新分支new_branch
git checkout -- readme #将readme文件从head中签出并且把他恢复成未修改时的样子。在使用git checkout时,如果其对应的文件被修改过,那么该修改会被覆盖掉
git checkout <version> -b <new_branch> #把某次历史提交记录checkout出来,创建成一个分支new_branch     
git push origin <branch> #将分支推送到远端仓库,不然该分支就是不为他人所见的

Git 更新与合并

#更新与推送
git pull     # 获取远程仓库所有分支的更新并合并至本地
git pull <remote_name> <branch_name>        # 获取远程指定仓库指定分支的更新并合并至本地
#eg
git pull origin scala 

git fetch origin    # 抓取远程仓库更新,但不合并至本地
    git fetch origin master:tmp # 获取远程仓库origin的master分支,保存为本地的tmp分支
    git diff tmp  #查看tmp分支与当前分支的异同
    git merge tmp #将tmp分支合同到当前分支
    git push origin master #将当前库推送到远程库的master分支下
git push                # push所有分支至远程仓库
git push origin master  # 将本地分支master推送至远程仓库主分支
git push -u origin master   # 将本地分支master推送至远程仓库主分支(若无远程仓库主分支,则创建,用于初始化远程仓库)
git push origin <local_branch>  # 创建远程分支(当local_branch为本地新创建时)
git push origin <local_branch>:<remote_branch>  # 创建远程分支
git push origin :<remote_branch>    # 先删除本地分支(git branch -d <branch>),然后再push删除远程分支

    #合并
    git merge <branch>  # 将branch分支合并到当前分支
    git rebase master <branch>  # 将master分支rebase到分支branch,没有branch时为当前分支
    git rebase --continue   # 在解决冲突后,继续rebase分支

远程仓库操作

git remote -v           # 查看远程服务器地址和仓库名称
git remote show origin  # 查看远程服务器仓库状态
git remote add origin git@github:liutizhong/xxx.git      # 添加远程仓库地址
git remote set-url origin git@github:liutizhong/xxx.git  # 设置远程仓库地址(用于修改远程仓库地址)
git remote rm <repository>  # 删除远程仓库

补丁

git diff > ../sync.patch    # 生成补丁
git apply ../sync.pathc     # 打补丁

Git clean

#出现error: The following untracked working tree files would be overwritten by checkout,执行下面代码,就ok了
git clean -d -fx
git clean -df #是从工作目录中移除没有track的文件, -d表示同时移除目录,-f表示force,因为在git的配置文件中, clean.requireForce=true,如果不加-f,clean将会拒绝执行

Git (squashed commits)压合提交

git checkout master 
git merge --squash scala #把dev分支上的所有提交压合成主分支上的一个提交,即压合提交
git commit -m 'something from scala'

Git (cherry-picking) 挑选合并

git checkout master #切换到某个分支,将其他分支合并到该分支上

git cherry-pick <id> #通过git reflog 获取
#要拣选多个提交,可以给git cherry-pick命令传递-n选项,比如:
git cherry-pick -n <id> 
#这样在拣选了这个改动之后,进行暂存而不立即提交,接着可以进行下一个拣选操作,一旦拣选完需要的各个提交,就可以一并提交。

分支的删除及重命名

git branch -d <branch> #注意不能删除当前所在分支,需要转到别的分支上
git branch -D <branch> #如果要删除的分支没有合并到当前所在分支,则会出现提示,如果确定无须合并而要直接删除 -D 强制删除
git branch -m oldname newname #-m不会覆盖已有分支名称,即如果名为newname的分支已经存在,则会提示已经存在了;如果改成-M就可以覆盖已有分支名称了,即会强制覆盖名为newname的分支,这种操作要谨慎

 

  

  

  

  

  

 

  

  

  

 

  

  

  

  

  

  

  

posted on 2016-01-11 16:34  liutizhong  阅读(199)  评论(0编辑  收藏  举报