Git命令使用笔记
来源:互联网 发布:淘宝开店能够挣钱吗 编辑:程序博客网 时间:2024/06/16 05:35
Git中文件管理三种状态:
已修改(modified)
在工作目录中修改Git文件
已暂存(staged)
对已经修改的文件执行暂存操作,存入暂存区
已提交(committed)
将已暂存的文件执行Git提交操作,存入本地版本库
Git安装
Linux:
sudo apt-get install git
Mac:
安装命令行工具(如已安装Xcode,命令行工具会在首次启动Xcode时提示安装)
homebrew(mac上安装软件常用工具)
macports
Windows:
通过msyspit(http://code.google.com/p/myysgit)
安装后建议使用Git命令行,如果要使用GUI,推荐使用SourceTree工具,有Mac和Windows版本。
第一步创建本地仓库
切换到仓库目录后执行:git init
man git 查看git帮助文档
git add 将已修改的文件放入暂存区
git commit 将暂存区中的文件提交到本地仓库
git commit -am 'message' 将工作区中的修改直接添加到暂存区并提交到本地版本库中
git rm 删除版本库中的文件
git help 查看帮助
git log 查看日志 git log -3 查看最近3条的操作日志
格式化,每一条操作日志为一行
git log --pretty=oneline
git log --pretty=format:"%h-%an,%ar:%s"
git diff 比较工作区与暂存区中的文件差别,暂存区中作为源文件
git diff HEAD 比较工作区与当前分支最新提交的文件差别
git diff --cached 比较暂存区与最新提交文件差别
git pull 从远程版本库拉取到本地版本库
git push 将本地版本库推送到远程版本库
git config --local user.name "name" 设置名称
git config --local user.email "name@xx.com" 设置邮箱
git checkout -- filename 撤销修改,将文件内容恢复到暂存区中最新状态
git reset HEAD filename 将暂存区中的文件恢复成已修改状态
修正上一次提交的注释内容
git commit --amend -m 'it is a right message'
在git仓库根目录下创建.gitignore文件,里面的内容被git忽略,不加入版本管理中
.gitignore
noneed.txt
*.properties
!b.properties
conf/
allconf/**/*.txt
以当前分支基础上创建分支
git branch branchname
切换到分支
git checkout branchname
分支修改名称
git branch -m branchname newbranchname
删除本地分支
git -d branch mydev
删除远程分支方式一:将一个空分支推送到远程dev分支即为身删除,:前面有一个空格
git push origin :dev
删除远程分支方式二
git push origin --delete dev
如果要删除的分支有过文件修改可以使用
git -D branch mydev
创建新的分支并切换到新分支
git checkout -b newbranch
将当前分支(newbranch)推动到远程版本库,并在远程版本库中建立newbranch分支
git push --set-upstream originnewbranch
以远程dev分支为基准,在本地创建dev分支与之关联
git checkout -b dev origin/dev
将另一个分支的文件合并到当前分支
git merge newbranch
查看本地分支的上一次提交注释
git branch -v
查看本地和远程所有分支上一次提交注释
git branch -av
将当前分支上的修改暂时保存
git stash save 'save message'
恢复上一个保存,并从stash列表中删除
git stash pop
恢复某个保存,不从stash列表中删除,不指定stash id的话默认恢复上一个保存
git stash apply [stash id]
查看stash列表
git stash list
删除stash列表中某个记录
git stash drop stash@{0}
查看某个文件的修改历史
git blame filename
比较暂存区和工作区文件内容的区别,暂存区作为源文件 --
git diff test.txt
比较最新提交的和工作区文件的区别,最新提交的作为源文件 --
git diff HEAD test.txt
比较最新提交和暂存区文件的区别,最新提交的作为源文件 --
git diff --cached test.txt
注:HEAD永远指向当前的分支。
注:当分支合并时,如果当前分支的log版本低于要merge的分支时,会直接fast-forward,而不会出现版本冲突问题。
注:当文件被修改后(未提交暂存区),执行git checkout -- file 会将文件的修改丢弃,恢复为上一个版本暂存区的内
容。如果已提交到暂存区,则需要先执行git reset HEAD file先将文件从暂存区中恢复到已修改状态,再丢弃修改,恢
复为上一个版本暂存区的内容。总之,git checkout -- file 修改的是工作区,将工作区的内容恢复成暂存区的版本。
使用git连接github远程仓库
首先创建github仓库,再在本地建立git仓库。
关联本地仓库和github仓库
git remote add origin git@github.com:yinhaonefu/mygit.git
查看远程分支 git remote show origin 如果显示如下信息
$ git remote show origin
The authenticity of host 'github.com (192.30.253.113)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.253.113' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
因为github远程仓库中没有放置本地的公钥,所以访问失败。
使用ssh-keygen生成公钥,默认在当前用户目录中.ssh中。
$ /usr/bin/ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/yinhao/.ssh/id_rsa):回车
Enter passphrase (empty for no passphrase):回车
Enter same passphrase again:回车
Your identification has been saved in /c/Users/yinhao/.ssh/id_rsa.
Your public key has been saved in /c/Users/yinhao/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:wkBh5aTLuttfWhcZR4OV0rCuBeOogPoLyosPd/YDOmQ yinhao@ZB-3PYK442
The key's randomart image is:
+---[RSA 2048]----+
| +oo .=+. |
| o + ooo. |
| o . o o.. |
| . . + o + + |
|. . o + S = |
|. Eo.. . o . |
|+oo.+. + . |
|+=o= ..+ . |
|o+B+..+. |
+----[SHA256]-----+
然后将.ssh目录下的id_rsa.pub中的公钥内容设置到github中。
在github对应的仓库点击Settings-Deploy keys-Add deploy key将公钥保存后再查看远程信息
$ git remote show origin
* remote origin
Fetch URL: git@github.com:yinhaonefu/mygit.git
Push URL: git@github.com:yinhaonefu/mygit.git
HEAD branch: (unknown)
公钥设置成功,然后可以正常推送到github远程代码库中
$ git push -u origin master
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 299 bytes | 0 bytes/s, done.
Total 4 (delta 0), reused 0 (delta 0)
To github.com:yinhaonefu/mygit.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
从已经存在的远程仓库克隆到本地mygitname目录下
git clone git@github.com:yinhaonefu/mygit.git mygitname
查看远程信息
git remote show
查看所有分支,包括本地和远程
git branch -a
从远程拉取代码
git pull = git fetch + git merge
git 别名功能
git config --global alias.br branch 使用br代替branch命令功能
git config --global alias.unstage 'reset HEAD' 也可以给组合命令设置别名
这些映射关系,因为是global作用域,会保存在当前用户home目录下的.gitconfig文件中
$ cat ~/.gitconfig
[alias]
br = branch
unstage = reset HEAD
- git - git 命令使用笔记
- GIT命令使用笔记
- Git命令使用笔记
- Git命令使用笔记
- Git命令使用笔记
- 【Git学习笔记】git log命令使用
- mac自带git命令使用笔记
- Git学习笔记:Git命令
- Git命令学习笔记
- git 命令笔记
- Git命令学习笔记
- git命令tag笔记
- git 命令笔记
- git 提交命令笔记
- git命令笔记
- git命令学习笔记
- Git命令学习笔记
- Git命令笔记
- 飞虎集群hadoop集群断电后启动问题
- Jquey中 Ajax 控件
- FP-growth算法
- 【U205】最大值
- hdu 5833 Zhu and 772002 高斯消元
- Git命令使用笔记
- 按之字形顺序打印二叉树
- POJ3580 SuperMemo (Splay Tree的各种操作)
- Android学习之路------sharepreference
- 分布式锁的三种实现方式
- 设计模式之单例模式
- CentOS+Hadoop+Spark+HBase+ElasticSearch环境
- 把二叉树打印成多行
- 【JZOJ4711】Binary