您的位置:首页 > 其它

记录工作中git的使用

2016-11-16 17:42 225 查看



1. git配置设置提交代码时的用户信息git config [--global]  user.name "[name]"git config [--global]  user.email  "[email address]"
2.git增加与删除添加指定文件到暂存区git add [file1] [file2]
添加指定目录到暂存区,包含子目录git add [dir]
添加当前所有修改的文件到暂存区git add .
添加每个变化前,多要求进行确认,对于同一个文件的多处变化,可以实现分次提交git add -p
删除工作区文件,并且将这次删除放入暂存区git rm [file1] [file2] ...
停止追踪指定文件,但该文件会保留在工作区git rm --cached [file]
改名文件,并且将这个改名放入暂存区git mv [file-original] [file-renamed]
3.代码提交提交暂存区到仓库区git commit -m [message]
提交暂存区的指定文件到仓库区git commit [file1] [file2]  ... -m [message]
提交工作区自上次commit之后的变化,直接到仓库区git commit -a 
提交时显示所有diff信息git commit -v 
使用一次新的commit,替代上一次提交git commit --amend  -m [message]
重做上一次commit,并且包含指定文件的新变化git commit --amend [file1] [file2]
4,git 分支列出所有本地分支git branch 
列出所有的远程分支git branch -r
列出所有的本地和远程分支git branch -a
新建一个分支,但依然停留在当前分支git branch [branch-name]
确认当前处于的分支
git branch -v 

新建一个分支,并切换到该分支git checkout -b [branch]
切换到指定分支,并更新工作区git checkout [branch-name]
切换到上一个分支git checkou -
合并指定分支到当前分支git merge [branch]
删除分支git branch -d [branch-name]git branch -D [branch-name]  强制删除
删除远程分支git push origin --delete [branch-name]git branch -dr [remote/branch]5.查看信息显示有变更的文件git status
显示当前git的提交记录git log
显示commit历史,以及每次commit发生变更的文件git log  --start
搜索提价历史,根据关键字git log -S [keyword]
显示某个文件的版本历史,包含文件改名git log --follow [file]git whatchanged [file]
显示指定文件相关的每一次diff git log -p [file]
显示过去5次提交git log -5 --pretty --online
显示指定文件是什么人在什么时候修改过git blame [file]  (ps:可以支持gitk查看,比较方便)  具体定位到某个文件每一行代码的提交者git blame -L 6 +5 README  查看README文件几行几列

显示暂存区与工作区的差异git diff
显示暂存区与上一个commit的差异git diff --cached [file]
显示工作区与当前最新commit之间的差异git diff HEAD
显示当前分支的最近几次提交git reflog
6.远程同步下载远程仓库的所有变动git fetch [remote]显示所有远程仓库git remote -v
增加一个新的远程仓库,并命名git remote add [shortname] [url]
取回远程仓库的变化,并与本地分支合并git pull [remote] [branch]

7.patch的生成与使用使用Git打patch有两种方式:
一、使用git diff
1、git diff > patch_001.patch
这样利用文件的差异就直接生成了一个patch
2、解patch(在同一目录下)
git apply patch_001.patch

二、使用git format-patch
打补丁步骤:
1、先到目录下git status看下差异的文件
2、把需要打补丁的文件git add
3、git commit -m "名字"   eg:git commit -m "patch"
4、git format-patch -1 838836e4ae26b24c1903c5bf8eb7f56531397553 这个是commit号,这样生成了0001-patch.patch这个补丁包
把补丁包发给别人放到在同一目录下:
1、解补丁包 git apply 补丁包的名字  就可以了
2、如果不行 使用git am 0001-patch.patch

8. 分支切换 恢复暂存区的指定文件到工作区
 git checkout [file]

恢复某个commit的指定文件到暂存区和工作区
 git checkout [commit] [file]

恢复暂存区的所有文件到工作区
 git checkout .git checkout . 或 git checkout -- <file>  会用暂存区全部的文件或指定的文件替换工作区的文件,会清除工作区中未添加到暂存区的改动git checkout HEAD . 或 git checkout HEAD <file>  会用HEAD指向的master分支中的全部或部分文件替换暂缓区和工作区的文件
重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
 git reset [file]

重置暂存区与工作区,与上一次commit保持一致
 git reset --hard

重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
 git reset [commit]

重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
 git reset --hard [commit]

重置当前HEAD为指定commit,但保持暂存区和工作区不变
 git reset --keep [commit]
git reset --mixed id,是将git的HEAD变了(也就是提交记录变了),但文件并没有改变,(也就是working tree并没有改变). 取消了commit和add的内容.
git reset --soft id. 实际上,是git reset –mixed id 后,又做了一次git add.即取消了commit的内容.
git reset --hard id.是将git的HEAD变了,文件也变了.
按改动范围排序如下:
soft (commit) < mixed (commit + add) < hard (commit + add + local working)

新建一个commit,用来撤销指定commit
后者的所有变化都将被前者抵消,并且应用到当前分支
反转提交  通过此命令去除某一次已经的提交 git revert commitid

 git revert [commit]

暂时将未提交的变化移除,稍后再移入
 git stash
 git stash pop

删除本地多余的目录和文件先来测试运行看看哪些文件和目录会被删除,以免造成误删除git clean -nd    查看删除哪些文件git clean -fd     正真开始强制删除多余的目录和文件

git clone /data/xx /data/xx-backup  将版本库 xx 克隆到xx-backupgit clone --bare  /data/xx /data/xx-backup 克隆出的版本不包含工作区

du -sh  查看占用的空间

git fsck  可以查看到版本库中包含的没有被任何引用关联的松散对象    git prune 清除暂存区操作时引入的临时对象git gc  
git rebase -i  进行交互式变基操作后,对版本库进行按需整理
git init xx(路径) 建立一个新的工作目录 会生成一个.git的目录,此目录就是git版本库,.git版本库所在的目录为xx,它被称为工作区

git rebase -i  进行交互式变基操作后,对版本库进行按需整理
git rev-parse --git-dir 显示版本库.git目录所在的位置
git rev-parse --show-toplevel  显示工作区根目录
git rev-parse --show-prefix  相对于工作区根目录的相对目录
git merge acc2f69 执行合并操作,将acc2f69提交合并到当前分支
git stash list 查看保存的进度用命令
git stash pop  从暂存库中恢复进度到本地
git stash       push本地修改到版本暂存库中
git stash apply [--index] [<stash>]  除了不删除恢复的进度之外,其余和git stash pop命令一样
git stash drop [<stash>]  删除一个存储的进度,默认删除最新的进度
git stash clear 删除所有的存储进度
git stash branch  <branchname> <stash>  基于进度创建分析
git reset --mixed HEAD^  取出commit的提交
git cherry-pick 从众多的提交中挑选出一个提交应用在当前的工作分支中。
git clone <repository> <directory>  将<repository>指向的版本库创建一个克隆到<directory>目录。目录<directory>相当于克隆版本库的工作区,版本库位于工作区下.git目录中
git clone --bare <repository> <directory.git> 创建的克隆版本库都不包含工作区,直接就是版本库的内容,这样的版本库称为裸版本库,一般约定的裸版本库的目录以.git为后缀。
git clone --mirror <repository> <directory.git>  克隆出来的裸版本对上游版本库进行了注册,这样可以在裸版本库中使用git fetch命令和上游版本库进行持续同步
git branch  xxx  创建分支xxx
git format-patch -s HEAD~3   将最近3个提交转换为补丁文件  git format-patch -s HEAD commitId
git mergetool  冲突合并工具

git rebase -i  进行交互式变基操作后,对版本库进行按需整理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: