Git使用
2015-10-05 17:29
162 查看
1.初始化版本库和添加并提交文件
git init初始化一个版本库
git add <file>增加文件,可反复多次使用,将文件修改添加到暂存区
git commit提交文件,把暂存区的内容提交到当前分支
添加一个文件到Git库中需要两步:
第一步:git add <file>
第二步:git commit -m "提交说明内容"
git status 查看工作区的状态
git diff如果文件更改了,可以通过git diff来查看修改的内容
2.版本回退
git log显示从最近到最远的提交日志
git log --pretty==oneline 简略的日志,只输出版本号和修改说明
HEAD指向的就是当前版本,HEAD^上一个版本,HEAD~1000往前一千个版本
git reset --hard HEAD^回退到上一个版本
cat filename查看该文件
git reset --hard <版本号> 先通过git log找到相应的版本号,然后再进行回退,用于从新版本回退到老版本
git reflog显示之前的每一次操作命令,用来从老版本恢复到新版本
3.修改提交的注意点
git add 该命令实际上是将文件先添加到暂存区中
git commit才是将暂存区中的文件提交到分支中,
所以如果在修改后没有进行git add 操作就直接git commit会导致没有进行git add的修改无效
所以每次修改操作后都要进行git add 操作 ,然后可以将在这些修改放入暂存区后,一起进行git commit操作。
流程:
工作区--->暂存区--->当前分支
4.撤销修改
(1)假如你该乱了工作区的某个文件,想要直接丢弃这些修改的时候,用命令:git checkout -- <filename>
(2)假如你已经把这个文件通过git add提交到了暂存区中,第一步先使用git reset HEAD <filename>,这样就将文件放回了工作区中
然后再使用(1)中工作区的撤销修改命令:git checkout -- <filename>即可。
5.删除操作
(1)误删想要还原:
rm <filename>删除文件remove,这相当于在本地将文件删除了
撤销删除和上面的撤销修改类似,通过git checkout -- <filename>将版本库中的文件还原到工作区中
不过这些都是对于已经提交到了版本库中的文件而言的
(2)确实要删除版本库中的文件
git rm删除版本库中的文件,然后再git commit,那文件就从版本库中删除了。
6.远程库
(1)关联一个远程库使用git remote add origin git@server-name(服务器名:github.com):path(用户名)/repo-name(版本库名).git
(2)git push -u origin master(默认分支)第一次推送master分支的所有内容 -u所有内容
(3)git push origin master(分支名可替换) 推送最新修改内容,以后每次使用用这条命令即可
7.克隆远程库
git clone git@github.com:用户名/版本库名.git
8.分支管理
git branch 查看分支
git branch <branchname>创建分支
git checkout <branchname>切换分支
git checkout -b <branchname>创建加切换分支
git merge <branchname>合并某分支到当前分支
git branch -d <branchname>删除分支
前面的合并分支一般是在后面的工作中只对分支进行了修改,master没有修改时,这时候可以快速合并。
但是如果我们先对分支做了修改,然后又对master进行了修改,这时候就会发现master超前了,分支的合并就会发生冲突
要解决这个问题,我们必须手动对冲突文件进行修改并提交。
git status 可以显示冲突文件
cat 查看冲突文件时此时Git会用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,将其修改并提交即可解决冲突
git log --graph可以查看分支合并图
git merge --no-ff 和 git merge 的主要区别就在于合并以后,能否在分支合并图中看到历史合并分支,即以前在哪里进行过合并,
而git merge 默认的fast forward是看不到合并历史的,也不知道哪里发生过合并。
当出现bug的时候,为了立刻解决当前bug不得不停下手头工作时,我们可以使用以下方法来解决:
先使用git stash记录下当前的工作状态,把工作现场保存起来,然后转到其他分支对bug进行修改,修改完成后,调用
git stash list 来寻找之前保存的工作现场,然后
(1)git stash apply stash@{0}(stash list 中的值)恢复,但用这种方法已经保存的工作现场不会被删除,需要调用git stash drop来删除
(2)git stash pop恢复的同时删除stash内容
git remote -v查看远程分支
git push origin branchname 从本地推送分支
git pull 抓取远程分支
git checkout -b branchname origin/branchname 在本地创建和远程对应的分支,分支名最好一致
git branch --set--upstream branchname origin/branchname建立本地分支和远程分支的联系
9.标签
切换到想要打标签的分支上,然后
git tag <name>
git tag 查看所有标签
git tag <name> commit_id为这个版本打上标签
git show <tagname>查看这个标签的信息
git tag -d <tagname>删除标签
git push origin <tagname>推送某个标签到远程
git push origin --tags一次性推送所有标签
git push origin :refs/tag/<tagname>删除远程标签
想要忽略某些文件时,需要编写.gitignore;
.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
看来这个教程后的一点记录:Git教程
-------------------------------------------------------------------------------------------------
Update:冲突的地方需要仔细看下,还是比较容易遇到的。
先前试了下,想把一个先在本地创建好的版本库放到远程库里,一不小心就冲突了。远程库里的README.md和.gitignore和本地的冲突了。
先用git branch --set--upstream branchname origin/branchname建立本地分支和远程分支的联系,然后用git pull取回分支更改了两个冲突才正确push了。
个人觉得还是先在远程创建好版本库,然后再克隆到本地比较方便点。
git init初始化一个版本库
git add <file>增加文件,可反复多次使用,将文件修改添加到暂存区
git commit提交文件,把暂存区的内容提交到当前分支
添加一个文件到Git库中需要两步:
第一步:git add <file>
第二步:git commit -m "提交说明内容"
git status 查看工作区的状态
git diff如果文件更改了,可以通过git diff来查看修改的内容
2.版本回退
git log显示从最近到最远的提交日志
git log --pretty==oneline 简略的日志,只输出版本号和修改说明
HEAD指向的就是当前版本,HEAD^上一个版本,HEAD~1000往前一千个版本
git reset --hard HEAD^回退到上一个版本
cat filename查看该文件
git reset --hard <版本号> 先通过git log找到相应的版本号,然后再进行回退,用于从新版本回退到老版本
git reflog显示之前的每一次操作命令,用来从老版本恢复到新版本
3.修改提交的注意点
git add 该命令实际上是将文件先添加到暂存区中
git commit才是将暂存区中的文件提交到分支中,
所以如果在修改后没有进行git add 操作就直接git commit会导致没有进行git add的修改无效
所以每次修改操作后都要进行git add 操作 ,然后可以将在这些修改放入暂存区后,一起进行git commit操作。
流程:
工作区--->暂存区--->当前分支
4.撤销修改
(1)假如你该乱了工作区的某个文件,想要直接丢弃这些修改的时候,用命令:git checkout -- <filename>
(2)假如你已经把这个文件通过git add提交到了暂存区中,第一步先使用git reset HEAD <filename>,这样就将文件放回了工作区中
然后再使用(1)中工作区的撤销修改命令:git checkout -- <filename>即可。
5.删除操作
(1)误删想要还原:
rm <filename>删除文件remove,这相当于在本地将文件删除了
撤销删除和上面的撤销修改类似,通过git checkout -- <filename>将版本库中的文件还原到工作区中
不过这些都是对于已经提交到了版本库中的文件而言的
(2)确实要删除版本库中的文件
git rm删除版本库中的文件,然后再git commit,那文件就从版本库中删除了。
6.远程库
(1)关联一个远程库使用git remote add origin git@server-name(服务器名:github.com):path(用户名)/repo-name(版本库名).git
(2)git push -u origin master(默认分支)第一次推送master分支的所有内容 -u所有内容
(3)git push origin master(分支名可替换) 推送最新修改内容,以后每次使用用这条命令即可
7.克隆远程库
git clone git@github.com:用户名/版本库名.git
8.分支管理
git branch 查看分支
git branch <branchname>创建分支
git checkout <branchname>切换分支
git checkout -b <branchname>创建加切换分支
git merge <branchname>合并某分支到当前分支
git branch -d <branchname>删除分支
前面的合并分支一般是在后面的工作中只对分支进行了修改,master没有修改时,这时候可以快速合并。
但是如果我们先对分支做了修改,然后又对master进行了修改,这时候就会发现master超前了,分支的合并就会发生冲突
要解决这个问题,我们必须手动对冲突文件进行修改并提交。
git status 可以显示冲突文件
cat 查看冲突文件时此时Git会用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,将其修改并提交即可解决冲突
git log --graph可以查看分支合并图
git merge --no-ff 和 git merge 的主要区别就在于合并以后,能否在分支合并图中看到历史合并分支,即以前在哪里进行过合并,
而git merge 默认的fast forward是看不到合并历史的,也不知道哪里发生过合并。
当出现bug的时候,为了立刻解决当前bug不得不停下手头工作时,我们可以使用以下方法来解决:
先使用git stash记录下当前的工作状态,把工作现场保存起来,然后转到其他分支对bug进行修改,修改完成后,调用
git stash list 来寻找之前保存的工作现场,然后
(1)git stash apply stash@{0}(stash list 中的值)恢复,但用这种方法已经保存的工作现场不会被删除,需要调用git stash drop来删除
(2)git stash pop恢复的同时删除stash内容
git remote -v查看远程分支
git push origin branchname 从本地推送分支
git pull 抓取远程分支
git checkout -b branchname origin/branchname 在本地创建和远程对应的分支,分支名最好一致
git branch --set--upstream branchname origin/branchname建立本地分支和远程分支的联系
9.标签
切换到想要打标签的分支上,然后
git tag <name>
git tag 查看所有标签
git tag <name> commit_id为这个版本打上标签
git show <tagname>查看这个标签的信息
git tag -d <tagname>删除标签
git push origin <tagname>推送某个标签到远程
git push origin --tags一次性推送所有标签
git push origin :refs/tag/<tagname>删除远程标签
想要忽略某些文件时,需要编写.gitignore;
.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
看来这个教程后的一点记录:Git教程
-------------------------------------------------------------------------------------------------
Update:冲突的地方需要仔细看下,还是比较容易遇到的。
先前试了下,想把一个先在本地创建好的版本库放到远程库里,一不小心就冲突了。远程库里的README.md和.gitignore和本地的冲突了。
先用git branch --set--upstream branchname origin/branchname建立本地分支和远程分支的联系,然后用git pull取回分支更改了两个冲突才正确push了。
个人觉得还是先在远程创建好版本库,然后再克隆到本地比较方便点。
相关文章推荐
- RPC failed; result=22, HTTP code = 411
- git更新已經刪除的文件
- 提取Git每次提交后Commit的文件
- GIT迁移服务器
- 分布式版本管理git入门指南使用资料汇总及文章推荐
- Git远程操作详解
- 25个 Git 进阶技巧(翻译)
- 详解版本控制利器Git,SVN的异同以及适用范围
- Ruby实现的删除已经合并的git分支脚本分享
- 在 Shell 提示符中显示 Git 分支名称的方法
- Git使用基础篇(一些常用命令和原理)
- git fork同步是什么意思?
- Python的高级Git库 Gittle
- 使用GIT进行源码管理――GUI客户端小结
- 使用git代替FTP部署代码到服务器的例子
- linux系统安装git及git常用命令
- 分享下自己总结的Git常用命令
- Git 常用命令速查表(图文+表格)
- mac git xcrun error active developer path 错误
- git报错