您的位置:首页 > 其它

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